8.х Стаж работников для 13 зарплаты.

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем mitit, 19 авг 2008.

  1. TopicStarter Overlay
    mitit
    Offline

    mitit

    Регистрация:
    9 июл 2008
    Сообщения:
    23
    Симпатии:
    0
    Баллы:
    1
    Добрый день! Помогте пожалуйста сфорировать запросик где отбираются все работники предприятия, которые на данный момент числятся с датой приема на работу! Сам подсчет стажа я сделал, а не могу выбрать дату приема на работу. Загвозка в том, что один и тот же человек может быть принят на работу и уволен несколько раз (табельный меняется и в справочнике ФизЛиц он тоже несколько раз). А самое важное то, что работника принимают с одним табельным, а если его переводят в другое подразделение , то меняют табельный и код в ФизЛицах. Заранее спасибо!
    В запросах не силён :(.

    Код:
    Процедура СписокРаботниковДля13Зарплаты(ТабДок) Экспорт
    //{{КОНСТРУКТОР_ВЫХОДНЫХ_ФОРМ(СписокРаботниковДля13Зарплаты)
    // Данный фрагмент построен конструктором.
    // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
    
    Макет = ВнешнийОтчетОбъект.ПолучитьМакет("СписокРаботниковДля13Зарплаты");
    Запрос = Новый Запрос;
    Запрос.Текст = 
    "ВЫБРАТЬ РАЗЛИЧНЫЕ
    |	ФизическиеЛица.Ссылка,
    |	ФизическиеЛица.Представление КАК Представление,
    |	ФизическиеЛица.СтажВЖКХ,
    |	ФизическиеЛица.СтажДоМУП,
    |	РаботникиОрганизаций.Период,
    |	РаботникиОрганизаций.ПричинаИзмененияСостояния.Ссылка,
    |	РаботникиОрганизаций.ТабельныйНомер,
    |	ФизическиеЛица.Код КАК Код,
    |	РаботникиОрганизаций.ОбособленноеПодразделение
    |ИЗ
    |	Справочник.ФизическиеЛица КАК ФизическиеЛица
    |		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизаций
    |		ПО ФизическиеЛица.Ссылка = РаботникиОрганизаций.Физлицо
    |
    |СГРУППИРОВАТЬ ПО
    |	ФизическиеЛица.Ссылка,
    |	ФизическиеЛица.Представление,
    |	ФизическиеЛица.СтажВЖКХ,
    |	ФизическиеЛица.СтажДоМУП,
    |	РаботникиОрганизаций.Период,
    |	РаботникиОрганизаций.ПричинаИзмененияСостояния.Ссылка,
    |	РаботникиОрганизаций.ТабельныйНомер,
    |	ФизическиеЛица.Код,
    |	РаботникиОрганизаций.ОбособленноеПодразделение
    |АВТОУПОРЯДОЧИВАНИЕ";
    
    Результат = Запрос.Выполнить();
    
    ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
    ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
    ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
    ОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ПодвалТаблицы");
    ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали");
    
    Если Дата = '00010101' тогда
    Дата1 = ТекущаяДата();
    иначе
    Дата1 = Дата;
    КонецЕсли;
    ОбластьЗаголовок.Параметры.НаДату = "на " + Формат(Дата1,"ДЛФ=ДД");
    ТабДок.Очистить();
    ТабДок.Вывести(ОбластьЗаголовок);
    ТабДок.Вывести(ОбластьШапкаТаблицы);
    ТабДок.НачатьАвтогруппировкуСтрок();                
    
    Ном = 1;                                          
    ВыборкаДетали = Результат.Выбрать();
    Пока ВыборкаДетали.Следующий() Цикл
    Если (ВыборкаДетали.Ссылка.Родитель.Наименование = "Работающие") или (ВыборкаДетали.Ссылка.Родитель.Наименование = "Работающие пенсионеры") или (ВыборкаДетали.Ссылка.Родитель.Наименование = "Внешние совместители") тогда
    //Если ВыборкаДетали.Ссылка1=Перечисления.СостоянияРаботникаОрганизации.Работает  тогда
    Если (ВыборкаДетали.ПричинаИзмененияСостоянияСсылка <> Перечисления.ПричиныИзмененияСостояния.Увольнение) и (ВыборкаДетали.ПричинаИзмененияСостоянияСсылка <> Перечисления.ПричиныИзмененияСостояния.Перемещение) тогда
    Если ВыборкаДетали.Код = ВыборкаДетали.ТабельныйНомер+"     " тогда
    Если НачалоДня(Дата1) >= НачалоДня(ВыборкаДетали.Период) тогда
    ДатаПМ = ВыборкаДетали.Период;//Дата(2003,12,31);
    СтажДоМУП = ВыборкаДетали.Ссылка.СтажДоМУП;
    РассчитатьСтаж13();
    ОбластьДетальныхЗаписей.Параметры.Ном = Ном;
    Если СтажДля13Зарплаты <> "<< Стаж не задан >>" тогда
    ОбластьДетальныхЗаписей.Параметры.СтажДля13Зп = СтажДля13Зарплаты;
    иначе 
    ОбластьДетальныхЗаписей.Параметры.СтажДля13Зп = "";
    КонецЕсли;
    ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетали);
    ТабДок.Вывести(ОбластьДетальныхЗаписей, ВыборкаДетали.Уровень());
    Ном = ном + 1;
    КонецЕсли;
    КонецЕсли;
    КонецЕсли;
    //КонецЕсли;
    КонецЕсли;
    КонецЦикла;
    
    ТабДок.ЗакончитьАвтогруппировкуСтрок();
    ТабДок.Вывести(ОбластьПодвалТаблицы);
    ТабДок.Вывести(ОбластьПодвал);
    
    //}}КОНСТРУКТОР_ВЫХОДНЫХ_ФОРМ
    КонецПроцедуры
    
    
    
    Этот код не находит работника, у которого меняется табельный при перемещении.

    P.S. Также необходимо расчитать этот стаж при открытии конкретного Физлица (то есть при открытии найти дату приема на работу.)
  2. TopicStarter Overlay
    mitit
    Offline

    mitit

    Регистрация:
    9 июл 2008
    Сообщения:
    23
    Симпатии:
    0
    Баллы:
    1
    Получилось!!! Иногда все таки надо к вам обращатся.
    Начинаешь сам лучше думать:))

Поделиться этой страницей