Вход | Регистрация

1С:Предприятие ::

Метки: 

Как в 1С:КА2 программно сформировать список работающих сотрудников на определенную дату

Я
   nomanacc
 
27.08.18 - 15:49
Много пишут про скрытую на партнерском форуме 1с статью с документацией по общему модулю КадровыйУчет, не настало ли время её достать?

Первая попытка приблизиться к "беcтабличной" технике получения работающих сотрудников выглядела так
[1с]
ДанныеСотрудников = КадровыйУчет.КадровыеДанныеСотрудников(Ложь, СотрудникСсылка, "Подразделение,Должность", НачалоДня(ТекущаяДатаСеанса()) - 1);
[/1с]
и дала таблицу значений с колонками:

Сотрудник    ДатаОкончания    ДатаНачала    ГоловнаяОрганизация    ФизическоеЛицо    ПериодЗаписи    Год    ПериодПредыдущейЗаписи    ВидСобытия    Организация    Должность    ГоловнойСотрудник    ЭтоГоловнойСотрудник    Подразделение    ДолжностьПоШтатномуРасписанию    КоличествоСтавок    ВидДоговора    РегистраторЗаписи    РегистраторСобытия    ПустойИнтервал

Дальше можно использовать отбор 
ВидСобытия    <> Перечисления.ВидыКадровыхСобытий.Увольнение
но хочется избежать "угадайки" в боевых базах, где по-человечески описан рекомендованный Нуралиевым АПИ доступа к кадровым данным?


--
_[0]    СтрокаТаблицыЗначений    СтрокаТаблицыЗначений
ВидДоговора    Трудовой договор    ПеречислениеСсылка.ВидыДоговоровССотрудниками
ВидСобытия    Увольнение    ПеречислениеСсылка.ВидыКадровыхСобытий
Год    01.01.2017 00:00:00    Дата
ГоловнаяОрганизация    ООО    СправочникСсылка.Организации
ГоловнойСотрудник    Иван Иванович Иванов (ув.)    СправочникСсылка.Сотрудники
ДатаНачала    18.08.2017 00:00:05    Дата
ДатаОкончания    31.12.3999 23:59:59    Дата
Должность    Слесарь-ремонтник    СправочникСсылка.Должности
ДолжностьПоШтатномуРасписанию    Слесарь-ремонтник, 4 разряд /Производственный участок/    СправочникСсылка.ШтатноеРасписание
КоличествоСтавок    1    Число
Организация    ООО    СправочникСсылка.Организации
Период    26.08.2018 23:59:59    Дата
ПериодВозвратногоСобытия    01.01.0001 00:00:00    Дата
ПериодЗаписи    18.08.2017 00:00:05    Дата
ПериодПредыдущейЗаписи    18.05.2017 00:00:20    Дата
Подразделение    Производственный участок    СправочникСсылка.ПодразделенияОрганизаций
ПустойИнтервал    Ложь    Булево
Регистратор    Увольнение 7700-000008 от 17.08.2017    ДокументСсылка.Увольнение
РегистраторЗаписи    Увольнение 7700-000008 от 17.08.2017    ДокументСсылка.Увольнение
РегистраторСобытия    Увольнение 7700-000008 от 17.08.2017    ДокументСсылка.Увольнение
Сотрудник    Иван Иванович Иванов (ув.)    СправочникСсылка.Сотрудники
ФизическоеЛицо    Бигалиев Ильдар Мансурович    СправочникСсылка.ФизическиеЛица
ЭтоВозвратноеСобытие    Ложь    Булево
ЭтоГоловнойСотрудник    Истина    Булево
--

 
 
   nomanacc
 
1 - 05.09.18 - 12:40
Просто оставлю текущий вариант заполнения тут, может, кто укажет более оптимальный способ, чем последовательный вызов

КадровыйУчет.СоздатьВТСотрудникиОрганизации()
КадровыйУчет.КадровыеДанныеСотрудников()

В частности, хотелось бы штатный отбор по подразделению освоить

&НаСервере
Процедура мДанныеСотрудников_инит()
    мДата    =    объект.Дата//дата(2018,08,20);

    
    Запрос = Новый Запрос;
    Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
    
    ПараметрыПолученияСотрудников = КадровыйУчет.ПараметрыПолученияСотрудниковОрганизацийПоСпискуФизическихЛиц();
    ПараметрыПолученияСотрудников.НачалоПериода = мДата;
    ПараметрыПолученияСотрудников.ОкончаниеПериода = мДата;
    
    КадровыйУчет.СоздатьВТСотрудникиОрганизации(Запрос.МенеджерВременныхТаблиц, Истина, ПараметрыПолученияСотрудников, "ВТСотрудникиОрганизации");
    
    Запрос.Текст = 
    "ВЫБРАТЬ Сотрудни//,Должность

    |ИЗ
    |    ВТСотрудникиОрганизации КАК СотрудникиОрганизации";//|    где Подразделение=&Подразделение и ВидСобытия<>&ВидСобытия

    
    _=Запрос.Выполнить().Выгрузить();
    
    ДанныеСотрудников = КадровыйУчет.КадровыеДанныеСотрудников(Ложь, _.ВыгрузитьКолонку("Сотрудник"), "Должность", НачалоДня(мдата));//Подразделение        

    
    мДанныеСотрудников.Очистить();
    ВидСобытия = Перечисления.ВидыКадровыхСобытий.Увольнение;
    для каждого вы из ДанныеСотрудников Цик//Пока вы.следующий() Цикл

        если вы.Подразделение = Объект.Подразделение
            и вы.ВидСобытия <> ВидСобытия Тогда
            _=мДанныеСотрудников.Добавить();
            _.Сотрудник=вы.сотрудник;
            _.Должность=вы.должность;
        конецЕсли; 
    КонецЦикла;
    
КонецПроцедуры




Список тем форума
Рекламное место пустует Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует