Программное заполнение таблицы начислений в документах значениями показателей

Мегазапрос для получения готовой таблицы для заполнения табличной части на форме документа, с разбивкой по отличающимся периодам
Запрос, формирующий таблицу со значениями показателей по сотруднику, разбивающий строки по периодам со всеми различными комбинациями значений показателей трёх видов в этих периодах, а также разбивающий по кадровым перемещениям по подразделению. Предназначен для программного заполнения табличной части "Начисления" в документах "Разовое начисление", "Доход в натуральной форме", "Премия", "Материальная помощь", в случае, когда введен хотя бы один показатель. На других документах не проверялось. Возможно подойдёт и для других сценариев заполнения документов, если модифицировать условия отбора.
Свойства:
- Запрос сам определяет показатели начисления (ПВР задается параметром), обрабатывает до 3 штук показателей включительно, определяет их порядок в таблице "Начисления" документа. Можно самостоятельно увеличить до 4 и более показателей при необходимости.
- Ищет значения разовых показателей, постоянных и периодических, заданных на сотрудника на каждую дату в заданном параметрами периоде. Можете по аналогии с сотрудниками самостоятельно дополнить также запросами для получения значений показателей подразделений и организаций к соответствующим регистрам.
- Для оценки приемлемости такого подхода решения задачи на вашем сервере умножьте количество сотрудников на количество дней в периоде - получите количество строк во временных таблицах. Если у вас сотрудников 50 тыс., то возможно этот запрос причинит боль )
- Если сотрудник уволен, но показатель ещё действует, то значение обнуляется. Если же хотите платить и уволенным, то можно отключить, закомментировав по паре строк в трёх местах для 3-х значений в финальном запросе.
- Временные таблицы можете попытаться индексировать. Опытным путём на постгресе на количестве сотрудников 1000+ в моём окружении достигалось только замедление.
- Запрос необходимо прогнать через механизм представлений (только для получения таблицы периодов)
////////////////////////////////////////////////////////////////////////////////
// 1. Показатели и их свойства
ВЫБРАТЬ
НачисленияПоказатели.НомерСтроки КАК НомерСтроки,
НачисленияПоказатели.Показатель КАК Показатель,
Показатели.СпособПримененияЗначений КАК СпособПримененияЗначений
ПОМЕСТИТЬ ВтПоказателиНачисления
ИЗ
ПланВидовРасчета.Начисления.Показатели КАК НачисленияПоказатели
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ПоказателиРасчетаЗарплаты КАК Показатели
ПО НачисленияПоказатели.Показатель = Показатели.Ссылка
И НЕ Показатели.ЗначениеРассчитываетсяАвтоматически
И Показатели.НазначениеПоказателя = ЗНАЧЕНИЕ(Перечисление.НазначенияПоказателейРасчетаЗарплаты.ДляСотрудника)
ГДЕ
НачисленияПоказатели.Ссылка = &Начисление
;
////////////////////////////////////////////////////////////////////////////////
// 2. Таблица периодов через представление
ВЫБРАТЬ
ДАТАВРЕМЯ(1, 1, 1) КАК Период
ПОМЕСТИТЬ Представления_Периоды
ГДЕ
"НачалоИнтервала" = &ДатаНачала
И "ОкончаниеИнтервала" = &ДатаОкончания
И "Периодичность" = "ДЕНЬ"
И "ИспользоватьКонецПериода" = ЛОЖЬ
;
////////////////////////////////////////////////////////////////////////////////
// 3. Таблица периоды + актуальные на периоды сотрудники, для получения данных
ВЫБРАТЬ РАЗРЕШЕННЫЕ
ВтПериоды.Период КАК Период,
МАКСИМУМ(КадроваяИсторияСотрудников.Период) КАК АктуальныйПериод,
КадроваяИсторияСотрудников.Сотрудник КАК Сотрудник
ПОМЕСТИТЬ ВтПериодыСотрудники
ИЗ
Представления_Периоды КАК ВтПериоды
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КадроваяИсторияСотрудников КАК КадроваяИсторияСотрудников
ПО НАЧАЛОПЕРИОДА(КадроваяИсторияСотрудников.Период, ДЕНЬ) <= ВтПериоды.Период
И КадроваяИсторияСотрудников.Организация = &Организация
И КадроваяИсторияСотрудников.Активность
И КадроваяИсторияСотрудников.Подразделение В ИЕРАРХИИ (&Подразделение)
И КадроваяИсторияСотрудников.ВидСобытия НЕ В (ЗНАЧЕНИЕ(Перечисление.ВидыКадровыхСобытий.ИзменениеОплатыТруда),
ЗНАЧЕНИЕ(Перечисление.ВидыКадровыхСобытий.НеподтвержденныеДанные))
СГРУППИРОВАТЬ ПО
ВтПериоды.Период,
КадроваяИсторияСотрудников.Сотрудник
;
////////////////////////////////////////////////////////////////////////////////
// 4. Таблица значений разовых показателей
ВЫБРАТЬ РАЗРЕШЕННЫЕ
Показатели.НомерСтроки КАК НомерСтроки,
ЗначенияРазовыхПоказателей.ПериодДействия КАК ПериодДействия,
ЗначенияРазовыхПоказателей.Показатель КАК Показатель,
ЗначенияРазовыхПоказателей.Сотрудник КАК Сотрудник,
ЗначенияРазовыхПоказателей.Значение КАК Значение
ПОМЕСТИТЬ ВтЗначенияРазовыхПоказателей
ИЗ
РегистрСведений.ЗначенияРазовыхПоказателейРасчетаЗарплатыСотрудников КАК ЗначенияРазовыхПоказателей
ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтПоказателиНачисления КАК Показатели
ПО ЗначенияРазовыхПоказателей.Показатель = Показатели.Показатель
И
Показатели.СпособПримененияЗначений = ЗНАЧЕНИЕ(Перечисление.СпособыПримененияЗначенийПоказателейРасчетаЗарплаты.Разовое)
И ЗначенияРазовыхПоказателей.Организация = &Организация
И ЗначенияРазовыхПоказателей.Активность
ГДЕ
ЗначенияРазовыхПоказателей.ПериодДействия В
(ВЫБРАТЬ РАЗЛИЧНЫЕ
НАЧАЛОПЕРИОДА(Представления_Периоды.Период, МЕСЯЦ)
ИЗ
Представления_Периоды КАК Представления_Периоды)
;
////////////////////////////////////////////////////////////////////////////////
// 5. Таблица значений оперативных показателей. Тут сложнее, т.к. данные вводятся на 1 день.
// Используется классический прием для склеивания идущих подряд дат, и группировке с суммированием значения показателя.
ВЫБРАТЬ РАЗРЕШЕННЫЕ
Показатели.НомерСтроки КАК НомерСтроки,
ЗначенияОперативныхПоказателей.Период КАК Период,
ЗначенияОперативныхПоказателей.Показатель КАК Показатель,
ЗначенияОперативныхПоказателей.Сотрудник КАК Сотрудник,
ЗначенияОперативныхПоказателей.Значение КАК Значение
ПОМЕСТИТЬ ВтЗначенияОперативныхПоказателей
ИЗ
РегистрНакопления.ЗначенияОперативныхПоказателейРасчетаЗарплатыСотрудников КАК ЗначенияОперативныхПоказателей
ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтПоказателиНачисления КАК Показатели
ПО ЗначенияОперативныхПоказателей.Показатель = Показатели.Показатель
И
Показатели.СпособПримененияЗначений = ЗНАЧЕНИЕ(Перечисление.СпособыПримененияЗначенийПоказателейРасчетаЗарплаты.Разовое)
И ЗначенияОперативныхПоказателей.Организация = &Организация
И ЗначенияОперативныхПоказателей.Активность
И НЕ ЗначенияОперативныхПоказателей.Сторно
ГДЕ
ЗначенияОперативныхПоказателей.Период В
(ВЫБРАТЬ
Представления_Периоды.Период
ИЗ
Представления_Периоды КАК Представления_Периоды)
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
Т1.НомерСтроки КАК НомерСтроки,
Т1.Период КАК Период,
Т1.Показатель КАК Показатель,
Т1.Сотрудник КАК Сотрудник,
Т1.Значение КАК Значение,
КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Т2.Период) КАК НомерСтрокиДоп
ПОМЕСТИТЬ ВтСНомерамиСтрок
ИЗ
ВтЗначенияОперативныхПоказателей КАК Т1
ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтЗначенияОперативныхПоказателей КАК Т2
ПО Т1.Сотрудник = Т2.Сотрудник
И Т1.Показатель = Т2.Показатель
И Т1.НомерСтроки = Т2.НомерСтроки
И Т1.Период >= Т2.Период
СГРУППИРОВАТЬ ПО
Т1.НомерСтроки,
Т1.Период,
Т1.Показатель,
Т1.Сотрудник,
Т1.Значение
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
Т.НомерСтроки КАК НомерСтроки,
Т.Период КАК Период,
Т.Показатель КАК Показатель,
Т.Сотрудник КАК Сотрудник,
Т.Значение КАК Значение,
ДОБАВИТЬКДАТЕ(Т.Период, ДЕНЬ, -Т.НомерСтрокиДоп) КАК ИдентификаторГруппы
ПОМЕСТИТЬ ВтСГруппами
ИЗ
ВтСНомерамиСтрок КАК Т
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
Т.НомерСтроки КАК НомерСтроки,
Т.Показатель КАК Показатель,
Т.Сотрудник КАК Сотрудник,
Т.ИдентификаторГруппы КАК ИдентификаторГруппы,
МИНИМУМ(Т.Период) КАК НачальныйПериодПодряд,
СУММА(Т.Значение) КАК СуммаПодряд
ПОМЕСТИТЬ ВтИтогиГрупп
ИЗ
ВтСГруппами КАК Т
СГРУППИРОВАТЬ ПО
Т.НомерСтроки,
Т.Показатель,
Т.Сотрудник,
Т.ИдентификаторГруппы
;
////////////////////////////////////////////////////////////////////////////////
// Тут финальная склейка и группировка значений оперативных показателей
ВЫБРАТЬ
ИсходныеДанные.НомерСтроки КАК НомерСтроки,
ИсходныеДанные.Период КАК Период,
ИсходныеДанные.Показатель КАК Показатель,
ИсходныеДанные.Сотрудник КАК Сотрудник,
ИсходныеДанные.Значение КАК Значение,
Итоги.НачальныйПериодПодряд КАК НачалоПериодаПодряд,
Итоги.СуммаПодряд КАК СуммаПодряд
ПОМЕСТИТЬ ВтЗначенияОперативныхПоказателейСгруппированные
ИЗ
ВтСГруппами КАК ИсходныеДанные
ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтИтогиГрупп КАК Итоги
ПО ИсходныеДанные.Сотрудник = Итоги.Сотрудник
И ИсходныеДанные.Показатель = Итоги.Показатель
И ИсходныеДанные.НомерСтроки = Итоги.НомерСтроки
И ИсходныеДанные.ИдентификаторГруппы = Итоги.ИдентификаторГруппы
;
////////////////////////////////////////////////////////////////////////////////
// 5. Таблица значений периодических показателей. Делается в 2 приема.
ВЫБРАТЬ РАЗРЕШЕННЫЕ
НАЧАЛОПЕРИОДА(ЗначенияПериодическихПоказателей.ДатаНачала, ДЕНЬ) КАК ДатаНачала,
НАЧАЛОПЕРИОДА(ЗначенияПериодическихПоказателей.ДатаОкончания, ДЕНЬ) КАК ДатаОкончания,
ЗначенияПериодическихПоказателей.ДействуетДо КАК ДействуетДо,
ЗначенияПериодическихПоказателей.Сотрудник КАК Сотрудник,
Показатели.НомерСтроки КАК НомерСтроки,
Показатели.Показатель КАК Показатель,
ЗначенияПериодическихПоказателей.Значение КАК Значение
ПОМЕСТИТЬ ВтЗначенияПериодическихПоказателейВсе
ИЗ
РегистрСведений.ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудниковИнтервальный КАК
ЗначенияПериодическихПоказателей
ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтПоказателиНачисления КАК Показатели
ПО ЗначенияПериодическихПоказателей.Показатель = Показатели.Показатель
И ЗначенияПериодическихПоказателей.Организация = &Организация
И НАЧАЛОПЕРИОДА(ЗначенияПериодическихПоказателей.ДатаНачала, ДЕНЬ) <= &ДатаОкончания
И НАЧАЛОПЕРИОДА(ЗначенияПериодическихПоказателей.ДатаОкончания, ДЕНЬ) >= &ДатаНачала
И
Показатели.СпособПримененияЗначений = ЗНАЧЕНИЕ(Перечисление.СпособыПримененияЗначенийПоказателейРасчетаЗарплаты.Постоянное)
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ВтПериодыСотрудники.Период КАК Период,
ВтПериодыСотрудники.Сотрудник КАК Сотрудник,
ВтЗначенияПериодическихПоказателейВсе.НомерСтроки КАК НомерСтроки,
ВтЗначенияПериодическихПоказателейВсе.Показатель КАК Показатель,
ВтЗначенияПериодическихПоказателейВсе.Значение КАК Значение,
ВтЗначенияПериодическихПоказателейВсе.ДействуетДо КАК ДействуетДо
ПОМЕСТИТЬ ВтЗначенияПериодическихПоказателей
ИЗ
ВтПериодыСотрудники КАК ВтПериодыСотрудники
ЛЕВОЕ СОЕДИНЕНИЕ ВтЗначенияПериодическихПоказателейВсе КАК ВтЗначенияПериодическихПоказателейВсе
ПО ВтПериодыСотрудники.Сотрудник = ВтЗначенияПериодическихПоказателейВсе.Сотрудник
И ВтПериодыСотрудники.Период
МЕЖДУ ВтЗначенияПериодическихПоказателейВсе.ДатаНачала И ВтЗначенияПериодическихПоказателейВсе.ДатаОкончания
;
////////////////////////////////////////////////////////////////////////////////
// 6. Финальный босс - периоды с показателями готовые к загрузке в ТЧ Начисления
ВЫБРАТЬ РАЗРЕШЕННЫЕ
ВтПериодыСотрудники.Период КАК Период,
ВтПериодыСотрудники.Сотрудник КАК Сотрудник,
КадроваяИсторияСотрудников.Подразделение КАК Подразделение,
ВЫБОР
КОГДА КадроваяИсторияСотрудников.ВидСобытия = ЗНАЧЕНИЕ(Перечисление.ВидыКадровыхСобытий.Увольнение)
ТОГДА ИСТИНА
ИНАЧЕ ЛОЖЬ
КОНЕЦ КАК Увольнение,
ВЫБОР
КОГДА НЕ ЗначенияРазовыхПоказателей1.Показатель ЕСТЬ NULL
ТОГДА ЗначенияРазовыхПоказателей1.Показатель
КОГДА НЕ ЗначенияПериодическихПоказателей1.Показатель ЕСТЬ NULL
ТОГДА ЗначенияПериодическихПоказателей1.Показатель
ИНАЧЕ ЗначенияОперативныхПоказателей1.Показатель
КОНЕЦ КАК Показатель1,
ВЫБОР
КОГДА КадроваяИсторияСотрудников.ВидСобытия = ЗНАЧЕНИЕ(Перечисление.ВидыКадровыхСобытий.Увольнение)
ТОГДА 0
КОГДА НЕ ЗначенияРазовыхПоказателей1.Показатель ЕСТЬ NULL
ТОГДА ЗначенияРазовыхПоказателей1.Значение
КОГДА НЕ ЗначенияПериодическихПоказателей1.Показатель ЕСТЬ NULL
ТОГДА ЗначенияПериодическихПоказателей1.Значение
ИНАЧЕ ЗначенияОперативныхПоказателей1.СуммаПодряд
КОНЕЦ КАК Значение1,
ЗначенияПериодическихПоказателей1.ДействуетДо КАК ДействуетДо1,
ЗначенияОперативныхПоказателей1.НачалоПериодаПодряд КАК НачалоПериодаПодряд1,
ВЫБОР
КОГДА НЕ ЗначенияРазовыхПоказателей2.Показатель ЕСТЬ NULL
ТОГДА ЗначенияРазовыхПоказателей2.Показатель
КОГДА НЕ ЗначенияПериодическихПоказателей2.Показатель ЕСТЬ NULL
ТОГДА ЗначенияПериодическихПоказателей2.Показатель
ИНАЧЕ ЗначенияОперативныхПоказателей2.Показатель
КОНЕЦ КАК Показатель2,
ВЫБОР
КОГДА КадроваяИсторияСотрудников.ВидСобытия = ЗНАЧЕНИЕ(Перечисление.ВидыКадровыхСобытий.Увольнение)
ТОГДА 0
КОГДА НЕ ЗначенияРазовыхПоказателей2.Показатель ЕСТЬ NULL
ТОГДА ЗначенияРазовыхПоказателей2.Значение
КОГДА НЕ ЗначенияПериодическихПоказателей2.Показатель ЕСТЬ NULL
ТОГДА ЗначенияПериодическихПоказателей2.Значение
ИНАЧЕ ЗначенияОперативныхПоказателей2.СуммаПодряд
КОНЕЦ КАК Значение2,
ЗначенияПериодическихПоказателей2.ДействуетДо КАК ДействуетДо2,
ЗначенияОперативныхПоказателей2.НачалоПериодаПодряд КАК НачалоПериодаПодряд2,
ВЫБОР
КОГДА НЕ ЗначенияРазовыхПоказателей3.Показатель ЕСТЬ NULL
ТОГДА ЗначенияРазовыхПоказателей3.Показатель
КОГДА НЕ ЗначенияПериодическихПоказателей3.Показатель ЕСТЬ NULL
ТОГДА ЗначенияПериодическихПоказателей3.Показатель
ИНАЧЕ ЗначенияОперативныхПоказателей3.Показатель
КОНЕЦ КАК Показатель3,
ВЫБОР
КОГДА КадроваяИсторияСотрудников.ВидСобытия = ЗНАЧЕНИЕ(Перечисление.ВидыКадровыхСобытий.Увольнение)
ТОГДА 0
КОГДА НЕ ЗначенияРазовыхПоказателей3.Показатель ЕСТЬ NULL
ТОГДА ЗначенияРазовыхПоказателей3.Значение
КОГДА НЕ ЗначенияПериодическихПоказателей3.Показатель ЕСТЬ NULL
ТОГДА ЗначенияПериодическихПоказателей3.Значение
ИНАЧЕ ЗначенияОперативныхПоказателей3.СуммаПодряд
КОНЕЦ КАК Значение3,
ЗначенияПериодическихПоказателей3.ДействуетДо КАК ДействуетДо3,
ЗначенияОперативныхПоказателей3.НачалоПериодаПодряд КАК НачалоПериодаПодряд3
ПОМЕСТИТЬ ВтДанныеВсеПериоды
ИЗ
ВтПериодыСотрудники КАК ВтПериодыСотрудники
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КадроваяИсторияСотрудников КАК КадроваяИсторияСотрудников
ПО ВтПериодыСотрудники.Сотрудник = КадроваяИсторияСотрудников.Сотрудник
И ВтПериодыСотрудники.АктуальныйПериод = КадроваяИсторияСотрудников.Период
И КадроваяИсторияСотрудников.Организация = &Организация
ЛЕВОЕ СОЕДИНЕНИЕ ВтЗначенияРазовыхПоказателей КАК ЗначенияРазовыхПоказателей1
ПО ВтПериодыСотрудники.Сотрудник = ЗначенияРазовыхПоказателей1.Сотрудник
И ЗначенияРазовыхПоказателей1.ПериодДействия = НАЧАЛОПЕРИОДА(ВтПериодыСотрудники.Период, МЕСЯЦ)
И ЗначенияРазовыхПоказателей1.НомерСтроки = 1
ЛЕВОЕ СОЕДИНЕНИЕ ВтЗначенияРазовыхПоказателей КАК ЗначенияРазовыхПоказателей2
ПО ВтПериодыСотрудники.Сотрудник = ЗначенияРазовыхПоказателей2.Сотрудник
И ЗначенияРазовыхПоказателей2.ПериодДействия = НАЧАЛОПЕРИОДА(ВтПериодыСотрудники.Период, МЕСЯЦ)
И ЗначенияРазовыхПоказателей2.НомерСтроки = 2
ЛЕВОЕ СОЕДИНЕНИЕ ВтЗначенияРазовыхПоказателей КАК ЗначенияРазовыхПоказателей3
ПО ВтПериодыСотрудники.Сотрудник = ЗначенияРазовыхПоказателей3.Сотрудник
И ЗначенияРазовыхПоказателей3.ПериодДействия = НАЧАЛОПЕРИОДА(ВтПериодыСотрудники.Период, МЕСЯЦ)
И ЗначенияРазовыхПоказателей3.НомерСтроки = 3
ЛЕВОЕ СОЕДИНЕНИЕ ВтЗначенияОперативныхПоказателейСгруппированные КАК ЗначенияОперативныхПоказателей1
ПО ВтПериодыСотрудники.Сотрудник = ЗначенияОперативныхПоказателей1.Сотрудник
И ЗначенияОперативныхПоказателей1.Период = ВтПериодыСотрудники.Период
И ЗначенияОперативныхПоказателей1.НомерСтроки = 1
ЛЕВОЕ СОЕДИНЕНИЕ ВтЗначенияОперативныхПоказателейСгруппированные КАК ЗначенияОперативныхПоказателей2
ПО ВтПериодыСотрудники.Сотрудник = ЗначенияОперативныхПоказателей2.Сотрудник
И ЗначенияОперативныхПоказателей2.Период = ВтПериодыСотрудники.Период
И ЗначенияОперативныхПоказателей2.НомерСтроки = 2
ЛЕВОЕ СОЕДИНЕНИЕ ВтЗначенияОперативныхПоказателейСгруппированные КАК ЗначенияОперативныхПоказателей3
ПО ВтПериодыСотрудники.Сотрудник = ЗначенияОперативныхПоказателей3.Сотрудник
И ЗначенияОперативныхПоказателей3.Период = ВтПериодыСотрудники.Период
И ЗначенияОперативныхПоказателей3.НомерСтроки = 3
ЛЕВОЕ СОЕДИНЕНИЕ ВтЗначенияПериодическихПоказателей КАК ЗначенияПериодическихПоказателей1
ПО ВтПериодыСотрудники.Сотрудник = ЗначенияПериодическихПоказателей1.Сотрудник
И ЗначенияПериодическихПоказателей1.Период = ВтПериодыСотрудники.Период
И ЗначенияПериодическихПоказателей1.НомерСтроки = 1
ЛЕВОЕ СОЕДИНЕНИЕ ВтЗначенияПериодическихПоказателей КАК ЗначенияПериодическихПоказателей2
ПО ВтПериодыСотрудники.Сотрудник = ЗначенияПериодическихПоказателей2.Сотрудник
И ЗначенияПериодическихПоказателей2.Период = ВтПериодыСотрудники.Период
И ЗначенияПериодическихПоказателей2.НомерСтроки = 2
ЛЕВОЕ СОЕДИНЕНИЕ ВтЗначенияПериодическихПоказателей КАК ЗначенияПериодическихПоказателей3
ПО ВтПериодыСотрудники.Сотрудник = ЗначенияПериодическихПоказателей3.Сотрудник
И ЗначенияПериодическихПоказателей3.Период = ВтПериодыСотрудники.Период
И ЗначенияПериодическихПоказателей3.НомерСтроки = 3
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
МИНИМУМ(ВтДанныеВсеПериоды.Период) КАК ДатаНачала,
МАКСИМУМ(ВтДанныеВсеПериоды.Период) КАК ДатаОкончания,
ВтДанныеВсеПериоды.Сотрудник КАК Сотрудник,
ВтДанныеВсеПериоды.Подразделение КАК Подразделение,
ВтДанныеВсеПериоды.Показатель1 КАК Показатель1,
ВтДанныеВсеПериоды.Значение1 КАК Значение1,
ВтДанныеВсеПериоды.Показатель2 КАК Показатель2,
ВтДанныеВсеПериоды.Значение2 КАК Значение2,
ВтДанныеВсеПериоды.Показатель3 КАК Показатель3,
ВтДанныеВсеПериоды.Значение3 КАК Значение3
ИЗ
ВтДанныеВсеПериоды КАК ВтДанныеВсеПериоды
СГРУППИРОВАТЬ ПО
ВтДанныеВсеПериоды.Сотрудник,
ВтДанныеВсеПериоды.Подразделение,
ВтДанныеВсеПериоды.Показатель1,
ВтДанныеВсеПериоды.Значение1,
ВтДанныеВсеПериоды.Показатель2,
ВтДанныеВсеПериоды.Значение2,
ВтДанныеВсеПериоды.Показатель3,
ВтДанныеВсеПериоды.Значение3,
ВтДанныеВсеПериоды.ДействуетДо1,
ВтДанныеВсеПериоды.ДействуетДо2,
ВтДанныеВсеПериоды.ДействуетДо3
ИМЕЮЩИЕ
НЕ (ВтДанныеВсеПериоды.Значение1 = 0
И ВтДанныеВсеПериоды.Значение2 = 0
И ВтДанныеВсеПериоды.Значение3 = 0)

