|
ЗУП 3. Получить историю подразделения за период 🠗 (Фрэнки 11.05.2020 09:58) | ☑ | ||
---|---|---|---|---|
0
егаис
11.05.20
✎
09:33
|
Как сейчас кошерно получать через программный интерфейс кадровую историю за период?
Например, получить историю подразделения сотрудника с 01.03.20 по 30.04.20 До этого иногда юзал костыли типа КадроваяИстория.Очистить(); Запрос = Новый Запрос; Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц; Измерения = Новый ТаблицаЗначений; Измерения.Колонки.Добавить("Сотрудник", Новый ОписаниеТипов("СправочникСсылка.Сотрудники")); Измерения.Колонки.Добавить("ДатаНачала", Новый ОписаниеТипов("Дата")); Измерения.Колонки.Добавить("ДатаОкончания", Новый ОписаниеТипов("Дата")); СтрокаИзмерения = Измерения.Добавить(); СтрокаИзмерения.Сотрудник = СсылкаНаСотрудника; СтрокаИзмерения.ДатаОкончания = КонецГода(ТекущаяДатаСеанса()); ПараметрыПостроения = ЗарплатаКадрыОбщиеНаборыДанных.ПараметрыПостроенияДляСоздатьВТИмяРегистра(); ЗарплатаКадрыОбщиеНаборыДанных.ДобавитьВКоллекциюОтбор( ПараметрыПостроения.Отборы, "ВидСобытия", "<>", Перечисления.ВидыКадровыхСобытий.НеподтвержденныеДанные); ЗарплатаКадрыОбщиеНаборыДанных.СоздатьВТИмяРегистра( "КадроваяИсторияСотрудников", Запрос.МенеджерВременныхТаблиц, Истина, ЗарплатаКадрыОбщиеНаборыДанных.ОписаниеФильтраДляСоздатьВТИмяРегистра(Измерения), ПараметрыПостроения); ЗарплатаКадрыОбщиеНаборыДанных.СоздатьВТИмяРегистра( "ГрафикРаботыСотрудников", Запрос.МенеджерВременныхТаблиц, Истина, ЗарплатаКадрыОбщиеНаборыДанных.ОписаниеФильтраДляСоздатьВТИмяРегистра(Измерения)); Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ | КадроваяИсторияСотрудников.Период КАК Период |ПОМЕСТИТЬ ВТПериоды |ИЗ | ВТКадроваяИсторияСотрудников КАК КадроваяИсторияСотрудников | |ОБЪЕДИНИТЬ | |ВЫБРАТЬ РАЗЛИЧНЫЕ | ГрафикРаботыСотрудников.Период |ИЗ | ВТГрафикРаботыСотрудников КАК ГрафикРаботыСотрудников |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ | Периоды.Период КАК Период, | МАКСИМУМ(ГрафикРаботыСотрудников.Период) КАК ПериодГрафикиРаботы, | МАКСИМУМ(КадроваяИсторияСотрудников.Период) КАК ПериодКадроваяИстория |ПОМЕСТИТЬ ВТПериодыИстории |ИЗ | ВТПериоды КАК Периоды | ЛЕВОЕ СОЕДИНЕНИЕ ВТКадроваяИсторияСотрудников КАК КадроваяИсторияСотрудников | ПО Периоды.Период >= КадроваяИсторияСотрудников.Период | ЛЕВОЕ СОЕДИНЕНИЕ ВТГрафикРаботыСотрудников КАК ГрафикРаботыСотрудников | ПО Периоды.Период >= ГрафикРаботыСотрудников.Период | |СГРУППИРОВАТЬ ПО | Периоды.Период |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ПериодыИстории.Период КАК Период, | КадроваяИсторияСотрудников.Организация КАК Организация, | КадроваяИсторияСотрудников.Подразделение КАК Подразделение, | КадроваяИсторияСотрудников.Должность КАК Должность, | КадроваяИсторияСотрудников.ДолжностьПоШтатномуРасписанию КАК ДолжностьПоШтатномуРасписанию, | КадроваяИсторияСотрудников.КоличествоСтавок КАК КоличествоСтавок, | КадроваяИсторияСотрудников.ВидСобытия КАК ВидСобытия, | ГрафикРаботыСотрудников.ГрафикРаботы КАК ГрафикРаботы, | ВЫБОР | КОГДА ПериодыИстории.Период = ГрафикРаботыСотрудников.Период | ТОГДА ГрафикРаботыСотрудников.Регистратор | ИНАЧЕ НЕОПРЕДЕЛЕНО | КОНЕЦ КАК РегистраторГрафикРаботы, | ВЫБОР | КОГДА ПериодыИстории.Период = КадроваяИсторияСотрудников.Период | ТОГДА КадроваяИсторияСотрудников.Регистратор | ИНАЧЕ НЕОПРЕДЕЛЕНО | КОНЕЦ КАК РегистраторКадроваяИстория |ПОМЕСТИТЬ ВТИстория |ИЗ | ВТПериодыИстории КАК ПериодыИстории | ЛЕВОЕ СОЕДИНЕНИЕ ВТКадроваяИсторияСотрудников КАК КадроваяИсторияСотрудников | ПО ПериодыИстории.ПериодКадроваяИстория = КадроваяИсторияСотрудников.Период | ЛЕВОЕ СОЕДИНЕНИЕ ВТГрафикРаботыСотрудников КАК ГрафикРаботыСотрудников | ПО ПериодыИстории.ПериодГрафикиРаботы = ГрафикРаботыСотрудников.Период |ГДЕ | НЕ ПериодыИстории.ПериодКадроваяИстория ЕСТЬ NULL |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | История.Период КАК Период, | История.Организация КАК Организация, | ВЫБОР | КОГДА История.Организация = ИсторияПредыдущие.Организация | ТОГДА ЛОЖЬ | ИНАЧЕ ИСТИНА | КОНЕЦ КАК ОрганизацияИзменена, | История.Подразделение КАК Подразделение, | ВЫБОР | КОГДА История.Подразделение = ИсторияПредыдущие.Подразделение | ТОГДА ЛОЖЬ | ИНАЧЕ ИСТИНА | КОНЕЦ КАК ПодразделениеИзменено, | История.Должность КАК Должность, | ВЫБОР | КОГДА История.Должность = ИсторияПредыдущие.Должность | ТОГДА ЛОЖЬ | ИНАЧЕ ИСТИНА | КОНЕЦ КАК ДолжностьИзменена, | История.ДолжностьПоШтатномуРасписанию КАК ДолжностьПоШтатномуРасписанию, | ВЫБОР | КОГДА История.ДолжностьПоШтатномуРасписанию = ИсторияПредыдущие.ДолжностьПоШтатномуРасписанию | ТОГДА ЛОЖЬ | ИНАЧЕ ИСТИНА | КОНЕЦ КАК ДолжностьПоШтатномуРасписаниюИзменена, | История.КоличествоСтавок КАК КоличествоСтавок, | ВЫБОР | КОГДА История.КоличествоСтавок = ИсторияПредыдущие.КоличествоСтавок | ТОГДА ЛОЖЬ | ИНАЧЕ ИСТИНА | КОНЕЦ КАК КоличествоСтавокИзменено, | История.ВидСобытия КАК ВидСобытия, | История.ГрафикРаботы КАК ГрафикРаботы, | ВЫБОР | КОГДА История.ГрафикРаботы = ИсторияПредыдущие.ГрафикРаботы | ТОГДА ЛОЖЬ | ИНАЧЕ ИСТИНА | КОНЕЦ КАК ГрафикРаботыИзменен, | История.РегистраторГрафикРаботы КАК РегистраторГрафикРаботы, | История.РегистраторКадроваяИстория КАК РегистраторКадроваяИстория |ИЗ | ВТИстория КАК История | ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | История.Период КАК Период, | МАКСИМУМ(ИсторияПредыдущая.Период) КАК ПериодПредыдущий | ИЗ | ВТИстория КАК История | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТИстория КАК ИсторияПредыдущая | ПО История.Период > ИсторияПредыдущая.Период | | СГРУППИРОВАТЬ ПО | История.Период) КАК ПредыдущиеПериоды | ЛЕВОЕ СОЕДИНЕНИЕ ВТИстория КАК ИсторияПредыдущие | ПО ПредыдущиеПериоды.ПериодПредыдущий = ИсторияПредыдущие.Период | ПО История.Период = ПредыдущиеПериоды.Период | |УПОРЯДОЧИТЬ ПО | Период"; КадроваяИстория.Загрузить(Запрос.Выполнить().Выгрузить()); Для Каждого СтрокаКадроваяИстория Из КадроваяИстория Цикл Если ЗначениеЗаполнено(СтрокаКадроваяИстория.РегистраторКадроваяИстория) Тогда СтрокаКадроваяИстория.Основания.Добавить(СтрокаКадроваяИстория.РегистраторКадроваяИстория); КонецЕсли; Если ЗначениеЗаполнено(СтрокаКадроваяИстория.РегистраторГрафикРаботы) И СтрокаКадроваяИстория.РегистраторГрафикРаботы <> СтрокаКадроваяИстория.РегистраторКадроваяИстория Тогда СтрокаКадроваяИстория.Основания.Добавить(СтрокаКадроваяИстория.РегистраторГрафикРаботы); КонецЕсли; СтрокаКадроваяИстория.КоличествоСтавокПредставление = КадровыйУчетРасширенныйКлиентСервер.ПредставлениеКоличестваСтавок(СтрокаКадроваяИстория.КоличествоСтавок); КонецЦикла; КонецПроцедуры |
|||
1
егаис
11.05.20
✎
09:35
|
закрываем тему
штатно в форме ФормаИсторииИзмененияМестаРаботы этот код и юзается. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |