Добрый день, пишу запрос для табеля в ЗУП (3.1.24.212), но результат не тот что нужно. Должны выводиться для каждого сотрудника в табеле по заданному периоду подразделения в которых они находились на данный день. Сейчас некоторые даты заполняются NULL и ни как не могу это исправить, подскажите пожалуйста как можно исправить данную проблему
Если есть предложения по оптимизации запроса, буду рад выслушать.
Если есть предложения по оптимизации запроса, буду рад выслушать.
ВЫБРАТЬ
0 КАК Цифра
ПОМЕСТИТЬ Цифры
ОБЪЕДИНИТЬ
ВЫБРАТЬ
1
ОБЪЕДИНИТЬ
ВЫБРАТЬ
2
ОБЪЕДИНИТЬ
ВЫБРАТЬ
3
ОБЪЕДИНИТЬ
ВЫБРАТЬ
4
ОБЪЕДИНИТЬ
ВЫБРАТЬ
5
ОБЪЕДИНИТЬ
ВЫБРАТЬ
6
ОБЪЕДИНИТЬ
ВЫБРАТЬ
7
ОБЪЕДИНИТЬ
ВЫБРАТЬ
8
ОБЪЕДИНИТЬ
ВЫБРАТЬ
9
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
Тысячи.Цифра * 1000 + Сотни.Цифра * 100 + Десятки.Цифра * 10 + Единицы.Цифра КАК Дней
ПОМЕСТИТЬ СписокДней
ИЗ
Цифры КАК Тысячи,
Цифры КАК Сотни,
Цифры КАК Десятки,
Цифры КАК Единицы
ГДЕ
Тысячи.Цифра * 1000 + Сотни.Цифра * 100 + Десятки.Цифра * 10 + Единицы.Цифра <= РАЗНОСТЬДАТ(&НачалоПериода, &КонецПериода, ДЕНЬ)
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ДОБАВИТЬКДАТЕ(&НачалоПериода, ДЕНЬ, СписокДней.Дней) КАК Период
ПОМЕСТИТЬ Даты
ИЗ
СписокДней КАК СписокДней
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
ТабельУчетаРабочегоВремениДанныеОВремени.Сотрудник КАК Сотрудник,
КадроваяИсторияСотрудниковИнтервальный.ДатаОкончания КАК ДатаОкончания,
КадроваяИсторияСотрудниковИнтервальный.ДатаНачала КАК ДатаНачала,
КадроваяИсторияСотрудниковИнтервальный.Подразделение КАК Подразделение,
ТабельУчетаРабочегоВремениДанныеОВремени.Ссылка.Подразделение КАК ПодразделениеТабеля,
КадроваяИсторияСотрудниковИнтервальный.ВидСобытия КАК ВидСобытия
ПОМЕСТИТЬ ВТ_Прием
ИЗ
Документ.ТабельУчетаРабочегоВремени.ДанныеОВремени КАК ТабельУчетаРабочегоВремениДанныеОВремени
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КадроваяИсторияСотрудниковИнтервальный КАК КадроваяИсторияСотрудниковИнтервальный
ПО ТабельУчетаРабочегоВремениДанныеОВремени.Сотрудник = КадроваяИсторияСотрудниковИнтервальный.Сотрудник
И ТабельУчетаРабочегоВремениДанныеОВремени.Ссылка.Подразделение = КадроваяИсторияСотрудниковИнтервальный.Подразделение
И (КадроваяИсторияСотрудниковИнтервальный.ДатаНачала МЕЖДУ ТабельУчетаРабочегоВремениДанныеОВремени.Ссылка.ДатаНачалаПериода И ТабельУчетаРабочегоВремениДанныеОВремени.Ссылка.ДатаОкончанияПериода)
ГДЕ
ТабельУчетаРабочегоВремениДанныеОВремени.Ссылка = &Ссылка
И КадроваяИсторияСотрудниковИнтервальный.ВидСобытия = ЗНАЧЕНИЕ(Перечисление.ВидыКадровыхСобытий.Прием)
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ТабельУчетаРабочегоВремениДанныеОВремени.Сотрудник КАК Сотрудник,
КадроваяИсторияСотрудниковИнтервальный.Подразделение КАК Подразделение,
КадроваяИсторияСотрудниковИнтервальный.ДатаНачала КАК ДатаНачала,
КадроваяИсторияСотрудниковИнтервальный.ДатаОкончания КАК ДатаОкончания,
ТабельУчетаРабочегоВремениДанныеОВремени.Ссылка.Подразделение КАК ПодразделениеТабеля,
КадроваяИсторияСотрудниковИнтервальный.ВидСобытия КАК ВидСобытия
ПОМЕСТИТЬ Вт_Перевод
ИЗ
Документ.ТабельУчетаРабочегоВремени.ДанныеОВремени КАК ТабельУчетаРабочегоВремениДанныеОВремени
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КадроваяИсторияСотрудниковИнтервальный КАК КадроваяИсторияСотрудниковИнтервальный
ПО ТабельУчетаРабочегоВремениДанныеОВремени.Сотрудник = КадроваяИсторияСотрудниковИнтервальный.Сотрудник
И (КадроваяИсторияСотрудниковИнтервальный.ДатаНачала МЕЖДУ ТабельУчетаРабочегоВремениДанныеОВремени.Ссылка.ДатаНачалаПериода И ТабельУчетаРабочегоВремениДанныеОВремени.Ссылка.ДатаОкончанияПериода
ИЛИ КадроваяИсторияСотрудниковИнтервальный.ДатаОкончания МЕЖДУ ТабельУчетаРабочегоВремениДанныеОВремени.Ссылка.ДатаНачалаПериода И ТабельУчетаРабочегоВремениДанныеОВремени.Ссылка.ДатаОкончанияПериода)
ГДЕ
ТабельУчетаРабочегоВремениДанныеОВремени.Ссылка = &Ссылка
И КадроваяИсторияСотрудниковИнтервальный.ВидСобытия = ЗНАЧЕНИЕ(Перечисление.ВидыКадровыхСобытий.Перемещение)
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
КадроваяИсторияСотрудниковИнтервальный.ДатаОкончания КАК ДатаОкончания,
КадроваяИсторияСотрудниковИнтервальный.ДатаНачала КАК ДатаНачала,
КадроваяИсторияСотрудниковИнтервальный.Подразделение КАК Подразделение,
ВложенныйЗапрос.Сотрудник КАК Сотрудник,
ВложенныйЗапрос.ПодразделениеТабеля КАК ПодразделениеТабеля,
КадроваяИсторияСотрудниковИнтервальный.ВидСобытия КАК ВидСобытия
ПОМЕСТИТЬ ВТ_НачальныеДанные
ИЗ
(ВЫБРАТЬ
ВТ_Прием.Сотрудник КАК Сотрудник,
ВТ_Прием.ПодразделениеТабеля КАК ПодразделениеТабеля
ИЗ
ВТ_Прием КАК ВТ_Прием
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
Вт_Перевод.Сотрудник,
Вт_Перевод.ПодразделениеТабеля
ИЗ
Вт_Перевод КАК Вт_Перевод) КАК ВложенныйЗапрос
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КадроваяИсторияСотрудниковИнтервальный КАК КадроваяИсторияСотрудниковИнтервальный
ПО ВложенныйЗапрос.Сотрудник = КадроваяИсторияСотрудниковИнтервальный.Сотрудник
ГДЕ
КадроваяИсторияСотрудниковИнтервальный.ВидСобытия = ЗНАЧЕНИЕ(Перечисление.ВидыКадровыхСобытий.НачальныеДанные)
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
Даты.Период КАК Период,
Вт_Перевод.Сотрудник КАК Сотрудник,
ВЫБОР
КОГДА НАЧАЛОПЕРИОДА(Вт_Перевод.ДатаНачала, ДЕНЬ) <= Даты.Период
И Даты.Период < НАЧАЛОПЕРИОДА(Вт_Перевод.ДатаОкончания, ДЕНЬ)
ТОГДА Вт_Перевод.Подразделение
КОНЕЦ КАК Подразделение,
Вт_Перевод.ПодразделениеТабеля КАК ПодразделениеТабеля,
Вт_Перевод.ВидСобытия КАК ВидСобытия
ПОМЕСТИТЬ Итог
ИЗ
Даты КАК Даты,
Вт_Перевод КАК Вт_Перевод
ГДЕ
НЕ Вт_Перевод.Подразделение ЕСТЬ NULL
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
Даты.Период,
ВТ_Прием.Сотрудник,
ВЫБОР
КОГДА НАЧАЛОПЕРИОДА(ВТ_Прием.ДатаНачала, ДЕНЬ) <= Даты.Период
И Даты.Период < НАЧАЛОПЕРИОДА(ВТ_Прием.ДатаОкончания, ДЕНЬ)
ТОГДА ВТ_Прием.Подразделение
КОНЕЦ,
ВТ_Прием.ПодразделениеТабеля,
ВТ_Прием.ВидСобытия
ИЗ
Даты КАК Даты,
ВТ_Прием КАК ВТ_Прием
ГДЕ
НЕ ВТ_Прием.Подразделение ЕСТЬ NULL
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
Даты.Период,
ВТ_НачальныеДанные.Сотрудник,
ВЫБОР
КОГДА НАЧАЛОПЕРИОДА(ВТ_НачальныеДанные.ДатаНачала, ДЕНЬ) <= Даты.Период
И Даты.Период < НАЧАЛОПЕРИОДА(ВТ_НачальныеДанные.ДатаОкончания, ДЕНЬ)
ТОГДА ВТ_НачальныеДанные.Подразделение
КОНЕЦ,
ВТ_НачальныеДанные.ПодразделениеТабеля,
ВТ_НачальныеДанные.ВидСобытия
ИЗ
Даты КАК Даты,
ВТ_НачальныеДанные КАК ВТ_НачальныеДанные
ГДЕ
НЕ ВТ_НачальныеДанные.Подразделение ЕСТЬ NULL
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
Итог.Период КАК Период,
Итог.Сотрудник КАК Сотрудник,
Итог.Подразделение КАК ПодразделениеСотрудника,
ВЫБОР
КОГДА Итог.Подразделение.Родитель = ЗНАЧЕНИЕ(Справочник.ПодразделенияОрганизаций.ПустаяСсылка)
ТОГДА Итог.Подразделение
ИНАЧЕ Итог.Подразделение.Родитель
КОНЕЦ КАК ГлПодразделениеСотрудника,
Итог.ПодразделениеТабеля КАК ПодразделениеТабеля,
ВЫБОР
КОГДА Итог.ПодразделениеТабеля.Родитель = ЗНАЧЕНИЕ(Справочник.ПодразделенияОрганизаций.ПустаяСсылка)
ТОГДА Итог.ПодразделениеТабеля
ИНАЧЕ Итог.ПодразделениеТабеля.Родитель
КОНЕЦ КАК ГлПодразделениеТабеля,
Итог.ВидСобытия КАК ВидСобытия
ИЗ
Итог КАК Итог
ГДЕ
НЕ Итог.Подразделение ЕСТЬ NULL
УПОРЯДОЧИТЬ ПО
Сотрудник
ПоказатьПрикрепленные файлы:
![](/upload/forum/upload/326/32614f098dfd0f73030bc9309e90f95f.png)
По теме из базы знаний
- Пример решения расчетной задачи с табелем (для 1С:Специалист)
- Одна из причин медленной работы табеля (ЗУП 2.5, клиент-сервер, MS SQL Server)
- Кто круче: "ИЛИ" или "ОБЪЕДИНИТЬ ВСЕ" в запросе?
- Небольшой кейс оптимизации. Ускоряем печать табеля УПП
- Доработка табеля (Т-13) с итогами по всем видам рабочего времени - добавление возможности отбора по территориям
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Суть в том, чтобы объединить в одну таблицу прием на работу, перевод в другое подразделение и начальные данные (из регистра кадровая история сотрудников). У меня получаются эти данные, но не объединяются, там где должны быть данные из последней таблицы там NULL, как избавится от NULL чтобы туда попали нужные данные?
(2) Не совсем понял, что вам надо, но попробуйте такой запрос.
Он вытягивает полные кадровые данные каждого сотрудника на каждый день.
А там уже отберите, что надо.
Примечание. Будет параметр "ОкончаниеИнтервалаПредставленияПериоды", ему задайте тип "Дата" и значение "31.12.3999"
Запрос скомбинирован с применением так называемых "представлений".
А здесь запрос с применением "представлений", из которого получился выше выложенный
Он вытягивает полные кадровые данные каждого сотрудника на каждый день.
А там уже отберите, что надо.
Примечание. Будет параметр "ОкончаниеИнтервалаПредставленияПериоды", ему задайте тип "Дата" и значение "31.12.3999"
Запрос скомбинирован с применением так называемых "представлений".
ВЫБРАТЬ
ТабельУчетаРабочегоВремениДанныеОВремени.Сотрудник КАК Сотрудник
ПОМЕСТИТЬ ВТСотрудники
ИЗ
Документ.ТабельУчетаРабочегоВремени.ДанныеОВремени КАК ТабельУчетаРабочегоВремениДанныеОВремени
ГДЕ
ТабельУчетаРабочегоВремениДанныеОВремени.Ссылка = &Ссылка
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
0 КАК Цифра
ПОМЕСТИТЬ ВТЦифры
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
1
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
2
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
3
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
4
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
5
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
6
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
7
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
8
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
9
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
НАЧАЛОПЕРИОДА(ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(ВЫБОР
КОГДА &НачалоПериода = ДАТАВРЕМЯ(1, 1, 1)
ТОГДА ДАТАВРЕМЯ(1980, 1, 1)
ИНАЧЕ &НачалоПериода
КОНЕЦ, ДЕНЬ), ДЕНЬ, Цифры.Цифра + ЕСТЬNULL(Цифры10.Цифра, 0) * 10 + ЕСТЬNULL(Цифры100.Цифра, 0) * 100 + ЕСТЬNULL(Цифры1000.Цифра, 0) * 1000 + ЕСТЬNULL(Цифры10000.Цифра, 0) * 10000 + ЕСТЬNULL(Цифры100000.Цифра, 0) * 100000), ДЕНЬ) КАК Период
ПОМЕСТИТЬ ПредставленияПериоды
ИЗ
ВТЦифры КАК Цифры
ЛЕВОЕ СОЕДИНЕНИЕ ВТЦифры КАК Цифры10
ПО (РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(ВЫБОР
КОГДА &НачалоПериода = ДАТАВРЕМЯ(1, 1, 1)
ТОГДА ДАТАВРЕМЯ(1980, 1, 1)
ИНАЧЕ &НачалоПериода
КОНЕЦ, ДЕНЬ), НАЧАЛОПЕРИОДА(ВЫБОР
КОГДА &ОкончаниеПериода = КОНЕЦПЕРИОДА(ДАТАВРЕМЯ(1, 1, 1), ДЕНЬ)
ТОГДА &ОкончаниеИнтервалаПредставленияПериоды
ИНАЧЕ &ОкончаниеПериода
КОНЕЦ, ДЕНЬ), ДЕНЬ) > 9)
ЛЕВОЕ СОЕДИНЕНИЕ ВТЦифры КАК Цифры100
ПО (РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(ВЫБОР
КОГДА &НачалоПериода = ДАТАВРЕМЯ(1, 1, 1)
ТОГДА ДАТАВРЕМЯ(1980, 1, 1)
ИНАЧЕ &НачалоПериода
КОНЕЦ, ДЕНЬ), НАЧАЛОПЕРИОДА(ВЫБОР
КОГДА &ОкончаниеПериода = КОНЕЦПЕРИОДА(ДАТАВРЕМЯ(1, 1, 1), ДЕНЬ)
ТОГДА &ОкончаниеИнтервалаПредставленияПериоды
ИНАЧЕ &ОкончаниеПериода
КОНЕЦ, ДЕНЬ), ДЕНЬ) > 99)
ЛЕВОЕ СОЕДИНЕНИЕ ВТЦифры КАК Цифры1000
ПО (РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(ВЫБОР
КОГДА &НачалоПериода = ДАТАВРЕМЯ(1, 1, 1)
ТОГДА ДАТАВРЕМЯ(1980, 1, 1)
ИНАЧЕ &НачалоПериода
КОНЕЦ, ДЕНЬ), НАЧАЛОПЕРИОДА(ВЫБОР
КОГДА &ОкончаниеПериода = КОНЕЦПЕРИОДА(ДАТАВРЕМЯ(1, 1, 1), ДЕНЬ)
ТОГДА &ОкончаниеИнтервалаПредставленияПериоды
ИНАЧЕ &ОкончаниеПериода
КОНЕЦ, ДЕНЬ), ДЕНЬ) > 999)
ЛЕВОЕ СОЕДИНЕНИЕ ВТЦифры КАК Цифры10000
ПО (РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(ВЫБОР
КОГДА &НачалоПериода = ДАТАВРЕМЯ(1, 1, 1)
ТОГДА ДАТАВРЕМЯ(1980, 1, 1)
ИНАЧЕ &НачалоПериода
КОНЕЦ, ДЕНЬ), НАЧАЛОПЕРИОДА(ВЫБОР
КОГДА &ОкончаниеПериода = КОНЕЦПЕРИОДА(ДАТАВРЕМЯ(1, 1, 1), ДЕНЬ)
ТОГДА &ОкончаниеИнтервалаПредставленияПериоды
ИНАЧЕ &ОкончаниеПериода
КОНЕЦ, ДЕНЬ), ДЕНЬ) > 9999)
ЛЕВОЕ СОЕДИНЕНИЕ ВТЦифры КАК Цифры100000
ПО (РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(ВЫБОР
КОГДА &НачалоПериода = ДАТАВРЕМЯ(1, 1, 1)
ТОГДА ДАТАВРЕМЯ(1980, 1, 1)
ИНАЧЕ &НачалоПериода
КОНЕЦ, ДЕНЬ), НАЧАЛОПЕРИОДА(ВЫБОР
КОГДА &ОкончаниеПериода = КОНЕЦПЕРИОДА(ДАТАВРЕМЯ(1, 1, 1), ДЕНЬ)
ТОГДА &ОкончаниеИнтервалаПредставленияПериоды
ИНАЧЕ &ОкончаниеПериода
КОНЕЦ, ДЕНЬ), ДЕНЬ) > 99999)
ГДЕ
НАЧАЛОПЕРИОДА(ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(ВЫБОР
КОГДА &НачалоПериода = ДАТАВРЕМЯ(1, 1, 1)
ТОГДА ДАТАВРЕМЯ(1980, 1, 1)
ИНАЧЕ &НачалоПериода
КОНЕЦ, ДЕНЬ), ДЕНЬ, Цифры.Цифра + ЕСТЬNULL(Цифры10.Цифра, 0) * 10 + ЕСТЬNULL(Цифры100.Цифра, 0) * 100 + ЕСТЬNULL(Цифры1000.Цифра, 0) * 1000 + ЕСТЬNULL(Цифры10000.Цифра, 0) * 10000 + ЕСТЬNULL(Цифры100000.Цифра, 0) * 100000), ДЕНЬ) МЕЖДУ ВЫБОР
КОГДА &НачалоПериода = ДАТАВРЕМЯ(1, 1, 1)
ТОГДА ДАТАВРЕМЯ(1980, 1, 1)
ИНАЧЕ &НачалоПериода
КОНЕЦ И ВЫБОР
КОГДА &ОкончаниеПериода = КОНЕЦПЕРИОДА(ДАТАВРЕМЯ(1, 1, 1), ДЕНЬ)
ТОГДА &ОкончаниеИнтервалаПредставленияПериоды
ИНАЧЕ &ОкончаниеПериода
КОНЕЦ
;
//////////////////////////////////////////////////////////// ////////////////////
УНИЧТОЖИТЬ ВТЦифры
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ВТСотрудники.Сотрудник КАК Сотрудник,
ПредставленияПериоды.Период КАК Период
ПОМЕСТИТЬ ВТОтборДляСрезаПоследних
ИЗ
ВТСотрудники КАК ВТСотрудники
ЛЕВОЕ СОЕДИНЕНИЕ ПредставленияПериоды КАК ПредставленияПериоды
ПО (ИСТИНА)
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ВЫБОР
КОГДА РегистрСведений.ПериодЗаписи = РегистрСведений.ДатаНачала
ТОГДА ЛОЖЬ
ИНАЧЕ ИСТИНА
КОНЕЦ КАК ЭтоВозвратноеСобытие,
РегистрСведений.ДатаОкончания КАК ДатаОкончания,
РегистрСведений.ДатаНачала КАК ДатаНачала,
РегистрСведений.Год КАК Год,
РегистрСведений.ПериодПредыдущейЗаписи КАК ПериодПредыдущейЗаписи,
РегистрСведений.Сотрудник КАК Сотрудник,
РегистрСведений.ГоловнаяОрганизация КАК ГоловнаяОрганизация,
РегистрСведений.ФизическоеЛицо КАК ФизическоеЛицо,
ИзмеренияДаты.Период КАК Период,
РегистрСведений.ДействуетДо КАК ПериодВозвратногоСобытия,
РегистрСведений.РегистраторСобытия КАК Регистратор,
РегистрСведений.РегистраторСобытия КАК РегистраторСобытия,
РегистрСведений.РегистраторЗаписи КАК РегистраторЗаписи,
РегистрСведений.ПериодЗаписи КАК ПериодЗаписи,
РегистрСведений.ПустойИнтервал КАК ПустойИнтервал,
РегистрСведений.Организация КАК Организация,
РегистрСведений.Подразделение КАК Подразделение,
РегистрСведений.Должность КАК Должность,
РегистрСведений.ДолжностьПоШтатномуРасписанию КАК ДолжностьПоШтатномуРасписанию,
РегистрСведений.ВидСобытия КАК ВидСобытия,
РегистрСведений.ГоловнойСотрудник КАК ГоловнойСотрудник,
РегистрСведений.ВидДоговора КАК ВидДоговора,
РегистрСведений.ЭтоГоловнойСотрудник КАК ЭтоГоловнойСотрудник,
РегистрСведений.КоличествоСтавок КАК КоличествоСтавок
ПОМЕСТИТЬ ПредставленияСрезПоследних_КадроваяИсторияСотрудников
{ВЫБРАТЬ
Сотрудник,
ГоловнаяОрганизация,
ФизическоеЛицо,
Период,
ПериодВозвратногоСобытия,
Регистратор,
РегистраторСобытия,
РегистраторЗаписи,
ПериодЗаписи,
ПустойИнтервал,
Организация,
Подразделение,
Должность,
ДолжностьПоШтатномуРасписанию,
ВидСобытия,
ГоловнойСотрудник,
ВидДоговора,
ЭтоГоловнойСотрудник,
КоличествоСтавок}
ИЗ
ВТОтборДляСрезаПоследних КАК ИзмеренияДаты
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.КадроваяИсторияСотрудниковИнтервальный КАК РегистрСведений
ПО (РегистрСведений.ДатаНачала <= ВЫБОР
КОГДА ИзмеренияДаты.Период = ДАТАВРЕМЯ(1, 1, 1)
ТОГДА ДАТАВРЕМЯ(3999, 12, 31, 23, 59, 59)
ИНАЧЕ КОНЕЦПЕРИОДА(ИзмеренияДаты.Период, ДЕНЬ)
КОНЕЦ)
И (РегистрСведений.ДатаОкончания >= ВЫБОР
КОГДА ИзмеренияДаты.Период = ДАТАВРЕМЯ(1, 1, 1)
ТОГДА ДАТАВРЕМЯ(3999, 12, 31, 23, 59, 59)
ИНАЧЕ КОНЕЦПЕРИОДА(ИзмеренияДаты.Период, ДЕНЬ)
КОНЕЦ)
И (РегистрСведений.Сотрудник = ИзмеренияДаты.Сотрудник)
ИНДЕКСИРОВАТЬ ПО
Сотрудник
ПоказатьА здесь запрос с применением "представлений", из которого получился выше выложенный
ВЫБРАТЬ
ТабельУчетаРабочегоВремениДанныеОВремени.Сотрудник КАК Сотрудник
ПОМЕСТИТЬ ВТСотрудники
ИЗ
Документ.ТабельУчетаРабочегоВремени.ДанныеОВремени КАК ТабельУчетаРабочегоВремениДанныеОВремени
ГДЕ
ТабельУчетаРабочегоВремениДанныеОВремени.Ссылка = &Ссылка
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ДАТАВРЕМЯ(1, 1, 1) КАК Период
ПОМЕСТИТЬ Представления_Периоды
ГДЕ
"НачалоИнтервала" = &НачалоПериода
И "ОкончаниеИнтервала" = &ОкончаниеПериода
И "Периодичность" = "День"
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ВТСотрудники.Сотрудник КАК Сотрудник,
ПредставленияПериоды.Период КАК Период
ПОМЕСТИТЬ ВТОтборДляСрезаПоследних
ИЗ
ВТСотрудники КАК ВТСотрудники
ЛЕВОЕ СОЕДИНЕНИЕ ПредставленияПериоды КАК ПредставленияПериоды
ПО (ИСТИНА)
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ДАТАВРЕМЯ(1, 1, 1) КАК Период,
ДАТАВРЕМЯ(1, 1, 1) КАК ПериодЗаписи,
ДАТАВРЕМЯ(1, 1, 1) КАК ПериодВозвратногоСобытия,
ЛОЖЬ КАК ЭтоВозвратноеСобытие,
ЗНАЧЕНИЕ(Справочник.Сотрудники.ПустаяСсылка) КАК Сотрудник,
ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка) КАК ГоловнаяОрганизация,
ЗНАЧЕНИЕ(Справочник.ФизическиеЛица.ПустаяСсылка) КАК ФизическоеЛицо,
ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка) КАК Организация,
ЗНАЧЕНИЕ(Справочник.ПодразделенияОрганизаций.ПустаяСсылка) КАК Подразделение,
ЗНАЧЕНИЕ(Справочник.Должности.ПустаяСсылка) КАК Должность,
ЗНАЧЕНИЕ(Справочник.ШтатноеРасписание.ПустаяСсылка) КАК ДолжностьПоШтатномуРасписанию,
ЗНАЧЕНИЕ(Перечисление.ВидыКадровыхСобытий.ПустаяСсылка) КАК ВидСобытия,
ЗНАЧЕНИЕ(Справочник.Сотрудники.ПустаяСсылка) КАК ГоловнойСотрудник,
ЗНАЧЕНИЕ(Перечисление.ВидыДоговоровССотрудниками.ПустаяСсылка) КАК ВидДоговора,
ИСТИНА КАК ЭтоГоловнойСотрудник,
0 КАК КоличествоСтавок
ПОМЕСТИТЬ Представления_СрезПоследних_КадроваяИсторияСотрудников
ИЗ
ВТОтборДляСрезаПоследних КАК ОтборДляСрезаПоследних
ГДЕ
"ПараметрыПостроения_ФормироватьСПериодичностьДень" = истина
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот