Начну с далёкой предыстории. В одном из чатиков нашего Холдинга аналитик задал вопрос: «Как по отчёту 1С получить список таблиц, из которых отчёт берёт данные?» Началось бурное обсуждение, много предложений. Пара человек предложила взять запрос из СКД отчёта и скормить его ИИшечке с умным промптом. Так как явно по тексту запроса все таблицы не выловишь (да и таблицы могут быть не только в СКД), я отнёсся скептически к возможности получить хороший результат. Но автор предложения быстренько сделал пример, и аналитик ушёл из чатика довольным. Я взял результат на заметку, особо его не разглядывая.
Потом в чатике начали гадать, а зачем всё это нужно. Оказалось — для назначения прав на таблицы. Уже позже обращается как-то пользователь: беда, расшифровка регламентированного отчёта не работает в ЗУПе.
Для тех, кто с ЗУПом не сталкивался, коротенько расск��жу про одну особенность этой конфигурации. В ней часть базовых таблиц в запросах заменяются псевдонимами, называется это механизмом представлений. Это очень краткое и примитивное описание, если подробнее, то придётся писать отдельную статью.
Сразу же выяснилось, что причина ошибки — нарушение прав доступа. Обычно в таких случаях бегом в журнал регистрации, и всё станет ясно. Но не в этот раз. В ЖР красовалась коротенькая запись: «Нарушение прав доступа». Без метаданных. В тексте ошибки была строка модуля — я туда и пошёл. А там такой текст:
...
МакетКомпоновки = ЗарплатаКадрыОтчеты.МакетКомпоновкиДанных(СхемаКомпоновки, НастройкиОтчета);
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
Если ВнешниеНаборыДанных <> Неопределено Тогда
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ВнешниеНаборыДанных, , Истина);
Иначе
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, , , Истина);
КонецЕсли;
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных, Истина);
...Ошибка вылезает на предпоследней строчке: ПроцессорВывода.Вывести. Понятно теперь, почему метаданных нет.
Быстренько нашёл, откуда берётся СКД для макета компоновки, и ожидаемо увидел, что запрос сделан под механизм представлений, ничего мне не покажут. Вот как это выглядит, кому интересно:
Очень длинный запрос - из СКД
ВЫБРАТЬ ПЕРВЫЕ 0
НачисленияУдержанияВыплаты.МесяцНачисления КАК МесяцНачисления,
НачисленияУдержанияВыплаты.ГоловнаяОрганизация КАК ГоловнаяОрганизация,
НачисленияУдержанияВыплаты.Организация КАК Организация,
НачисленияУдержанияВыплаты.Сотрудник КАК Сотрудник,
НачисленияУдержанияВыплаты.СтатьяФинансирования КАК СтатьяФинансирования,
НачисленияУдержанияВыплаты.СтатьяРасходов КАК СтатьяРасходов,
НачисленияУдержанияВыплаты.ФизическоеЛицо КАК ФизическоеЛицо,
НачисленияУдержанияВыплаты.Подразделение КАК Подразделение,
НачисленияУдержанияВыплаты.Группа КАК Группа,
НачисленияУдержанияВыплаты.ВидРасчета КАК ВидРасчета,
НачисленияУдержанияВыплаты.Сумма КАК Сумма,
НачисленияУдержанияВыплаты.ОтработаноДней КАК ОтработаноДней,
НачисленияУдержанияВыплаты.ОтработаноЧасовВПериоде КАК ОтработаноЧасовВПериоде,
НачисленияУдержанияВыплаты.ОплаченоДней КАК ОплаченоДней,
НачисленияУдержанияВыплаты.ОплаченоЧасов КАК ОплаченоЧасов,
НачисленияУдержанияВыплаты.ПериодДействия КАК ПериодДействия,
НачисленияУдержанияВыплаты.ДатаНачала КАК ДатаНачала,
НачисленияУдержанияВыплаты.ПодразделениеНаКонецПериода КАК ПодразделениеНаКонецПериода,
НачисленияУдержанияВыплаты.Должность КАК Должность,
НачисленияУдержанияВыплаты.ТарифнаяСтавка КАК ТарифнаяСтавка,
НачисленияУдержанияВыплаты.ВидДоговора КАК ВидДоговора,
НачисленияУдержанияВыплаты.ВидЗанятости КАК ВидЗанятости,
ИСТИНА КАК НачислениеВключаетсяВФОТ
ПОМЕСТИТЬ ОбщиеЗапросы_НачисленияУдержанияСтатистикаПерсонала
ИЗ
(ВЫБРАТЬ ПЕРВЫЕ 0
ДАТАВРЕМЯ(1, 1, 1) КАК МесяцНачисления,
ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка) КАК ГоловнаяОрганизация,
ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка) КАК Организация,
ЗНАЧЕНИЕ(Справочник.Сотрудники.ПустаяСсылка) КАК Сотрудник,
ЗНАЧЕНИЕ(Справочник.СтатьиФинансированияЗарплата.ПустаяСсылка) КАК СтатьяФинансирования,
ЗНАЧЕНИЕ(Справочник.СтатьиРасходовЗарплата.ПустаяСсылка) КАК СтатьяРасходов,
ЗНАЧЕНИЕ(Справочник.ФизическиеЛица.ПустаяСсылка) КАК ФизическоеЛицо,
ЗНАЧЕНИЕ(Справочник.ПодразделенияОрганизаций.ПустаяСсылка) КАК Подразделение,
ЗНАЧЕНИЕ(Перечисление.ГруппыНачисленияУдержанияВыплаты.ПустаяСсылка) КАК Группа,
ЗНАЧЕНИЕ(ПланВидовРасчета.Начисления.ПустаяСсылка) КАК ВидРасчета,
0 КАК Сумма,
0 КАК ОтработаноДней,
0 КАК ОтработаноЧасовВПериоде,
0 КАК ОплаченоДней,
0 КАК ОплаченоЧасов,
ДАТАВРЕМЯ(1, 1, 1) КАК ПериодДействия,
ДАТАВРЕМЯ(1, 1, 1) КАК ДатаНачала,
ЗНАЧЕНИЕ(Справочник.ПодразделенияОрганизаций.ПустаяСсылка) КАК ПодразделениеНаКонецПериода,
ЗНАЧЕНИЕ(Справочник.Должности.ПустаяСсылка) КАК Должность,
0 КАК ТарифнаяСтавка,
ЗНАЧЕНИЕ(Перечисление.ВидыДоговоровССотрудниками.ПустаяСсылка) КАК ВидДоговора,
ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.ПустаяСсылка) КАК ВидЗанятости
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ ПЕРВЫЕ 0
ДАТАВРЕМЯ(1, 1, 1),
ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка),
ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка),
ЗНАЧЕНИЕ(Справочник.Сотрудники.ПустаяСсылка),
ЗНАЧЕНИЕ(Справочник.СтатьиФинансированияЗарплата.ПустаяСсылка),
ЗНАЧЕНИЕ(Справочник.СтатьиРасходовЗарплата.ПустаяСсылка),
ЗНАЧЕНИЕ(Справочник.ФизическиеЛица.ПустаяСсылка),
ЗНАЧЕНИЕ(Справочник.ПодразделенияОрганизаций.ПустаяСсылка),
ЗНАЧЕНИЕ(Перечисление.ГруппыНачисленияУдержанияВыплаты.ПустаяСсылка),
ЗНАЧЕНИЕ(ПланВидовРасчета.Удержания.ПустаяСсылка),
0
0
0
0
0
ДАТАВРЕМЯ(1, 1, 1),
ДАТАВРЕМЯ(1, 1, 1),
ЗНАЧЕНИЕ(Справочник.ПодразделенияОрганизаций.ПустаяСсылка),
ЗНАЧЕНИЕ(Справочник.Должности.ПустаяСсылка),
0
ЗНАЧЕНИЕ(Перечисление.ВидыДоговоровССотрудниками.ПустаяСсылка),
ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.ПустаяСсылка)
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ ПЕРВЫЕ 0
ДАТАВРЕМЯ(1, 1, 1),
ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка),
ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка),
ЗНАЧЕНИЕ(Справочник.Сотрудники.ПустаяСсылка),
ЗНАЧЕНИЕ(Справочник.СтатьиФинансированияЗарплата.ПустаяСсылка),
ЗНАЧЕНИЕ(Справочник.СтатьиРасходовЗарплата.ПустаяСсылка),
ЗНАЧЕНИЕ(Справочник.ФизическиеЛица.ПустаяСсылка),
ЗНАЧЕНИЕ(Справочник.ПодразделенияОрганизаций.ПустаяСсылка),
ЗНАЧЕНИЕ(Перечисление.ГруппыНачисленияУдержанияВыплаты.ПустаяСсылка),
ЗНАЧЕНИЕ(Перечисление.ВидыВзаиморасчетовССотрудниками.ПустаяСсылка),
0
0
0
0
0
ДАТАВРЕМЯ(1, 1, 1),
ДАТАВРЕМЯ(1, 1, 1),
ЗНАЧЕНИЕ(Справочник.ПодразделенияОрганизаций.ПустаяСсылка),
ЗНАЧЕНИЕ(Справочник.Должности.ПустаяСсылка),
0
ЗНАЧЕНИЕ(Перечисление.ВидыДоговоровССотрудниками.ПустаяСсылка),
ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.ПустаяСсылка)
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ ПЕРВЫЕ 0
ДАТАВРЕМЯ(1, 1, 1),
ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка),
ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка),
ЗНАЧЕНИЕ(Справочник.Сотрудники.ПустаяСсылка),
ЗНАЧЕНИЕ(Справочник.СтатьиФинансированияЗарплата.ПустаяСсылка),
ЗНАЧЕНИЕ(Справочник.СтатьиРасходовЗарплата.ПустаяСсылка),
ЗНАЧЕНИЕ(Справочник.ФизическиеЛица.ПустаяСсылка),
ЗНАЧЕНИЕ(Справочник.ПодразделенияОрганизаций.ПустаяСсылка),
ЗНАЧЕНИЕ(Перечисление.ГруппыНачисленияУдержанияВыплаты.ПустаяСсылка),
ЗНАЧЕНИЕ(Перечисление.ВидыОсобыхНачисленийИУдержаний.ПустаяСсылка),
0
0
0
0
0
ДАТАВРЕМЯ(1, 1, 1),
ДАТАВРЕМЯ(1, 1, 1),
ЗНАЧЕНИЕ(Справочник.ПодразделенияОрганизаций.ПустаяСсылка),
ЗНАЧЕНИЕ(Справочник.Должности.ПустаяСсылка),
0
ЗНАЧЕНИЕ(Перечисление.ВидыДоговоровССотрудниками.ПустаяСсылка),
ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.ПустаяСсылка)) КАК НачисленияУдержанияВыплаты
{ГДЕ
НачисленияУдержанияВыплаты.МесяцНачисления,
НачисленияУдержанияВыплаты.ГоловнаяОрганизация.*,
НачисленияУдержанияВыплаты.Сотрудник.*,
НачисленияУдержанияВыплаты.СтатьяФинансирования.*,
НачисленияУдержанияВыплаты.СтатьяРасходов.*,
НачисленияУдержанияВыплаты.ФизическоеЛицо.*,
НачисленияУдержанияВыплаты.Группа.*,
НачисленияУдержанияВыплаты.ВидРасчета.*,
НачисленияУдержанияВыплаты.Сумма,
НачисленияУдержанияВыплаты.ОтработаноДней,
НачисленияУдержанияВыплаты.ОтработаноЧасовВПериоде,
НачисленияУдержанияВыплаты.ОплаченоДней,
НачисленияУдержанияВыплаты.ОплаченоЧасов,
НачисленияУдержанияВыплаты.ПериодДействия,
НачисленияУдержанияВыплаты.ДатаНачала,
НачисленияУдержанияВыплаты.ПодразделениеНаКонецПериода.*,
НачисленияУдержанияВыплаты.ТарифнаяСтавка,
НачисленияУдержанияВыплаты.ВидДоговора.*,
НачисленияУдержанияВыплаты.ВидЗанятости.*}
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
Начисления.ГрафикРаботы КАК ГрафикРаботы,
ОбщиеЗапросы_НачисленияУдержанияСтатистикаПерсонала.Сотрудник КАК Сотрудник,
Начисления.ПериодДействияНачало КАК ПериодДействияНачало,
Начисления.ПериодДействияКонец КАК ПериодДействияКонец,
Начисления.ВидРасчета КАК ВидРасчета,
ОбщиеЗапросы_НачисленияУдержанияСтатистикаПерсонала.МесяцНачисления КАК Месяц,
Начисления.ПериодРегистрацииВремени КАК ПериодРегистрацииВремени
ПОМЕСТИТЬ ВТГрафикиРаботСотрудников
ИЗ
ОбщиеЗапросы_НачисленияУдержанияСтатистикаПерсонала КАК ОбщиеЗапросы_НачисленияУдержанияСтатистикаПерсонала
ЛЕВОЕ СОЕДИНЕНИЕ РегистрРасчета.Начисления.ФактическийПериодДействия КАК Начисления
ПО ОбщиеЗапросы_НачисленияУдержанияСтатистикаПерсонала.Сотрудник = Начисления.Сотрудник
И ОбщиеЗапросы_НачисленияУдержанияСтатистикаПерсонала.ВидРасчета = Начисления.ВидРасчета
И ОбщиеЗапросы_НачисленияУдержанияСтатистикаПерсонала.ДатаНачала = Начисления.ПериодДействияНачало
ГДЕ
ОбщиеЗапросы_НачисленияУдержанияСтатистикаПерсонала.Группа = ЗНАЧЕНИЕ(Перечисление.ГруппыНачисленияУдержанияВыплаты.Начислено)
И &ЕстьНерабочиеПериоды
СГРУППИРОВАТЬ ПО
Начисления.ГрафикРаботы,
ОбщиеЗапросы_НачисленияУдержанияСтатистикаПерсонала.Сотрудник,
Начисления.ПериодДействияНачало,
Начисления.ПериодДействияКонец,
Начисления.ВидРасчета,
ОбщиеЗапросы_НачисленияУдержанияСтатистикаПерсонала.МесяцНачисления,
Начисления.ПериодРегистрацииВремени
ИНДЕКСИРОВАТЬ ПО
ГрафикРаботы,
ПериодДействияНачало,
ПериодДействияКонец,
ВидРасчета,
Месяц
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
КадровыеДанныеСотрудников.Сотрудник КАК Сотрудник,
КадровыеДанныеСотрудников.ФизическоеЛицо КАК ФизическоеЛицо,
КадровыеДанныеСотрудников.ДатаПриема КАК ДатаПриема,
КадровыеДанныеСотрудников.ДатаУвольнения КАК ДатаУвольнения
ПОМЕСТИТЬ ВТКадровыеДанныеСотрудниковДаты
ИЗ
ОбщиеЗапросы_НачисленияУдержанияСтатистикаПерсонала КАК Сотрудники
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ТекущиеКадровыеДанныеСотрудников КАК КадровыеДанныеСотрудников
ПО Сотрудники.Сотрудник = КадровыеДанныеСотрудников.Сотрудник
{ГДЕ
КадровыеДанныеСотрудников.ФизическоеЛицо.*,
КадровыеДанныеСотрудников.Сотрудник.*,
КадровыеДанныеСотрудников.Сотрудник.ГоловнаяОрганизация.* КАК ГоловнаяОрганизация}
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
Данные.МесяцНачисления КАК МесяцНачисления,
Данные.ГоловнаяОрганизация КАК ГоловнаяОрганизация,
Данные.Организация КАК Организация,
Данные.Сотрудник КАК Сотрудник,
Данные.СтатьяФинансирования КАК СтатьяФинансирования,
Данные.СтатьяРасходов КАК СтатьяРасходов,
Данные.ФизическоеЛицо КАК ФизическоеЛицо,
Данные.Подразделение КАК Подразделение,
Данные.Группа КАК Группа,
Данные.ВидРасчета КАК ВидРасчета,
Данные.Сумма КАК Сумма,
Данные.ОтработаноДней КАК ОтработаноДней,
Данные.ОтработаноЧасовВПериоде КАК ОтработаноЧасов,
Данные.ОплаченоДней КАК ОплаченоДней,
Данные.ОплаченоЧасов КАК ОплаченоЧасов,
Данные.ПериодДействия КАК ПериодДействия,
ВЫБОР
КОГДА Данные.ВидРасчета = ЗНАЧЕНИЕ(Перечисление.ВидыОсобыхНачисленийИУдержаний.ДоговорРаботыУслуги)
И Данные.МесяцНачисления < НАЧАЛОПЕРИОДА(КадровыеДанныеСотрудниковДаты.ДатаПриема, МЕСЯЦ)
ТОГДА Данные.МесяцНачисления
КОГДА ВЫБОР
КОГДА Данные.ДатаНачала = ДАТАВРЕМЯ(1, 1, 1)
ТОГДА Данные.МесяцНачисления
ИНАЧЕ Данные.ДатаНачала
КОНЕЦ < КадровыеДанныеСотрудниковДаты.ДатаПриема
ТОГДА КадровыеДанныеСотрудниковДаты.ДатаПриема
ИНАЧЕ ВЫБОР
КОГДА Данные.ДатаНачала = ДАТАВРЕМЯ(1, 1, 1)
ТОГДА Данные.МесяцНачисления
ИНАЧЕ Данные.ДатаНачала
КОНЕЦ
КОНЕЦ ��АК ДатаНачала,
Данные.ПодразделениеНаКонецПериода КАК ПодразделениеНаКонецПериода,
Данные.Должность КАК Должность,
Данные.ТарифнаяСтавка КАК ТарифнаяСтавка,
Данные.ВидДоговора КАК ВидДоговора,
Данные.ВидЗанятости КАК ВидЗанятости,
КадровыеДанныеСотрудниковДаты.ДатаУвольнения КАК ДатаУвольнения,
КадровыеДанныеСотрудниковДаты.ДатаПриема КАК ДатаПриема,
ВЫБОР
КОГДА Данные.ВидЗанятости В (ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.ВнутреннееСовместительство), ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.Подработка))
ТОГДА ИСТИНА
ИНАЧЕ ЛОЖЬ
КОНЕЦ КАК ВнутреннееСовместительствоИлиПодработка,
ВЫБОР
КОГДА Данные.ДатаНачала <= КадровыеДанныеСотрудниковДаты.ДатаУвольнения
И КадровыеДанныеСотрудниковДаты.ДатаУвольнения <> ДАТАВРЕМЯ(1, 1, 1)
ИЛИ Данные.ДатаНачала <> НАЧАЛОПЕРИОДА(Данные.ДатаНачала, МЕСЯЦ)
ТОГДА ИСТИНА
ИНАЧЕ ЛОЖЬ
КОНЕЦ КАК НачислениеНеСНачалаМесяца,
ВЫБОР
КОГДА НАЧАЛОПЕРИОДА(Данные.ДатаНачала, МЕСЯЦ) = Данные.МесяцНачисления
ТОГДА ИСТИНА
ИНАЧЕ ЛОЖЬ
КОНЕЦ КАК НачислениеЗаТекущийМесяц,
ВЫБОР
КОГДА НАЧАЛОПЕРИОДА(Данные.ДатаНачала, МЕСЯЦ) < Данные.МесяцНачисления
ТОГДА ИСТИНА
ИНАЧЕ ЛОЖЬ
КОНЕЦ КАК НачислениеЗаПрошлыйМесяц,
ВЫБОР
КОГДА НАЧАЛОПЕРИОДА(Данные.ДатаНачала, МЕСЯЦ) > Данные.МесяцНачисления
ТОГДА ИСТИНА
ИНАЧЕ ЛОЖЬ
КОНЕЦ КАК НачислениеЗаБудущийМесяц
ПОМЕСТИТЬ ОбщиеЗапросыНачисленияУдержанияИтоговая
ИЗ
ОбщиеЗапросы_НачисленияУдержанияСтатистикаПерсонала КАК Данные
ЛЕВОЕ СОЕДИНЕНИЕ ВТКадровыеДанныеСотрудниковДаты КАК КадровыеДанныеСотрудниковДаты
ПО Данные.Сотрудник = КадровыеДанныеСотрудниковДаты.Сотрудник
ГДЕ
Данные.Группа В (ЗНАЧЕНИЕ(Перечисление.ГруппыНачисленияУдержанияВыплаты.Начислено), ЗНАЧЕНИЕ(Перечисление.ГруппыНачисленияУдержанияВыплаты.Справочно))
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
НАЧАЛОПЕРИОДА(ПоКонтрагентамАкционерам.Период, МЕСЯЦ),
ПоКонтрагентамАкционерам.Организация.ГоловнаяОрганизация,
ПоКонтрагентамАкционерам.Организация,
ВЫБОР
КОГДА ПоКонтрагентамАкционерам.Сотрудник = ЗНАЧЕНИЕ(Справочник.Сотрудники.ПустаяСсылка)
ТОГДА ПоКонтрагентамАкционерам.ФизическоеЛицо
ИНАЧЕ ПоКонтрагентамАкционерам.Сотрудник
КОНЕЦ,
ПоКонтрагентамАкционерам.СтатьяФинансирования,
ПоКонтрагентамАкционерам.СтатьяРасходов,
ПоКонтрагентамАкционерам.ФизическоеЛицо,
ПоКонтрагентамАкционерам.Подразделение,
ПоКонтрагентамАкционерам.ГруппаНачисленияУдержанияВыплаты,
ПоКонтрагентамАкционерам.НачислениеУдержание,
СУММА(ПоКонтрагентамАкционерам.Сумма),
0
0
0
0
НАЧАЛОПЕРИОДА(ПоКонтрагентамАкционерам.Период, МЕСЯЦ),
НАЧАЛОПЕРИОДА(ПоКонтрагентамАкционерам.Период, МЕСЯЦ),
ПоКонтрагентамАкционерам.Подразделение,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL
ИЗ
РегистрНакопления.НачисленияУдержанияПоКонтрагентамАкционерам КАК ПоКонтрагентамАкционерам
ГДЕ
ПоКонтрагентамАкционерам.Период МЕЖДУ &НачалоПериода И &КонецПериода
И ПоКонтрагентамАкционерам.ГруппаНачисленияУдержанияВыплаты = ЗНАЧЕНИЕ(Перечисление.ГруппыНачисленияУдержанияВыплаты.Начислено)
И ПоКонтрагентамАкционерам.НачислениеУдержание В(&ВидыВыплатНаПериодТрудоустройства)
{ГДЕ
ПоКонтрагентамАкционерам.ФизическоеЛицо.*,
ПоКонтрагентамАкционерам.Организация.ГоловнаяОрганизация.* КАК ГоловнаяОрганизация}
СГРУППИРОВАТЬ ПО
НАЧАЛОПЕРИОДА(ПоКонтрагентамАкционерам.Период, МЕСЯЦ),
ПоКонтрагентамАкционерам.Организация,
ПоКонтрагентамАкционерам.СтатьяФинансирования,
ПоКонтрагентамАкционерам.СтатьяРасходов,
ПоКонтрагентамАкционерам.ФизическоеЛицо,
ПоКонтрагентамАкционерам.ГруппаНачисленияУдержанияВыплаты,
ПоКонтрагентамАкционерам.НачислениеУдержание,
ПоКонтрагентамАкционерам.Подразделение,
ПоКонтрагентамАкционерам.Организация.ГоловнаяОрганизация,
ВЫБОР
КОГДА ПоКонтрагентамАкционерам.Сотрудник = ЗНАЧЕНИЕ(Справочник.Сотрудники.ПустаяСсылка)
ТОГДА ПоКонтрагентамАкционерам.ФизическоеЛицо
ИНАЧЕ ПоКонтрагентамАкционерам.Сотрудник
КОНЕЦ,
ПоКонтрагентамАкционерам.Подразделение,
НАЧАЛОПЕРИОДА(ПоКонтрагентамАкционерам.Период, МЕСЯЦ),
НАЧАЛОПЕРИОДА(ПоКонтрагентамАкционерам.Период, МЕСЯЦ)
ИНДЕКСИРОВАТЬ ПО
МесяцНачисления,
Сотрудник,
ФизическоеЛицо,
ВидЗанятости,
ДатаНачала
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
Сотрудники.Сотрудник КАК Сотрудник,
ВЫБОР
КОГДА ВЫБОР
КОГДА Сотрудники.ДатаНачала = ДАТАВРЕМЯ(1, 1, 1)
ТОГДА Сотрудники.МесяцНачисления
ИНАЧЕ Сотрудники.ДатаНачала
КОНЕЦ < КадровыеДанныеСотрудников.ДатаПриема
ТОГДА КадровыеДанныеСотрудников.ДатаПриема
ИНАЧЕ ВЫБОР
КОГДА Сотрудники.ДатаНачала = ДАТАВРЕМЯ(1, 1, 1)
ТОГДА Сотрудники.МесяцНачисления
ИНАЧЕ Сотрудники.ДатаНачала
КОНЕЦ
КОНЕЦ КАК Период
ПОМЕСТИТЬ ВТИзмеренияДатыДляКадровыеДанныеСотрудников_Зарплата
ИЗ
ОбщиеЗапросыНачисленияУдержанияИтоговая КАК Сотрудники
ЛЕВОЕ СОЕДИНЕНИЕ ВТКадровыеДанныеСотрудниковДаты КАК КадровыеДанныеСотрудников
ПО Сотрудники.Сотрудник = КадровыеДанныеСотрудников.Сотрудник
ОБЪЕДИНИТЬ
ВЫБРАТЬ РАЗЛИЧНЫЕ
ОсновныеСотрудники.Сотрудник,
ВЫБОР
КОГДА ВЫБОР
КОГДА Совместители.ДатаНачала = ДАТАВРЕМЯ(1, 1, 1)
ТОГДА Совместители.МесяцНачисления
ИНАЧЕ Совместители.ДатаНачала
КОНЕЦ < КадровыеДанныеСотрудников.ДатаПриема
ТОГДА КадровыеДанныеСотрудников.ДатаПриема
ИНАЧЕ ВЫБОР
КОГДА Совместители.ДатаНачала = ДАТАВРЕМЯ(1, 1, 1)
ТОГДА Совместители.МесяцНачисления
ИНАЧЕ Совместители.ДатаНачала
КОНЕЦ
КОНЕЦ
ИЗ
ОбщиеЗапросыНачисленияУдержанияИтоговая КАК Совместители
ВНУТРЕННЕЕ СОЕДИНЕНИЕ ОбщиеЗапросыНачисленияУдержанияИтоговая КАК ОсновныеСотрудники
ПО Совместители.ФизическоеЛицо = ОсновныеСотрудники.ФизическоеЛицо
И (ВЫБОР
КОГДА ОсновныеСотрудники.МесяцНачисления <> НАЧАЛОПЕРИОДА(ОсновныеСотрудники.ДатаНачала, МЕСЯЦ)
ТОГДА Совместители.МесяцНачисления = НАЧАЛОПЕРИОДА(ОсновныеСотрудники.ДатаНачала, МЕСЯЦ)
ИНАЧЕ Совместители.МесяцНачисления = ОсновныеСотрудники.МесяцНачисления
КОНЕЦ)
И (ОсновныеСотрудники.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.ОсновноеМестоРаботы)
ИЛИ ОсновныеСотрудники.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.ВнутреннееСовместительство))
ЛЕВОЕ СОЕ��ИНЕНИЕ ВТКадровыеДанныеСотрудниковДаты КАК КадровыеДанныеСотрудников
ПО Совместители.Сотрудник = КадровыеДанныеСотрудников.Сотрудник
ГДЕ
(Совместители.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.ВнутреннееСовместительство)
ИЛИ Совместители.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.Подработка)
ИЛИ Совместители.ВидЗанятости ЕСТЬ NULL)
И Совместители.ДатаНачала >= ОсновныеСотрудники.ДатаПриема
И (Совместители.ДатаНачала <= ОсновныеСотрудники.ДатаУвольнения
ИЛИ ОсновныеСотрудники.ДатаУвольнения = ДАТАВРЕМЯ(1, 1, 1))
ОБЪЕДИНИТЬ
ВЫБРАТЬ РАЗЛИЧНЫЕ
ОсновныеСотрудники.Сотрудник,
КОНЕЦПЕРИОДА(ВЫБОР
КОГДА ВЫБОР
КОГДА Совместители.ДатаНачала = ДАТАВРЕМЯ(1, 1, 1)
ТОГДА Совместители.МесяцНачисления
ИНАЧЕ Совместители.ДатаНачала
КОНЕЦ < КадровыеДанныеСотрудников.ДатаПриема
ТОГДА КадровыеДанныеСотрудников.ДатаПриема
ИНАЧЕ ВЫБОР
КОГДА Совместители.ДатаНачала = ДАТАВРЕМЯ(1, 1, 1)
ТОГДА Совместители.МесяцНачисления
ИНАЧЕ Совместители.ДатаНачала
КОНЕЦ
КОНЕЦ, МЕСЯЦ)
ИЗ
ОбщиеЗапросыНачисленияУдержанияИтоговая КАК Совместители
ВНУТРЕННЕЕ СОЕДИНЕНИЕ ОбщиеЗапросыНачисленияУдержанияИтоговая КАК ОсновныеСотрудники
ПО Совместители.ФизическоеЛицо = ОсновныеСотрудники.ФизическоеЛицо
И (ВЫБОР
КОГДА ОсновныеСотрудники.МесяцНачисления <> НАЧАЛОПЕРИОДА(ОсновныеСотрудники.ДатаНачала, МЕСЯЦ)
И Совместители.МесяцНачисления <> НАЧАЛОПЕРИОДА(Совместители.ДатаНачала, МЕСЯЦ)
ТОГДА Совместители.ДатаНачала = ОсновныеСотрудники.ДатаНачала
КОГДА ОсновныеСотрудники.МесяцНачисления <> НАЧАЛОПЕРИОДА(ОсновныеСотрудники.ДатаНачала, МЕСЯЦ)
ТОГДА Совместители.МесяцНачисления = НАЧАЛОПЕРИОДА(ОсновныеСотрудники.ДатаНачала, МЕСЯЦ)
ИНАЧЕ ВЫБОР
КОГДА ОсновныеСотрудники.ДатаНачала <> ОсновныеСотрудники.МесяцНачисления
ТОГДА Совместители.ДатаНачала = ОсновныеСотрудники.ДатаНачала
ИНАЧЕ Совместители.МесяцНачисления = ОсновныеСотрудники.МесяцНачисления
КОНЕЦ
КОНЕЦ)
И (ОсновныеСотрудники.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.ОсновноеМестоРаботы)
ИЛИ ОсновныеСотрудники.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.Совместительство))
ЛЕВОЕ СОЕДИНЕНИЕ ВТКадровыеДанныеСотрудниковДаты КАК КадровыеДанныеСотрудников
ПО Совместители.Сотрудник = КадровыеДанныеСотрудников.Сотрудник
ГДЕ
(Совместители.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.ВнутреннееСовместительство)
ИЛИ Совместители.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.Подработка))
И (НАЧАЛОПЕРИОДА(ОсновныеСотрудники.ДатаУвольнения, МЕСЯЦ) <> ОсновныеСотрудники.МесяцНачисления
И НАЧАЛОПЕРИОДА(Совместители.ДатаУвольнения, МЕСЯЦ) <> Совместители.МесяцНачисления
ИЛИ НАЧАЛОПЕРИОДА(ОсновныеСотрудники.ДатаУвольнения, МЕСЯЦ) = ОсновныеСотрудники.МесяцНачисления
И НАЧАЛОПЕРИОДА(Совместители.ДатаУвольнения, МЕСЯЦ) <> Совместители.МесяцНачисления
ИЛИ ОсновныеСотрудники.ДатаУвольнения = ДАТАВРЕМЯ(1, 1, 1)
И НАЧАЛОПЕРИОДА(Совместители.ДатаУвольнения, МЕСЯЦ) <> Совместители.МесяцНачисления
ИЛИ ОсновныеСотрудники.ДатаУвольнения = ДАТАВРЕМЯ(1, 1, 1)
И НАЧАЛОПЕРИОДА(Совместители.ДатаУвольнения, МЕСЯЦ) <> НАЧАЛОПЕРИОДА(Совместители.ДатаНачала, ДЕНЬ))
ОБЪЕДИНИТЬ
ВЫБРАТЬ РАЗЛИЧНЫЕ
ОбщиеЗапросыНачисленияУдержанияИтоговаяСовместительство.Сотрудник,
ВЫБОР
КОГДА ВЫБОР
КОГДА Сотрудники.ДатаНачала = ДАТАВРЕМЯ(1, 1, 1)
ТОГДА Сотрудники.МесяцНачисления
ИНАЧЕ Сотрудники.ДатаНачала
КОНЕЦ < КадровыеДанныеСотрудников.ДатаПриема
ТОГДА КадровыеДанныеСотрудников.ДатаПриема
ИНАЧЕ ВЫБОР
КОГДА Сотрудники.ДатаНачала = ДАТАВРЕМЯ(1, 1, 1)
ТОГДА Сотрудники.МесяцНачисления
ИНАЧЕ Сотрудники.ДатаНачала
КОНЕЦ
КОНЕЦ
ИЗ
ОбщиеЗапросыНачисленияУдержанияИтоговая КАК Сотрудники
ВНУТРЕННЕЕ СОЕДИНЕНИЕ ОбщиеЗапросыНачисленияУдержанияИтоговая КАК ОбщиеЗапросыНачисленияУдержанияИтоговаяСовместительство
ПО Сотрудники.ФизическоеЛицо = ОбщиеЗапросыНачисленияУдержанияИтоговаяСовместительство.ФизическоеЛицо
И (ОбщиеЗапросыНачисленияУдержанияИтоговаяСовместительство.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.Совместительство))
ЛЕВОЕ СОЕДИНЕНИЕ ОбщиеЗапросыНачисленияУдержанияИтоговая КАК ОбщиеЗапросыНачисленияУдержанияИтоговая
ПО Сотрудники.ФизическоеЛицо = ОбщиеЗапросыНачисленияУдержанияИтоговая.ФизическоеЛицо
И (ОбщиеЗапросыНачисленияУдержанияИтоговая.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.ОсновноеМестоРаботы))
И Сотрудники.МесяцНачисления = ОбщиеЗапросыНачисленияУдержанияИтоговая.МесяцНачисления
И (ОбщиеЗапросыНачисленияУдержанияИтоговая.ДатаУвольнения = ДАТАВРЕМЯ(1, 1, 1))
ЛЕВОЕ СОЕДИНЕНИЕ ВТКадровыеДанныеСотрудниковДаты КАК КадровыеДанныеСотрудников
ПО Сотрудники.Сотрудник = КадровыеДанныеСотрудников.Сотрудник
ГДЕ
ОбщиеЗапросыНачисленияУдержанияИтоговая.ФизическоеЛицо ЕСТЬ NULL
И (Сотрудники.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.ВнутреннееСовместительство)
ИЛИ Сотрудники.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.Подработка))
И (ОбщиеЗапросыНачисленияУдержанияИтоговаяСовместительство.ДатаУвольнения = ДАТАВРЕМЯ(1, 1, 1)
ИЛИ ОбщиеЗапросыНачисленияУдержанияИтоговаяСовместительство.ДатаУвольнения >= Сотрудники.МесяцНачисления)
ОБЪЕДИНИТЬ
ВЫБРАТЬ РАЗЛИЧНЫЕ
ОбщиеЗапросыНачисленияУдержанияИтоговаяСовместительство.Сотрудник,
КОНЕЦПЕРИОДА(ВЫБОР
КОГДА ВЫБОР
КОГДА Сотрудники.ДатаНачала = ДАТАВРЕМЯ(1, 1, 1)
ТОГДА Сотрудники.МесяцНачисления
ИНАЧЕ Сотрудники.ДатаНачала
КОНЕЦ < КадровыеДанныеСотрудников.ДатаПриема
ТОГДА КадровыеДанныеСотрудников.ДатаПриема
ИНАЧЕ ВЫБОР
КОГДА Сотрудники.ДатаНачала = ДАТАВРЕМЯ(1, 1, 1)
ТОГДА Сотрудники.МесяцНачисления
ИНАЧЕ Сотрудники.ДатаНачала
КОНЕЦ
КОНЕЦ, МЕСЯЦ)
ИЗ
ОбщиеЗапросыНачисленияУдержанияИтоговая КАК Сотрудники
ВНУТРЕННЕЕ СОЕДИНЕНИЕ ОбщиеЗапросыНачисленияУдержанияИтоговая КАК ОбщиеЗапросыНачисленияУдержанияИтоговаяСовместительство
ПО Сотрудники.ФизическоеЛицо = ОбщиеЗапросыНачисленияУдержанияИтоговаяСовместительство.ФизическоеЛицо
И (ОбщиеЗапросыНачисленияУдержанияИтоговаяСовместительство.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.Совместительство))
ЛЕВОЕ СОЕДИНЕНИЕ ОбщиеЗапросыНачисленияУдержанияИтоговая КАК ОбщиеЗапросыНачисленияУдержанияИтоговая
ПО Сотрудники.ФизическоеЛицо = ОбщиеЗапросыНачисленияУдержанияИтоговая.ФизическоеЛицо
И (ОбщиеЗапросыНачисленияУдержанияИтоговая.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.ОсновноеМестоРаботы))
ЛЕВОЕ СОЕДИНЕНИЕ ВТКадровыеДанныеСотрудниковДаты КАК КадровыеДанныеСотрудников
ПО Сотрудники.Сотрудник = КадровыеДанныеСотрудников.Сотрудник
ГДЕ
ОбщиеЗапросыНачисленияУдержанияИтоговая.ФизическоеЛицо ЕСТЬ NULL
И (Сотрудники.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.ВнутреннееСовместительство)
ИЛИ Сотрудники.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.Подработка))
И (ОбщиеЗапросыНачисленияУдержанияИтоговаяСовместительство.ДатаУвольнения = ДАТАВРЕМЯ(1, 1, 1)
ИЛИ ОбщиеЗапросыНачисленияУдержанияИтоговаяСовместительство.ДатаУвольнения >= Сотрудники.МесяцНачисления)
ОБЪЕДИНИТЬ
ВЫБРАТЬ
ОбщиеЗапросыНачисленияУдержанияИтоговая.Сотрудник,
ОбщиеЗапросыНачисленияУдержанияИтоговая.МесяцНачисления
ИЗ
ОбщиеЗапросыНачисленияУдержанияИтоговая КАК ОбщиеЗапросыНачисленияУдержанияИтоговая
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка) КАК Организация,
ЗНАЧЕНИЕ(Справочник.Сотрудники.ПустаяСсылка) КАК Сотрудник,
ЗНАЧЕНИЕ(Справочник.ФизическиеЛица.ПустаяСсылка) КАК ФизическоеЛицо,
ЗНАЧЕНИЕ(Справочник.ПодразделенияОрганизаций.ПустаяСсылка) КАК Подразделение,
ЗНАЧЕНИЕ(Справочник.ШтатноеРасписание.ПустаяСсылка) КАК ДолжностьПоШтатномуРасписанию,
ЗНАЧЕНИЕ(Справочник.Должности.ПустаяСсылка) КАК Должность,
ЗНАЧЕНИЕ(Перечисление.ПолФизическогоЛица.ПустаяСсылка) КАК Пол,
ЗНАЧЕНИЕ(Перечисление.ВидыДоговоровССотрудниками.ПустаяСсылка) КАК ВидДоговора,
ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.ПустаяСсылка) КАК ВидЗанятости,
ЗНАЧЕНИЕ(Перечисление.ВидыКадровыхСобытий.ПустаяСсылка) КАК ВидСобытия,
ЗНАЧЕНИЕ(Перечисление.СостоянияСотрудника.ПустаяСсылка) КАК Состояние,
ДАТАВРЕМЯ(1, 1, 1) КАК ДатаУвольнения,
ДАТАВРЕМЯ(1, 1, 1) КАК Период
ПОМЕСТИТЬ Представления_КадровыеДанныеСотрудников_Зарплата
ИЗ
ВТИзмеренияДатыДляКадровыеДанныеСотрудников_Зарплата КАК ИзмеренияДаты
ГДЕ
ТолькоРазрешенные = ИСТИНА
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ЗНАЧЕНИЕ(Справочник.СтатьиФинансированияЗарплата.ПустаяСсылка) КАК СтатьяФинансирования,
2 КАК НомерКолонки
ПОМЕСТИТЬ Представления_СвойстваСтатейФинансирования
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
Данные.МесяцНачисления КАК МесяцНачисления,
Данные.Сотрудник КАК Сотрудник,
Данные.ФизическоеЛицо КАК ФизическоеЛицо,
ВЫБОР
КОГДА НАЧАЛОПЕРИОДА(Данные.ДатаНачала, МЕСЯЦ) > Данные.МесяцНачисления
ТОГДА Данные.МесяцНачисления
КОГДА НАЧАЛОПЕРИОДА(Данные.ДатаНачала, МЕСЯЦ) < Данные.МесяцНачисления
ТОГДА НАЧАЛОПЕРИОДА(Данные.ДатаНачала, МЕСЯЦ)
ИНАЧЕ Данные.ДатаНачала
КОНЕЦ КАК ДатаНачала,
ВЫБОР
КОГДА Данные.ВидРасчета = ЗНАЧЕНИЕ(Перечисление.ВидыОсобыхНачисленийИУдержаний.ДоговорРаботыУслуги)
И (Данные.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.ПустаяСсылка)
ИЛИ Данные.ВидЗанятости ЕСТЬ NULL)
ТОГДА ИСТИНА
ИНАЧЕ ЛОЖЬ
КОНЕЦ КАК СотрудникГПХ,
ВЫБОР
КОГДА Данные.МесяцНачисления > КадровыеДанныеСотрудников.ДатаУвольнения
И КадровыеДанныеСотрудников.ДатаУвольнения <> ДАТАВРЕМЯ(1, 1, 1)
ТОГДА ИСТИНА
ИНАЧЕ ЛОЖЬ
КОНЕЦ КАК ЕстьВыплатыПослеУвольнения,
КадровыеДанныеСотрудников.ВидЗанятости КАК ВидЗанятости,
Данные.ДатаУвольнения КАК ДатаУвольнения
ПОМЕСТИТЬ ВТСотрудникиПоДоговорамГПХиВнутренниеСовместители
ИЗ
ОбщиеЗапросыНачисленияУдержанияИтоговая КАК Данные
ЛЕВОЕ СОЕДИНЕНИЕ Представления_КадровыеДанныеСотрудников_Зарплата КАК КадровыеДанныеСотрудников
ПО Данные.Сотрудник.ГоловнойСотрудник = КадровыеДанныеСотрудников.Сотрудник
И (ВЫБОР
КОГДА Данные.ДатаНачала = ДАТАВРЕМЯ(1, 1, 1)
ТОГДА НАЧАЛОПЕРИОДА(КадровыеДанныеСотрудников.Период, МЕСЯЦ) = Данные.МесяцНачисления
ИНАЧЕ КадровыеДанныеСотрудников.Период = Данные.ДатаНачала
КОНЕЦ)
ГДЕ
(Данные.ВидРасчета = ЗНАЧЕНИЕ(Перечисление.ВидыОсобыхНачисленийИУдержаний.ДоговорРаботыУслуги)
И (Данные.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.ПустаяСсылка)
ИЛИ Данные.ВидЗанятости ЕСТЬ NULL)
ИЛИ ВЫБОР
КОГДА Данные.МесяцНачисления > КадровыеДанныеСотрудников.ДатаУвольнения
И КадровыеДанныеСотрудников.ДатаУвольнения <> ДАТАВРЕМЯ(1, 1, 1)
ТОГДА ИСТИНА
ИНАЧЕ ЛОЖЬ
КОНЕЦ
ИЛИ КадровыеДанныеСотрудников.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.ВнутреннееСовместительство))
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ОбщиеЗапросыНачисленияУдержанияИтоговая.Сотрудник КАК Сотрудник,
ОбщиеЗапросыНачисленияУдержанияИтоговая.МесяцНачисления КАК МесяцНачисления,
МАКСИМУМ(ОбщиеЗапросыНачисленияУдержанияИтоговая.ДатаНачала) КАК ДатаНачала,
ОбщиеЗапросыНачисленияУдержанияИтоговая.ФизическоеЛицо КАК ФизическоеЛицо,
ОбщиеЗапросыНачисленияУдержанияИтоговая.ДатаУвольнения КАК ДатаУвольнения
ПОМЕСТИТЬ ВТНачисленияОсновныхСотрудниковСМаксимальнойДатой
ИЗ
ОбщиеЗапросыНачисленияУдержанияИтоговая КАК ОбщиеЗапросыНачисленияУдержанияИтоговая
ГДЕ
(ОбщиеЗапросыНачисленияУдержанияИтоговая.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.ОсновноеМестоРаботы)
ИЛИ ОбщиеЗапросыНачисленияУдержанияИтоговая.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.Совместительство))
СГРУППИРОВАТЬ ПО
ОбщиеЗапросыНачисленияУдержанияИтоговая.Сотрудник,
ОбщиеЗапросыНачисленияУдержанияИтоговая.МесяцНачисления,
ОбщиеЗапросыНачисленияУдержанияИтоговая.ФизическоеЛицо,
ОбщиеЗапросыНачисленияУдержанияИтоговая.ДатаУвольнения
ИНДЕКСИРОВАТЬ ПО
МесяцНачисления,
Сотрудник,
ФизическоеЛицо,
ДатаНачала
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ВТНачисленияОсновныхСотрудниковСМаксимальнойДатой.Сотрудник КАК Сотрудник,
ВТНачисленияОсновныхСотрудниковСМаксимальнойДатой.МесяцНачисления КАК МесяцНачисления,
ВТНачисленияОсновныхСотрудниковСМаксимальнойДатой.ДатаНачала КАК ДатаНачала,
ВТНачисленияОсновныхСотрудниковСМаксимальнойДатой.ФизическоеЛицо КАК ФизическоеЛицо,
ВТНачисленияОсновныхСотрудниковСМаксимальнойДатой.ДатаУвольнения КАК ДатаУвольнения,
ОбщиеЗапросыНачисленияУдержанияИтоговая.ВидЗанятости КАК ВидЗанятости,
ОбщиеЗапросыНачисленияУдержанияИтоговая.ДатаПриема КАК ДатаПриема
ПОМЕСТИТЬ ВТВидыЗанятостиПоМаксимальнойДате
ИЗ
ВТНачисленияОсновныхСотрудниковСМаксимальнойДатой КАК ВТНачисленияОсновныхСотрудниковСМаксимальнойДатой
ВНУТРЕННЕЕ СОЕДИНЕНИЕ ОбщиеЗапросыНачисленияУдержанияИтоговая КАК ОбщиеЗапросыНачисленияУдержанияИтоговая
ПО ВТНачисленияОсновныхСотрудниковСМаксимальнойДатой.Сотрудник = ОбщиеЗапросыНачисленияУдержанияИтоговая.Сотрудник
И ВТНачисленияОсновныхСотрудниковСМаксимальнойДатой.МесяцНачисления = ОбщиеЗапросыНачисленияУдержанияИтоговая.МесяцНачисления
И ВТНачисленияОсновныхСотрудниковСМаксимальнойДатой.ДатаНачала = ОбщиеЗапросыНачисленияУдержанияИтоговая.ДатаНачала
И ВТНачисленияОсновныхСотрудниковСМаксимальнойДатой.ФизическоеЛицо = ОбщиеЗапросыНачисленияУдержанияИтоговая.ФизическоеЛицо
И ВТНачисленияОсновныхСотрудниковСМаксимальнойДатой.ДатаУвольнения = ОбщиеЗапросыНачисленияУдержанияИтоговая.ДатаУвольнения
ИНДЕКСИРОВАТЬ ПО
Сотрудник,
ФизическоеЛицо,
МесяцНачисления,
ДатаНачала
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
СотрудникиПоДоговорамГПХиВнутренниеСовместители.МесяцНачисления КАК МесяцНачисления,
СотрудникиПоДоговорамГПХиВнутренниеСовместители.Сотрудник КАК Сотрудник,
Данные.ВидЗанятости КАК ВидЗанятостиОсновногоСотрудника,
СотрудникиПоДоговорамГПХиВнутренниеСовместители.ДатаНачала КАК ДатаНачала,
ДанныеПоМесяцуНачисления.ВидЗанятости КАК ВидЗанятостиОсновногоСотрудникаПоМесяцуНачисления,
СотрудникиПоДоговорамГПХиВнутренниеСовместители.СотрудникГПХ КАК СотрудникГПХ,
СотрудникиПоДоговорамГПХиВнутренниеСовместители.ЕстьВыплатыПослеУвольнения КАК ЕстьВыплатыПослеУвольнения,
СотрудникиПоДоговорамГПХиВнутренниеСовместители.ВидЗанятости КАК ВидЗанятостиСотрудникаПоДоговоруГПХиВнутреннегоСовместителя
ПОМЕСТИТЬ ВТВидыЗанятостиОсновныхСотрудников
ИЗ
ВТСотрудникиПоДоговорамГПХиВнутренниеСовместители КАК СотрудникиПоДоговорамГПХиВнутренниеСовместители
ЛЕВОЕ СОЕДИНЕНИЕ ВТВидыЗанятостиПоМаксимальнойДате КАК Данные
ПО СотрудникиПоДоговорамГПХиВнутренниеСовместители.ФизическоеЛицо = Данные.ФизическоеЛицо
И (ВЫБОР
КОГДА Данные.МесяцНачисления >= НАЧАЛОПЕРИОДА(Данные.ДатаНачала, МЕСЯЦ)
ТОГДА СотрудникиПоДоговорамГПХиВнутренниеСовместители.ДатаНачала >= Данные.ДатаНачала
ИНАЧЕ СотрудникиПоДоговорамГПХиВнутренниеСовместители.ДатаНачала >= НАЧАЛОПЕРИОДА(Данные.ДатаНачала, МЕСЯЦ)
КОНЕЦ)
И (ВЫБОР
КОГДА СотрудникиПоДоговорамГПХиВнутренниеСовместители.ЕстьВыплатыПослеУвольнения
ТОГДА СотрудникиПоДоговорамГПХиВнутренниеСовместители.Сотрудник = Данные.Сотрудник
ИНАЧЕ СотрудникиПоДоговорамГПХиВнутренниеСовместители.Сотрудник <> Данные.Сотрудник
КОНЕЦ)
И (Данные.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.ОсновноеМестоРаботы)
ИЛИ Данные.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.Совместительство))
И (ВЫБОР
КОГДА Данные.ДатаУвольнения = ДАТАВРЕМЯ(1, 1, 1)
ИЛИ СотрудникиПоДоговорамГПХиВнутренниеСовместители.ЕстьВыплатыПослеУвольнения
ТОГДА СотрудникиПоДоговорамГПХиВнутренниеСовместители.ДатаНачала <= КОНЕЦПЕРИОДА(Данные.ДатаНачала, МЕСЯЦ)
ИНАЧЕ СотрудникиПоДоговорамГПХиВнутренниеСовместители.ДатаНачала <= Данные.ДатаУвольнения
КОНЕЦ)
ЛЕВОЕ СОЕДИНЕНИЕ ВТВидыЗанятостиПоМаксимальнойДате КАК ДанныеПоМесяцуНачисления
ПО СотрудникиПоДоговорамГПХиВнутренниеСовместители.ФизическоеЛицо = ДанныеПоМесяцуНачисления.ФизическоеЛицо
И СотрудникиПоДоговорамГПХиВнутренниеСовместители.МесяцНачисления = ДанныеПоМесяцуНачисления.МесяцНачисления
И СотрудникиПоДоговорамГПХиВнутренниеСовместители.Сотрудник <> ДанныеПоМесяцуНачисления.Сотрудник
И (ДанныеПоМесяцуНачисления.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.ОсновноеМестоРаботы)
ИЛИ ДанныеПоМесяцуНачисления.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.Совместительство))
И (ДанныеПоМесяцуНачисления.ДатаУвольнения = ДАТАВРЕМЯ(1, 1, 1)
ИЛИ НАЧАЛОПЕРИОДА(ДанныеПоМесяцуНачисления.ДатаУвольнения, МЕСЯЦ) >= НАЧАЛОПЕРИОДА(СотрудникиПоДоговорамГПХиВнутренниеСовместители.МесяцНачисления, МЕСЯЦ)
И ДанныеПоМесяцуНачисления.ДатаУвольнения >= СотрудникиПоДоговорамГПХиВнутренниеСовместители.ДатаНачала)
И (СотрудникиПоДоговорамГПХиВнутренниеСовместители.ДатаУвольнения = ДАТАВРЕМЯ(1, 1, 1)
ИЛИ Д��нныеПоМесяцуНачисления.ДатаПриема < СотрудникиПоДоговорамГПХиВнутренниеСовместители.ДатаУвольнения
ИЛИ СотрудникиПоДоговорамГПХиВнутренниеСовместители.ЕстьВыплатыПослеУвольнения)
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
КадровыеДанныеСотрудников.Период КАК Период,
КадровыеДанныеСотрудников.ФизическоеЛицо КАК ФизическоеЛицо,
КадровыеДанныеСотрудников.Организация КАК ОсновнаяОрганизация,
КадровыеДанныеСотрудников.Подразделение КАК ОсновноеПодразделение,
КадровыеДанныеСотрудников.Должность КАК ОсновнаяДолжность,
ВЫБОР
КОГДА &ИспользоватьШтатноеРасписание
ТОГДА КадровыеДанныеСотрудников.ДолжностьПоШтатномуРасписанию
ИНАЧЕ КадровыеДанныеСотрудников.Должность
КОНЕЦ КАК ОсновнаяДолжностьПоШтатномуРасписанию,
КадровыеДанныеСотрудников.ВидЗанятости КАК ВидЗанятости,
ЕСТЬNULL(&ЗарплатаВидДолжностиГосударственнойСлужбы, "") КАК ВидДолжностиГосСлужбы
ПОМЕСТИТЬ ВТОсновныеКадровыеДанныеФизическихЛиц
{ВЫБРАТЬ
ОсновнаяДолжность.* КАК Должность}
ИЗ
Представления_КадровыеДанныеСотрудников_Зарплата КАК КадровыеДанныеСотрудников
ЛЕВОЕ СОЕДИНЕНИЕ ВТВидыЗанятостиОсновныхСотрудников КАК СотрудникиПоДоговорамГПХкакВнутренниеСовместители
ПО КадровыеДанныеСотрудников.Сотрудник = СотрудникиПоДоговорамГПХкакВнутренниеСовместители.Сотрудник
И (НАЧАЛОПЕРИОДА(КадровыеДанныеСотрудников.Период, МЕСЯЦ) = СотрудникиПоДоговорамГПХкакВнутренниеСовместители.МесяцНачисления)
И (КадровыеДанныеСотрудников.ВидЗанятости = ЕСТЬNULL(СотрудникиПоДоговорамГПХкакВнутренниеСовместители.ВидЗанятостиОсновногоСотрудника, СотрудникиПоДоговорамГПХкакВнутренниеСовместители.ВидЗанятостиОсновногоСотрудникаПоМесяцуНачисления))
ГДЕ
КадровыеДанныеСотрудников.ВидЗанятости <> ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.ВнутреннееСовместительство)
И КадровыеДанныеСотрудников.ВидЗанятости <> ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.Подработка)
И ЕСТЬNULL(СотрудникиПоДоговорамГПХкакВнутренниеСовместители.ЕстьВыплатыПослеУвольнения, ЛОЖЬ) = ЛОЖЬ
И ЕСТЬNULL(СотрудникиПоДоговорамГПХкакВнутренниеСовместители.СотрудникГПХ, ЛОЖЬ) = ЛОЖЬ
{ГДЕ
КадровыеДанныеСотрудников.Должность.* КАК Должность}
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ГрафикиРаботыПоВидамВремени.ГрафикРаботы КАК ГрафикРаботы,
ГрафикиРаботыПоВидамВремени.Месяц КАК Месяц,
ГрафикиРаботыПоВидамВремени.ПериодРегистрации КАК ПериодРегистрации,
ГрафикиРаботыПоВидамВремени.ВидУчетаВремени КАК ВидУчетаВремени,
ГрафикиРаботыПоВидамВремени.Дата КАК Дата,
СУММА(ВЫБОР
КОГДА ВТГрафикиРаботСотрудников.ВидРасчета.ЗачетОтработанногоВремени
ИЛИ ВТГрафикиРаботСотрудников.ВидРасчета.КатегорияНачисленияИлиНеоплаченногоВремени = ЗНАЧЕНИЕ(Перечисление.КатегорииНачисленийИНеоплаченногоВремени.ОплатаКомандировки)
ИЛИ ВТГрафикиРаботСотрудников.ВидРасчета.КатегорияНачисленияИлиНеоплаченногоВремени = ЗНАЧЕНИЕ(Перечисление.КатегорииНачисленийИНеоплаченногоВремени.ДенежноеСодержаниеНаПериодКомандировки)
ТОГДА ГрафикиРаботыПоВидамВремени.ДополнительноеЗначение
КОНЕЦ) КАК ДополнительноеЗначение,
ВТГрафикиРаботСотрудников.Сотрудник КАК Сотрудник,
ВТГрафикиРаботСотрудников.ВидРасчета КАК ВидРасчета,
ВТГрафикиРаботСотрудников.ПериодДействияНачало КАК ПериодДействияНачало,
ВТГрафикиРаботСотрудников.ПериодДействияКонец КАК ПериодДействияКонец
ПОМЕСТИТЬ ВТОплачиваемыеНерабочиеЧасы
ИЗ
РегистрСведений.ГрафикиРаботыПоВидамВремени КАК ГрафикиРаботыПоВидамВремени
ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТГрафикиРаботСотрудников КАК ВТГрафикиРаботСотрудников
ПО ГрафикиРаботыПоВидамВремени.ГрафикРаботы = ВТГрафикиРаботСотрудников.ГрафикРаботы
И ГрафикиРаботыПоВидамВремени.ПериодРегистрации = ВТГрафикиРаботСотрудников.ПериодРегистрацииВремени
И ГрафикиРаботыПоВидамВремени.Месяц = ВТГрафикиРаботСотрудников.Месяц
И (ГрафикиРаб��тыПоВидамВремени.Дата МЕЖДУ ВТГрафикиРаботСотрудников.ПериодДействияНачало И ВТГрафикиРаботСотрудников.ПериодДействияКонец)
ГДЕ
&ЕстьНерабочиеПериоды
И ГрафикиРаботыПоВидамВремени.ВидУчетаВремени = &ОплачиваемыеНерабочиеДни
СГРУППИРОВАТЬ ПО
ВТГрафикиРаботСотрудников.ВидРасчета,
ГрафикиРаботыПоВидамВремени.Дата,
ВТГрафикиРаботСотрудников.Сотрудник,
ГрафикиРаботыПоВидамВремени.ВидУчетаВремени,
ГрафикиРаботыПоВидамВремени.ПериодРегистрации,
ГрафикиРаботыПоВидамВремени.ГрафикРаботы,
ГрафикиРаботыПоВидамВремени.Месяц,
ВТГрафикиРаботСотрудников.ПериодДействияНачало,
ВТГрафикиРаботСотрудников.ПериодДействияКонец
ИНДЕКСИРОВАТЬ ПО
ГрафикРаботы,
ПериодРегистрации,
Месяц,
ВидУчетаВремени,
Дата
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
Данные.Сотрудник КАК Сотрудник,
Данные.ФизическоеЛицо КАК ФизическоеЛицо,
Данные.МесяцНачисления КАК МесяцНачисления,
Данные.ПериодДействия КАК ПериодДействия,
ВЫБОР
КОГДА Данные.ВидРасчета = ЗНАЧЕНИЕ(Перечисление.ВидыОсобыхНачисленийИУдержаний.ДоговорРаботыУслуги)
ТОГДА ЕСТЬNULL(ОсновныеКадровыеДанныеФизическихЛиц.ОсновнаяОрганизация, Данные.Организация)
КОГДА Данные.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.ВнутреннееСовместительство)
ИЛИ Данные.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.Подработка)
ТОГДА ЕСТЬNULL(ОсновныеКадровыеДанныеФизическихЛиц.ОсновнаяОрганизация, ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка))
ИНАЧЕ Данные.Организация
КОНЕЦ КАК Организация,
Данные.ГоловнаяОрганизация КАК ГоловнаяОрганизация,
ВЫБОР
КОГДА Данные.ВидРасчета = ЗНАЧЕНИЕ(Перечисление.ВидыОсобыхНачисленийИУдержаний.ДоговорРаботыУслуги)
ТОГДА ЕСТЬNULL(ОсновныеКадровыеДанныеФизическихЛиц.ОсновноеПодразделение, Данные.Подразделение)
КОГДА Данные.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.ВнутреннееСовместительство)
ИЛИ Данные.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.Подработка)
ТОГДА ЕСТЬNULL(ОсновныеКадровыеДанныеФизическихЛиц.ОсновноеПодразделение, ЗНАЧЕНИЕ(Справочник.ПодразделенияОрганизаций.ПустаяСсылка))
ИНАЧЕ Данные.Подразделение
КОНЕЦ КАК ПодразделениеСтатистики,
Данные.ВидДоговора КАК ВидДоговора,
ВЫБОР
КОГДА Данные.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.ОсновноеМестоРаботы)
И Данные.ВидРасчета = ЗНАЧЕНИЕ(Перечисление.ВидыОсобыхНачисленийИУдержаний.ДоговорРаботыУслуги)
ТОГДА ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.ВнутреннееСовместительство)
ИНАЧЕ Данные.ВидЗанятости
КОНЕЦ КАК ВидЗанятости,
КадровыеДанныеСотрудников.Пол КАК Пол,
КадровыеДанныеСотрудников.ВидЗанятости КАК ВидЗанятостиГоловногоСотрудника,
ВЫБОР
КОГДА Данные.ВидРасчета = ЗНАЧЕНИЕ(Перечисление.ВидыОсобыхНачисленийИУдержаний.ДоговорРаботыУслуги)
ТОГДА СотрудникиПоДоговорамГПХкакВнутренниеСовместители.ВидЗанятостиОсновногоСотрудникаПоМесяцуНачисления
ИНАЧЕ ЕСТЬNULL(СотрудникиПоДоговорамГПХкакВнутренниеСовместители.ВидЗанятостиОсновногоСотрудника, СотрудникиПоДоговорамГПХкакВнутренниеСовместители.ВидЗанятостиОсновногоСотрудникаПоМесяцуНачисления)
КОНЕЦ КАК ВидЗанятостиОсновногоСотрудника,
Данные.Должность КАК Должность,
ОсновныеКадровыеДанныеФизическихЛиц.ОсновнаяДолжность КАК ОсновнаяДолжность,
Данные.ВидРасчета КАК ВидРасчета,
ВЫБОР
КОГДА ГОД(&НачалоПериода) > 2019
ТОГДА ВЫБОР
КОГДА (НЕ Данные.ВидРасчета.КатегорияСтатистическогоНаблюдения = ЗНАЧЕНИЕ(Перечисление.КатегорииСтатистическогоНаблюдения.ВыплатаСоциальногоХарактера)
ИЛИ Данные.ВидРасчета В (ЗНАЧЕНИЕ(Перечисление.ВидыОсобыхНачисленийИУдержаний.ДоговорРаботыУслуги), ЗНАЧЕНИЕ(Перечисление.ВидыОсобыхНачисленийИУдержаний.СтоимостьПодарковПризов), ЗНАЧЕНИЕ(Перечисление.ВидыОсобыхНачисленийИУдержаний.КомпенсацияЗаЗадержкуЗарплаты)))
И (Данные.МесяцНачисления МЕЖДУ &НачалоПериода И &КонецПериода)
ТОГДА ЕСТЬNULL(Данные.Сумма, 0)
ИНАЧЕ 0
КОНЕЦ
ИНАЧЕ ВЫБОР
КОГДА (НЕ Данные.ВидРасчета.КатегорияСтатистическогоНаблюдения2019 = ЗНАЧЕНИЕ(Перечисление.КатегорииСтатистическогоНаблюдения.ВыплатаСоциальногоХарактера)
ИЛИ Данные.ВидРасчета В (ЗНАЧЕНИЕ(Перечисление.ВидыОсобыхНачисленийИУдержаний.ДоговорРаботыУслуги), ЗНАЧЕНИЕ(Перечисление.ВидыОсобыхНачисленийИУдержаний.СтоимостьПодарковПризов), ЗНАЧЕНИЕ(Перечисление.ВидыОсобыхНачисленийИУдержаний.КомпенсацияЗаЗадержкуЗарплаты)))
И (Данные.МесяцНачисления МЕЖДУ &НачалоПериода И &КонецПериода)
ТОГДА ЕСТЬNULL(Данные.Сумма, 0)
ИНАЧЕ 0
КОНЕЦ
КОНЕЦ КАК Начисления,
ВЫБОР
КОГДА ГОД(&НачалоПериода) > 2019
ТОГДА ВЫБОР
КОГДА (Данные.ВидРасчета.КатегорияСтатистическогоНаблюдения = ЗНАЧЕНИЕ(Перечисление.КатегорииСтатистическогоНаблюдения.ВыплатаСоциальногоХарактера)
ИЛИ Данные.ВидРасчета В (&ВидыВыплатНаПериодТрудоустройства))
И (Данные.МесяцНачисления МЕЖДУ &НачалоПериода И &КонецПериода)
ТОГДА ЕСТЬNULL(Данные.Сумма, 0)
ИНАЧЕ 0
КОНЕЦ
ИНАЧЕ ВЫБОР
КОГДА (Данные.ВидРасчета.КатегорияСтатистическогоНаблюдения2019 = ЗНАЧЕНИЕ(Перечисление.КатегорииСтатистическогоНаблюдения.ВыплатаСоциальногоХарактера)
ИЛИ Данные.ВидРасчета В (&ВидыВыплатНаПериодТрудоустройства))
И (Данные.МесяцНачисления МЕЖДУ &НачалоПериода И &КонецПериода)
ТОГДА ЕСТЬNULL(Данные.Сумма, 0)
ИНАЧЕ 0
КОНЕЦ
КОНЕЦ КАК НачисленияСоциальногоХарактера,
ВЫБОР
КОГДА Данные.МесяцНачисления МЕЖДУ &НачалоПериода И &КонецПериода
ТОГДА ВЫБОР
КОГДА ПланВидовРасчетаНачисления.ЗачетОтработанногоВремени
ИЛИ ПланВидовРасчетаНачисления.КатегорияНачисленияИлиНеоплаченногоВремени = ЗНАЧЕНИЕ(Перечисление.КатегорииНачисленийИНеоплаченногоВремени.ОплатаКомандировки)
ИЛИ ПланВидовРасчетаНачисления.КатегорияНачисленияИлиНеоплаченногоВремени = ЗНАЧЕНИЕ(Перечисление.КатегорииНачисленийИНеоплаченногоВремени.ДенежноеСодержаниеНаПериодКомандировки)
ТОГДА Данные.ОтработаноДней
ИНАЧЕ 0
КОНЕЦ
ИНАЧЕ 0
КОНЕЦ КАК ОтработаноДней,
ВЫБОР
КОГДА Данные.МесяцНачисления МЕЖДУ &НачалоПериода И &КонецПериода
ТОГДА ВЫБОР
КОГДА (ПланВидовРасчетаНачисления.ЗачетОтработанногоВремени
ИЛИ ПланВидовРасчетаНачисления.КатегорияНачисленияИлиНеоплаченногоВремени = ЗНАЧЕНИЕ(Перечисление.КатегорииНачисленийИНеоплаченногоВремени.ОплатаКомандировки)
ИЛИ ПланВидовРасчетаНачисления.КатегорияНачисленияИлиНеоплаченногоВремени = ЗНАЧЕНИЕ(Перечисление.КатегорииНачисленийИНеоплаченногоВремени.ДенежноеСодержаниеНаПериодКомандировки))
И ПланВидовРасчетаНачисления.ОбозначениеВТабелеУчетаРабочегоВремени <> &КормлениеРебенка
ТОГДА Данные.ОтработаноЧасов
ИНАЧЕ 0
КОНЕЦ
ИНАЧЕ 0
КОНЕЦ КАК ОтработаноЧасов,
ВЫБОР
КОГДА ПланВидовРасчетаНачисления.ЗачетОтработанногоВремени
ИЛИ ПланВидовРасчетаНачисления.КатегорияНачисленияИлиНеоплаченногоВремени = ЗНАЧЕНИЕ(Перечисление.КатегорииНачисленийИНеоплаченногоВремени.ОплатаКомандировки)
ИЛИ ПланВидовРасчетаНачисления.КатегорияНачисленияИлиНеоплаченногоВремени = ЗНАЧЕНИЕ(Перечисление.КатегорииНачисленийИНеоплаченногоВремени.ДенежноеСодержаниеНаПериодКомандировки)
ТОГДА Данные.ОтработаноДней
ИНАЧЕ 0
КОНЕЦ КАК ОтработаноДнейСНачалаГода,
ВЫБОР
КОГДА (ПланВидовРасчетаНачисления.ЗачетОтработанногоВремени
ИЛИ ПланВидовРасчетаНачисления.КатегорияНачисленияИлиНеоплаченногоВремени = ЗНАЧЕНИЕ(Перечисление.КатегорииНачисленийИНеоплаченногоВремени.ОплатаКомандировки)
ИЛИ ПланВидовРасчетаНачисления.КатегорияНачисленияИлиНеоплаченногоВремени = ЗНАЧЕНИЕ(Перечисление.КатегорииНачисленийИНеоплаченногоВремени.ДенежноеСодержаниеНаПериодКомандировки))
И ПланВидовРасчетаНачисления.ОбозначениеВТабелеУчетаРабочегоВремени <> &КормлениеРебенка
ТОГДА Данные.ОтработаноЧасов
ИНАЧЕ 0
КОНЕЦ КАК ОтработаноЧасовСНачалаГода,
ВЫБОР
КОГДА Данные.МесяцНачисления МЕЖДУ &НачалоПериода И &КонецПериода
ТОГДА Данные.ОплаченоДней
ИНАЧЕ 0
КОНЕЦ КАК ОплаченоДней,
ВЫБОР
КОГДА Данные.МесяцНачисления МЕЖДУ &НачалоПериода И &КонецПериода
ТОГДА Данные.ОплаченоЧасов
ИНАЧЕ 0
КОНЕЦ КАК ОплаченоЧасов,
ВЫБОР
КОГДА Данные.МесяцНачисления > КадровыеДанныеСотрудников.ДатаУвольнения
И КадровыеДанныеСотрудников.ДатаУвольнения <> ДАТАВРЕМЯ(1, 1, 1)
ТОГДА ИСТИНА
ИНАЧЕ ЛОЖЬ
КОНЕЦ КАК СотрудникУволен,
СтрокиОтчетностиМониторингаРаботниковСоциальнойСферы.СтрокаОтчетностиМониторингаРаботниковСоциальнойСферы КАК СтрокаОтчетностиМониторингаРаботниковСоциальнойСферы,
Представления_СвойстваСтатейФинансирования.НомерКолонки КАК НомерКолонки,
Данные.Группа КАК Группа,
ЕСТЬNULL(&ЗарплатаВидДолжностиГосударственнойСлужбы, "") КАК ВидДолжностиГосСлужбы,
ВЫБОР
КОГДА ВЫБОР
КОГДА Данные.МесяцНачисления МЕЖДУ &НачалоПериода И &КонецПериода
ТОГДА ВЫБОР
КОГДА ПланВидовРасчетаНачисления.ЗачетОтработанногоВремени
ИЛИ ПланВидовРасчетаНачисления.КатегорияНачисленияИлиНеоплаченногоВремени = ЗНАЧЕНИЕ(Перечисление.КатегорииНачисленийИНеоплаченногоВремени.ОплатаКомандировки)
ИЛИ ПланВидовРасчетаНачисления.КатегорияНачисленияИлиНеоплаченногоВремени = ЗНАЧЕНИЕ(Перечисление.КатегорииНачисленийИНеоплаченногоВремени.ДенежноеСодержаниеНаПериодКомандировки)
ТОГДА Данные.ОтработаноЧасов
ИНАЧЕ 0
КОНЕЦ
ИНАЧЕ 0
КОНЕЦ > 0
ТОГДА ЕСТЬNULL(ВТОплачиваемыеНерабочиеЧасы.ДополнительноеЗначение, 0)
КОГДА ВЫБОР
КОГДА Данные.МесяцНачисления МЕЖДУ &НачалоПериода И &КонецПериода
ТОГДА ВЫБОР
КОГДА ПланВидовРасчетаНачисления.ЗачетОтработанногоВремени
ИЛИ ПланВидовРасчетаНачисления.КатегорияНачисленияИлиНеоплаченногоВремени = ЗНАЧЕНИЕ(Перечисление.КатегорииНачисленийИНеоплаченногоВремени.ОплатаКомандировки)
ИЛИ ПланВидовРасчетаНачисления.КатегорияНачисленияИлиНеоплаченногоВремени = ЗНАЧЕНИЕ(Перечисление.КатегорииНачисленийИНеоплаченногоВремени.ДенежноеСодержаниеНаПериодКомандировки)
ТОГДА Данные.ОтработаноЧасов
ИНАЧЕ 0
КОНЕЦ
ИНАЧЕ 0
КОНЕЦ < 0
ТОГДА ЕСТЬNULL(-ВТОплачиваемыеНерабочиеЧасы.ДополнительноеЗначение, 0)
КОГДА ВЫБОР
КОГДА Данные.МесяцНачисления МЕЖДУ &НачалоПериода И &КонецПериода
ТОГДА ВЫБОР
КОГДА ПланВидовРасчетаНачисления.ЗачетОтработанногоВремени
ИЛИ ПланВидовРасчетаНачисления.КатегорияНачисленияИлиНеоплаченногоВремени = ЗНАЧЕНИЕ(Перечисление.КатегорииНачисленийИНеоплаченногоВремени.ОплатаКомандировки)
ИЛИ ПланВидовРасчетаНачисления.КатегорияНачисленияИлиНеоплаченногоВремени = ЗНАЧЕНИЕ(Перечисление.КатегорииНачисленийИНеоплаченногоВремени.ДенежноеСодержаниеНаПериодКомандировки)
ТОГДА Данные.ОтработаноЧасов
ИНАЧЕ 0
КОНЕЦ
ИНАЧЕ 0
КОНЕЦ = 0
ТОГДА 0
КОНЕЦ КАК ОплачиваемыеНерабочиеЧасы,
СотрудникиПоДоговорамГПХкакВнутренниеСовместители.ВидЗанятостиОсновногоСотрудникаПоМесяцуНачисления КАК ВидЗанятостиОсновногоСотрудникаПоМесяцуНачисления,
ЕСТЬNULL(КадровыеДанныеПриостановленных.Состояние, КадровыеДанныеСотрудников.Состояние) КАК Состояние,
ВЫБОР
КОГДА (Представления_СвойстваСтатейФинансирования.СтатьяФинансирования.КатегорияСтатистическогоНаблюденияЗаКлассноеРуководство
ИЛИ Данные.ВидРасчета.КатегорияСтатистическогоНаблюденияЗаКлассноеРуководство)
И (Данные.МесяцНачисления МЕЖДУ &НачалоПериода И &КонецПериода)
ТОГДА ЕСТЬNULL(Данные.Сумма, 0)
ИНАЧЕ 0
КОНЕЦ КАК НачисленияЗаКлассноеРуководство
ПОМЕСТИТЬ ВТИтоги
{ВЫБРАТЬ
Сотрудник.*,
ФизическоеЛицо.*,
МесяцНачисления КАК МесяцНачисления,
ПериодДействия,
Организация.*,
ПодразделениеСтатистики.*,
ВидДоговора.*,
ВидЗанятости.*,
ВидЗанятостиГоловногоСотрудника.*,
ВидЗанятостиОсновногоСотрудника.*,
ВидРасчета.*,
Должность.*,
ОсновнаяДолжность.*,
Начисления,
НачисленияСоциальногоХарактера,
ОтработаноДней,
ОтработаноЧасов,
ОтработаноДнейСНачалаГода,
ОтработаноЧасовСНачалаГода,
ОплаченоДней,
ОплаченоЧасов,
СотрудникУволен,
СтрокаОтчетностиМониторингаРаботниковСоциальнойСферы.*,
НомерКолонки,
Группа.*}
ИЗ
ОбщиеЗапросыНачисленияУдержанияИтоговая КАК Данные
ЛЕВОЕ СОЕДИНЕНИЕ Представления_СвойстваСтатейФинансирования КАК Представления_СвойстваСтатейФинансирования
ПО Данные.СтатьяФинансирования = Представления_СвойстваСтатейФинансирования.СтатьяФинансирования
ЛЕВОЕ СОЕДИНЕНИЕ Представления_КадровыеДанныеСотрудников_Зарплата КАК КадровыеДанныеПриостановленных
ПО (ВЫБОР
КОГДА Данные.НачислениеЗаТекущийМесяц
ИЛИ Данные.НачислениеЗаБудущийМесяц
ТОГДА Данные.ДатаНачала = КадровыеДанныеПриостановленных.Период
ИНАЧЕ Данные.МесяцНачисления = КадровыеДанныеПриостановленных.Период
КОНЕЦ)
И Данные.Сотрудник.ГоловнойСотрудник = КадровыеДанныеПриостановленных.Сотрудник
И (КадровыеДанныеПриостановленных.Состояние = ЗНАЧЕНИЕ(Перечисление.СостоянияСотрудника.ТрудовойДоговорПриостановлен))
ЛЕВОЕ СОЕДИНЕНИЕ Представления_КадровыеДанныеСотрудников_Зарплата КАК КадровыеДанныеСотрудников
ПО Данные.Сотрудник.ГоловнойСотрудник = КадровыеДанныеСотрудников.Сотрудник
И Данные.ДатаНачала = КадровыеДанныеСотрудников.Период
ЛЕВОЕ СОЕДИНЕНИЕ ВТОсновныеКадровыеДанныеФизическихЛиц КАК ОсновныеКадровыеДанныеФизическихЛиц
ПО Данные.ФизическоеЛицо = ОсновныеКадровыеДанныеФизическихЛиц.ФизическоеЛицо
И (ВЫБОР
КОГДА Данные.ВнутреннееСовместительствоИлиПодработка
И КадровыеДанныеСотрудников.Состояние <> ЗНАЧЕНИЕ(Перечисление.СостоянияСотрудника.РаботаВОтпускеПоУходуЗаРебенком)
ТОГДА ВЫБОР
КОГДА Данные.НачислениеНеСНачалаМесяца
ТОГДА ВЫБОР
КОГДА Данные.НачислениеЗаТекущийМесяц
ТОГДА Данные.ДатаНачала = ОсновныеКадровыеДанныеФизическихЛиц.Период
КОГДА Данные.НачислениеЗаПрошлыйМесяц
ТОГДА КОНЕЦПЕРИОДА(Данные.ДатаНачала, МЕСЯЦ) = ОсновныеКадровыеДанныеФизическихЛиц.Период
КОГДА Данные.НачислениеЗаБудущийМесяц
ТОГДА Данные.МесяцНачисления = ОсновныеКадровыеДанныеФизическихЛиц.Период
КОНЕЦ
ИНАЧЕ ВЫБОР
КОГДА Данные.НачислениеЗаПрошлыйМесяц
ТОГДА Данные.ДатаНачала = ОсновныеКадровыеДанныеФизическихЛиц.Период
ИНАЧЕ КОНЕЦПЕРИОДА(Данные.ДатаНачала, МЕСЯЦ) = ОсновныеКадровыеДанныеФизическихЛиц.Период
КОНЕЦ
КОНЕЦ
КОГДА Данные.ДатаПриема = ДАТАВРЕМЯ(1, 1, 1)
ТОГДА Данные.ДатаНачала = ОсновныеКадровыеДанныеФизическихЛиц.Период
ИНАЧЕ Данные.ДатаНачала = ОсновныеКадровыеДанныеФизическихЛиц.Период
И Данные.ВидЗанятости = ОсновныеКадровыеДанныеФизическихЛиц.ВидЗанятости
КОНЕЦ)
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СтрокиОтчетностиМониторингаРаботниковСоциальнойСферы КАК СтрокиОтчетностиМониторингаРаботниковСоциальнойСферы
ПО (ОсновныеКадровыеДанныеФизическихЛиц.ОсновнаяДолжностьПоШтатномуРасписанию = СтрокиОтчетностиМониторингаРаботниковСоциальнойСферы.Должность)
И (СтрокиОтчетностиМониторингаРаботниковСоциальнойСферы.ВидФормыМониторинга = &ФормаМониторинга)
ЛЕВОЕ СОЕДИНЕНИЕ ПланВидовРасчета.Начисления КАК ПланВидовРасчетаНачисления
ПО Данные.ВидРасчета = ПланВидовРасчетаНачисления.Ссылка
ЛЕВОЕ СОЕДИНЕНИЕ ВТВидыЗанятостиОсновныхСотрудников КАК СотрудникиПоДоговорамГПХкакВнутренниеСовместители
ПО Данные.Сотрудник = СотрудникиПоДоговорамГПХкакВнутренниеСовместители.Сотрудник
И (ВЫБОР
КОГДА НАЧАЛОПЕРИОДА(Данные.ДатаНачала, МЕСЯЦ) > Данные.МесяцНачисления
ТОГДА Данные.МесяцНачисления = СотрудникиПоДоговорамГПХкакВнутренниеСовместители.МесяцНачисления
И Данные.МесяцНачисления = СотрудникиПоДоговорамГПХкакВнутренниеСовместители.ДатаНачала
КОГДА НАЧАЛОПЕРИОДА(Данные.ДатаНачала, МЕСЯЦ) < Данные.МесяцНачисления
ТОГДА НАЧАЛОПЕРИОДА(Данные.ДатаНачала, МЕСЯЦ) = СотрудникиПоДоговорамГПХкакВнутренниеСовместители.ДатаНачала
И Данные.МесяцНачисления = СотрудникиПоДоговорамГПХкакВнутренниеСовместители.МесяцНачисления
ИНАЧЕ Данные.ДатаНачала = СотрудникиПоДоговорамГПХкакВнутренниеСовместители.ДатаНачала
И Данные.МесяцНачисления = СотрудникиПоДоговорамГПХкакВнутренниеСовместители.МесяцНачисления
КОНЕЦ)
И (Данные.ВидЗанятости <> ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.Совместительство)
ИЛИ Данные.ВидЗанятости ЕСТЬ NULL)
И (Данные.ВидЗанятости <> ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.ОсновноеМестоРаботы)
ИЛИ Данные.ВидЗанятости ЕСТЬ NULL)
ЛЕВОЕ СОЕДИНЕНИЕ ВТОплачиваемыеНерабочиеЧасы КАК ВТОплачиваемыеНерабочиеЧасы
ПО Данные.Сотрудник = ВТОплачиваемыеНерабочиеЧасы.Сотрудник
И Данные.ВидРасчета = ВТОплачиваемыеНерабочиеЧасы.ВидРасчета
И Данные.ДатаНачала = ВТОплачиваемыеНерабочиеЧасы.ПериодДействияНачало
ГДЕ
(ЕСТЬNULL(ПланВидовРасчетаНачисления.КатегорияНачисленияИлиНеоплаченногоВремени, НЕОПРЕДЕЛЕНО) <> ЗНАЧЕНИЕ(Перечисление.КатегорииНачисленийИНеоплаченногоВремени.ПособиеПоУходуЗаРебенкомДоТрехЛет)
ИЛИ ЕСТЬNULL(КадровыеДанныеСотрудников.Состояние, НЕОПРЕДЕЛЕНО) = ЗНАЧЕНИЕ(Перечисление.СостоянияСотрудника.РаботаВОтпускеПоУходуЗаРебенком))
И (ВЫБОР
КОГДА ГОД(&НачалоПериода) > 2019
ТОГДА Данные.ВидРасчета.КатегорияСтатистическогоНаблюдения <> ЗНАЧЕНИЕ(Перечисление.КатегорииСтатистическогоНаблюдения.ПустаяСсылка)
ИНАЧЕ Данные.ВидРасчета.КатегорияСтатистическогоНаблюдения2019 <> ЗНАЧЕНИЕ(Перечисление.КатегорииСтатистическогоНаблюдения.ПустаяСсылка)
КОНЕЦ
ИЛИ Данные.ВидРасчета В (ЗНАЧЕНИЕ(Перечисление.ВидыОсобыхНачисленийИУдержаний.КомпенсацияЗаЗадержкуЗарплаты), ЗНАЧЕНИЕ(Перечисление.ВидыОсобыхНачисленийИУдержаний.ДоговорРаботыУслуги), ЗНАЧЕНИЕ(Перечисление.ВидыОсобыхНачисленийИУдержаний.СтоимостьПодарковПризов))
ИЛИ Данные.ВидРасчета В (&ВидыВыплатНаПериодТрудоустройства))
И ЕСТЬNULL(КадровыеДанныеСотрудников.Состояние, НЕОПРЕДЕЛЕНО) <> ЗНАЧЕНИЕ(Перечисление.СостоянияСотрудника.ОтпускПоУходуЗаРебенком)
И ЕСТЬNULL(КадровыеДанныеСотрудников.Состояние, НЕОПРЕДЕЛЕНО) <> ЗНАЧЕНИЕ(Перечисление.СостоянияСотрудника.ОтпускПоБеременностиИРодам)
{ГДЕ
Данные.Сотрудник.*,
Данные.ФизическоеЛицо.*,
Данные.МесяцНачисления КАК МесяцНачисления,
Данные.ПериодДействия,
Данные.ГоловнаяОрганизация.*,
КадровыеДанныеСотрудников.ВидЗанятости.*,
СотрудникиПоДоговорамГПХкакВнутренниеСовместители.ВидЗанятостиОсновногоСотрудника.*,
Данные.Должность.*,
ОсновныеКадровыеДанныеФизическихЛиц.ОсновнаяДолжность.*,
Данные.ВидРасчета.*,
СтрокиОтчетностиМониторингаРаботниковСоциальнойСферы.СтрокаОтчетностиМониторингаРаботниковСоциальнойСферы.*,
Представления_СвойстваСтатейФинансирования.НомерКолонки,
Данные.Группа.*}
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
Итоги.Сотрудник КАК Сотрудник,
Итоги.ФизическоеЛицо КАК ФизическоеЛицо,
Итоги.МесяцНачисления КАК МесяцНачисления,
Итоги.ПериодДействия КАК ПериодДействия,
Итоги.ГоловнаяОрганизация КАК ГоловнаяОрганизация,
Итоги.Организация КАК Организация,
Итоги.ПодразделениеСтатистики КАК ПодразделениеСтатистики,
Итоги.ВидДоговора КАК ВидДоговора,
Итоги.ВидЗанятости КАК ВидЗанятости,
Итоги.ВидЗанятостиГоловногоСотрудника КАК ВидЗанятостиГоловногоСотрудника,
Итоги.ВидЗанятостиОсновногоСотрудника КАК ВидЗанятостиОсновногоСотрудника,
Итоги.Должность КАК Должность,
Итоги.ОсновнаяДолжность КАК ОсновнаяДолжность,
Итоги.ВидРасчета КАК ВидРасчета,
Итоги.Начисления КАК Начисления,
Итоги.ОтработаноДней КАК ОтработаноДней,
Итоги.ОтработаноЧасов КАК ОтработаноЧасов,
Итоги.ОтработаноДнейСНачалаГода КАК ОтработаноДнейСНачалаГода,
Итоги.ОтработаноЧасовСНачалаГода КАК ОтработаноЧасовСНачалаГода,
Итоги.ОплаченоДней КАК ОплаченоДней,
Итоги.ОплаченоЧасов КАК ОплаченоЧасов,
ВЫБОР
КОГДА Итоги.ПодразделениеСтатистики = ЗНАЧЕНИЕ(Справочник.ПодразделенияОрганизаций.ПустаяСсылка)
ИЛИ Итоги.ПодразделениеСтатистики.КодОКВЭД = ""
ТОГДА Итоги.Организация.КодОКВЭД
ИНАЧЕ Итоги.ПодразделениеСтатистики.КодОКВЭД
КОНЕЦ КАК КодОКВЭД,
ВЫБОР
КОГДА Итоги.ПодразделениеСтатистики = ЗНАЧЕНИЕ(Справочник.ПодразделенияОрганизаций.ПустаяСсылка)
ИЛИ Итоги.ПодразделениеСтатистики.КодОКВЭД2 = ""
ТОГДА Итоги.Организация.КодОКВЭД2
ИНАЧЕ Итоги.ПодразделениеСтатистики.КодОКВЭД2
КОНЕЦ КАК КодОКВЭД2,
ВЫБОР
КОГДА Итоги.ПодразделениеСтатистики = ЗНАЧЕНИЕ(Справочник.ПодразделенияОрганизаций.ПустаяСсылка)
ИЛИ Итоги.ПодразделениеСтатистики.КодОКВЭД = ""
ТОГДА Итоги.Организация.НаименованиеОКВЭД
ИНАЧЕ Итоги.ПодразделениеСтатистики.НаименованиеОКВЭД
КОНЕЦ КАК НаименованиеОКВЭД,
ВЫБОР
КОГДА Итоги.ПодразделениеСтатистики = ЗНАЧЕНИЕ(Справочник.ПодразделенияОрганизаций.ПустаяСсылка)
ИЛИ Итоги.ПодразделениеСтатистики.КодОКВЭД2 = ""
ТОГДА Итоги.Организация.НаименованиеОКВЭД2
ИНАЧЕ Итоги.ПодразделениеСтатистики.НаименованиеОКВЭД2
КОНЕЦ КАК НаименованиеОКВЭД2,
Итоги.СотрудникУволен КАК СотрудникУволен,
Итоги.СтрокаОтчетностиМониторингаРаботниковСоциальнойСферы КАК СтрокаОтчетностиМониторингаРаботниковСоциальнойСферы,
Итоги.НомерКолонки КАК НомерКолонки,
Итоги.Группа КАК Группа,
ВЫБОР
КОГДА ЕСТЬNULL(Итоги.ВидЗанятостиОсновногоСотрудника, Итоги.ВидЗанятостиГоловногоСотрудника) = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.ОсновноеМестоРаботы)
И НЕ Итоги.СотрудникУволен
И (НЕ Итоги.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.Совместительство)
ИЛИ Итоги.ВидЗанятости ЕСТЬ NULL)
ТОГДА Итоги.ОтработаноЧасовСНачалаГода - Итоги.ОплачиваемыеНерабочиеЧасы
ИНАЧЕ 0
КОНЕЦ КАК ОтработаноЧасовСНачалаГодаРаботникамиСписочногоСостава,
ВЫБОР
КОГДА ЕСТЬNULL(Итоги.ВидЗанятостиОсновногоСотрудника, Итоги.ВидЗанятостиГоловногоСотрудника) = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.Совместительство)
И НЕ Итоги.СотрудникУволен
ТОГДА Итоги.ОтработаноЧасовСНачалаГода - Итоги.ОплачиваемыеНерабочиеЧасы
ИНАЧЕ 0
КОНЕЦ КАК ОтработаноЧасовСНачалаГодаВнешнимиСовместителями,
ВЫБОР
КОГДА ЕСТЬNULL(Итоги.ВидЗанятостиОсновногоСотрудника, Итоги.ВидЗанятостиГоловногоСотрудника) = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.ОсновноеМестоРаботы)
И НЕ Итоги.СотрудникУволен
И НЕ ЕСТЬNULL(Итоги.Состояние, ЗНАЧЕНИЕ(Перечисление.СостоянияСотрудника.ПустаяСсылка)) = ЗНАЧЕНИЕ(Перечисление.СостоянияСотрудника.ТрудовойДоговорПриостановлен)
И (НЕ Итоги.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.Совместительство)
ИЛИ Итоги.ВидЗанятости ЕСТЬ NULL)
ТОГДА Итоги.Начисления
ИНАЧЕ 0
КОНЕЦ КАК НачисленоРаботникамСписочногоСостава,
ВЫБОР
КОГДА ЕСТЬNULL(Итоги.ВидЗанятостиОсновногоСотрудника, Итоги.ВидЗанятостиГоловногоСотрудника) = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.ОсновноеМестоРаботы)
И НЕ Итоги.СотрудникУволен
И НЕ ЕСТЬNULL(Итоги.Состояние, ЗНАЧЕНИЕ(Перечисление.СостоянияСотрудника.ПустаяСсылка)) = ЗНАЧЕНИЕ(Перечисление.СостоянияСотрудника.ТрудовойДоговорПриостановлен)
И (НЕ Итоги.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.Совместительство)
ИЛИ Итоги.ВидЗанятости ЕСТЬ NULL)
И Итоги.Пол = ЗНАЧЕНИЕ(Перечисление.ПолФизическогоЛица.Мужской)
ТОГДА Итоги.Начисления
ИНАЧЕ 0
КОНЕЦ КАК НачисленоМужчинамСписочногоСостава,
ВЫБОР
КОГДА ЕСТЬNULL(Итоги.ВидЗанятостиОсновногоСотрудника, Итоги.ВидЗанятостиГоловногоСотрудника) = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.ОсновноеМестоРаботы)
И НЕ Итоги.СотрудникУволен
И НЕ ЕСТЬNULL(Итоги.Состояние, ЗНАЧЕНИЕ(Перечисление.СостоянияСотрудника.ПустаяСсылка)) = ЗНАЧЕНИЕ(Перечисление.СостоянияСотрудника.ТрудовойДоговорПриостановлен)
И (НЕ Итоги.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.Совместительство)
ИЛИ Итоги.ВидЗанятости ЕСТЬ NULL)
И Итоги.Пол = ЗНАЧЕНИЕ(Перечисление.ПолФизическогоЛица.Женский)
ТОГДА Итоги.Начисления
ИНАЧЕ 0
КОНЕЦ КАК НачисленоЖенщинамСписочногоСостава,
ВЫБОР
КОГДА (ЕСТЬNULL(Итоги.ВидЗанятостиОсновногоСотрудника, Итоги.ВидЗанятостиГоловногоСотрудника) = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.Совместительство)
ИЛИ Итоги.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.Совместительство)
ИЛИ ЕСТЬNULL(Итоги.ВидЗанятостиОсновногоСотрудника, Итоги.ВидЗанятостиГоловногоСотрудника) = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.Совместительство)
И Итоги.ВидЗанятости ЕСТЬ NULL)
И НЕ Итоги.СотрудникУволен
ТОГДА Итоги.Начисления
ИНАЧЕ 0
КОНЕЦ КАК НачисленоВнешнимСовместителям,
ВЫБОР
КОГДА ЕСТЬNULL(Итоги.ВидЗанятостиОсновногоСотрудника, Итоги.ВидЗанятостиГоловногоСотрудника) В (ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.Совместительство), ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.ОсновноеМестоРаботы))
ИЛИ Итоги.ВидЗанятостиГоловногоСотрудника = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.ВнутреннееСовместительство)
И Итоги.ВидЗанятостиОсновногоСотрудника ЕСТЬ NULL
ТОГДА ВЫБОР
КОГДА Итоги.СотрудникУволен
ИЛИ Итоги.Состояние = ЗНАЧЕНИЕ(Перечисление.СостоянияСотрудника.ТрудовойДоговорПриостановлен)
ТОГДА Итоги.Начисления
ИНАЧЕ 0
КОНЕЦ
ИНАЧЕ ВЫБОР
КОГДА Итоги.ВидРасчета = ЗНАЧЕНИЕ(Перечисление.ВидыОсобыхНачисленийИУдержаний.ДоговорРаботыУслуги)
ТОГДА Итоги.Начисления
ИНАЧЕ 0
КОНЕЦ
КОНЕЦ КАК НачисленоРаботникамПоДоговорамГПХ,
ВЫБОР
КОГДА ЕСТЬNULL(Итоги.ВидЗанятостиОсновногоСотрудника, Итоги.ВидЗанятостиГоловногоСотрудника) = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.ОсновноеМестоРаботы)
И НЕ ЕСТЬNULL(Итоги.Состояние, ЗНАЧЕНИЕ(Перечисление.СостоянияСотрудника.ПустаяСсылка)) = ЗНАЧЕНИЕ(Перечисление.СостоянияСотрудника.ТрудовойДоговорПриостановлен)
И (НЕ Итоги.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.Совместительство)
ИЛИ Итоги.ВидЗанятости ЕСТЬ NULL)
ТОГДА Итоги.Начисления
ИНАЧЕ 0
КОНЕЦ КАК НачисленоРаботникамИУволеннымСписочногоСостава,
ВЫБОР
КОГДА Итоги.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.ВнутреннееСовместительство)
И НЕ ЕСТЬNULL(Итоги.ВидЗанятостиОсновногоСотрудника, Итоги.ВидЗанятостиГоловногоСотрудника) = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.Совместительство)
И НЕ Итоги.СотрудникУволен
ТОГДА Итоги.Начисления
ИНАЧЕ 0
КОНЕЦ КАК НачисленоВнутреннимСовместителям,
Итоги.НачисленияСоциальногоХарактера КАК НачисленияСоциальногоХарактера,
ВЫБОР
КОГДА Итоги.НомерКолонки = 2
И ЕСТЬNULL(Итоги.ВидЗанятостиОсновногоСотрудника, Итоги.ВидЗанятостиГоловногоСотрудника) = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.ОсновноеМестоРаботы)
И НЕ Итоги.СотрудникУволен
И (НЕ Итоги.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.Совместительство)
ИЛИ Итоги.ВидЗанятости ЕСТЬ NULL)
ТОГДА Итоги.Начисления
ИНАЧЕ 0
КОНЕЦ КАК ФОТСписочногоСоставаДоход,
ВЫБОР
КОГДА Итоги.НомерКолонки = 1
И ЕСТЬNULL(Итоги.ВидЗанятостиОсновногоСотрудника, Итоги.ВидЗанятостиГоловногоСотрудника) = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.ОсновноеМестоРаботы)
И НЕ Итоги.СотрудникУволен
И (НЕ Итоги.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.Совместительство)
ИЛИ Итоги.ВидЗанятости ЕСТЬ NULL)
ТОГДА Итоги.Начисления
ИНАЧЕ 0
КОНЕЦ КАК ФОТСписочногоСоставаБюджет,
ВЫБОР
КОГДА Итоги.НомерКолонки = 3
И ЕСТЬNULL(Итоги.ВидЗанятостиОсновногоСотрудника, Итоги.ВидЗанятостиГоловногоСотрудника) = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.ОсновноеМестоРаботы)
И НЕ Итоги.СотрудникУволен
И (НЕ Итоги.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.Совместительство)
ИЛИ Итоги.ВидЗанятости ЕСТЬ NULL)
ТОГДА Итоги.Начисления
ИНАЧЕ 0
КОНЕЦ КАК ФОТСписочногоСоставаОМС,
ВЫБОР
КОГДА Итоги.НомерКолонки = 2
И (Итоги.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.Совместительство)
ИЛИ ЕСТЬNULL(Итоги.ВидЗанятостиОсновногоСотрудника, Итоги.ВидЗанятостиГоловногоСотрудника) = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.Совместительство))
И НЕ Итоги.СотрудникУволен
ТОГДА Итоги.Начисления
ИНАЧЕ 0
КОНЕЦ КАК ФОТВнешнихСовместителейДоход,
ВЫБОР
КОГДА Итоги.НомерКолонки = 1
И (Итоги.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.Совместительство)
ИЛИ ЕСТЬNULL(Итоги.ВидЗанятостиОсновногоСотрудника, Итоги.ВидЗанятостиГоловногоСотрудника) = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.Совместительство))
И НЕ Итоги.СотрудникУволен
ТОГДА Итоги.Начисления
ИНАЧЕ 0
КОНЕЦ КАК ФОТВнешнихСовместителейБюджет,
ВЫБОР
КОГДА Итоги.НомерКолонки = 3
И (Итоги.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.Совместительство)
ИЛИ ЕСТЬNULL(Итоги.ВидЗанятостиОсновногоСотрудника, Итоги.ВидЗанятостиГоловногоСотрудника) = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.Совместительство))
И НЕ Итоги.СотрудникУволен
ТОГДА Итоги.Начисления
ИНАЧЕ 0
КОНЕЦ КАК ФОТВнешнихСовместителейОМС,
ВЫБОР
КОГДА Итоги.ВидЗанятостиГоловногоСотрудника = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.ОсновноеМестоРаботы)
И (Итоги.ВидРасчета.КатегорияНачисленияИлиНеоплаченногоВремени = ЗНАЧЕНИЕ(Перечисление.КатегорииНачисленийИНеоплаченногоВремени.ДоплатаЗаСовмещение)
ИЛИ Итоги.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.Подработка))
ТОГДА Итоги.Начисления
ИНАЧЕ 0
КОНЕЦ КАК НачисленоРаботникамСписочногоСоставаПоСовмещению,
Итоги.ВидДолжностиГосСлужбы КАК ВидДолжностиГосСлужбы,
ВЫБОР
КОГДА ЕСТЬNULL(Итоги.ВидЗанятостиОсновногоСотрудника, Итоги.ВидЗанятостиГоловногоСотрудника) = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.ОсновноеМестоРаботы)
И НЕ Итоги.СотрудникУволен
И (НЕ Итоги.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.Совместительство)
ИЛИ Итоги.ВидЗанятости ЕСТЬ NULL)
ТОГДА Итоги.ОтработаноЧасов - Итоги.ОплачиваемыеНерабочиеЧасы
ИНАЧЕ 0
КОНЕЦ КАК ОтработаноЧасовРаботникамиСписочногоСостава,
ВЫБОР
КОГДА ЕСТЬNULL(Итоги.ВидЗанятостиОсновногоСотрудника, Итоги.ВидЗанятостиГоловногоСотрудника) = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.Совместительство)
И НЕ Итоги.СотрудникУволен
ТОГДА Итоги.ОтработаноЧасов - Итоги.ОплачиваемыеНерабочиеЧасы
ИНАЧЕ 0
КОНЕЦ КАК ОтработаноЧасовВнешнимиСовместителями,
ВЫБОР
КОГДА Итоги.НомерКолонки = 1
И ЕСТЬNULL(Итоги.ВидЗанятостиОсновногоСотрудника, Итоги.ВидЗанятостиГоловногоСотрудника) = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.ОсновноеМестоРаботы)
И НЕ Итоги.СотрудникУволен
И (НЕ Итоги.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.Совместительство)
ИЛИ Итоги.ВидЗанятости ЕСТЬ NULL)
ТОГДА Итоги.НачисленияЗаКлассноеРуководство
ИНАЧЕ 0
КОНЕЦ КАК ФОТСписочногоСоставаБюджетЗаКлассноеРуководство
{ВЫБРАТЬ
ГоловнаяОрганизация.*,
Сотрудник.*,
ФизическоеЛицо.*,
МесяцНачисления,
ПериодДействия,
Организация.*,
ПодразделениеСтатистики.*,
ВидДоговора.*,
ВидЗанятости.*,
ВидЗанятостиГоловногоСотрудника.*,
ВидЗанятостиОсновногоСотрудника.*,
Должность.*,
ОсновнаяДолжность.*,
ВидРасчета.*,
Начисления,
ОтработаноДней,
ОтработаноЧасов,
ОтработаноДнейСНачалаГода,
ОтработаноЧасовСНачалаГода,
ОплаченоДней,
ОплаченоЧасов,
КодОКВЭД,
КодОКВЭД2,
НаименованиеОКВЭД,
НаименованиеОКВЭД2,
СотрудникУволен,
СтрокаОтчетностиМониторингаРаботниковСоциальнойСферы.*,
НомерКолонки,
Группа.*,
ОтработаноЧасовСНачалаГодаРаботникамиСписочногоСостава,
ОтработаноЧасовСНачалаГодаВнешнимиСовместителями,
НачисленоРаботникамСписочногоСостава,
НачисленоМужчинамСписочногоСостава,
НачисленоЖенщинамСписочногоСостава,
НачисленоВнешнимСовместителям,
НачисленоРаботникамПоДоговорамГПХ,
НачисленоРаботникамИУволеннымСписочногоСостава,
НачисленоВнутреннимСовместителям,
НачисленияСоциальногоХарактера,
ФОТСписочногоСоставаДоход,
ФОТСписочногоСоставаБюджет,
ФОТСписочногоСоставаОМС,
ФОТВнешнихСовместителейДоход,
ФОТВнешнихСовместителейБюджет,
ФОТВнешнихСовместителейОМС,
НачисленоРаботникамСписочногоСоставаПоСовмещению,
ВидДолжностиГосСлужбы,
ОтработаноЧасовРаботникамиСписочногоСостава,
ОтработаноЧасовВнешнимиСовместителями,
ФОТСписочногоСоставаБюджетЗаКлассноеРуководство}
ИЗ
ВТИтоги КАК Итоги
{ГДЕ
Итоги.Сотрудник.*,
Итоги.ФизическоеЛицо.*,
Итоги.МесяцНачисления,
Итоги.ПериодДействия,
Итоги.ГоловнаяОрганизация.*,
Итоги.Организация.*,
Итоги.ПодразделениеСтатистики.*,
Итоги.ВидДоговора.*,
Итоги.ВидЗанятости.*,
Итоги.ВидЗанятостиГоловногоСотрудника.*,
Итоги.ВидЗанятостиОсновногоСотрудника.*,
Итоги.Должность.*,
Итоги.ОсновнаяДолжность.*,
Итоги.ВидРасчета.*,
Итоги.Начисления,
Итоги.НачисленияСоциальногоХарактера,
Итоги.ОтработаноДней,
Итоги.ОтработаноЧасов,
Итоги.ОтработаноДнейСНачалаГода,
Итоги.ОтработаноЧасовСНачалаГода,
Итоги.ОплаченоДней,
Итоги.ОплаченоЧасов,
Итоги.СотрудникУволен,
Итоги.СтрокаОтчетностиМониторингаРаботниковСоциальнойСферы.*,
Итоги.НомерКолонки,
Итоги.Группа.*,
Итоги.ВидДолжностиГосСлужбы}Хорошо, взял реальный запрос, поставив точку остановки. А запросик-то не маленький (не для ЗУП, конечно) — полторы тысячи строк.
Ещё очень длинный запрос - фактический
ВЫБРАТЬ
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), МЕСЯЦ)
ТОГДА &ОкончаниеИнтервалаПредставленияПериоды
ИНАЧЕ &КонецПериода
КОНЕЦ
;
////////////////////////////////////////////////////////////////////////////////
УНИЧТОЖИТЬ ВТЦифры
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
НАЧАЛОПЕРИОДА(НачисленияИУдержания.Период, МЕСЯЦ) КАК МесяцНачисления,
НачисленияИУдержания.Период КАК Период,
НачисленияИУдержания.ФизическоеЛицо КАК ФизическоеЛицо,
НачисленияИУдержания.СтатьяФинансирования КАК СтатьяФинансирования,
НачисленияИУдержания.СтатьяРасходов КАК СтатьяРасходов,
НачисленияИУдержания.Подразделение КАК Подразделение,
НачисленияИУдержания.ГруппаНачисленияУдержанияВыплаты КАК Группа,
НачисленияИУдержания.НачислениеУдержание КАК ВидРасчета,
НачисленияИУдержания.Организация КАК Организация,
НачисленияИУдержания.Сотрудник КАК Сотрудник,
НачисленияИУдержания.ДатаНачала КАК ДатаНачала,
НачисленияИУдержания.Регистратор КАК Регистратор,
НачисленияИУдержания.ДокументОснование КАК ДокументОснование,
НачисленияИУдержания.ИдентификаторСтроки КАК ИдентификаторСтроки,
ИСТИНА КАК НачислениеТекущегоПериода
ПОМЕСТИТЬ ВТНачисленияИУдержанияБезКадровыхДанных
ИЗ
РегистрНакопления.НачисленияУдержанияПоСотрудникам КАК НачисленияИУдержания
ГДЕ
НачисленияИУдержания.Период МЕЖДУ &НачалоПериода И &КонецПериода
И НЕ НачисленияИУдержания.Регистратор В (&ИсключаемыеСсылки)
И НачисленияИУдержания.Организация.ГоловнаяОрганизация = &П7
СГРУППИРОВАТЬ ПО
НачисленияИУдержания.Период,
НачисленияИУдержания.ФизическоеЛицо,
НачисленияИУдержания.СтатьяФинансирования,
НачисленияИУдержания.СтатьяРасходов,
НачисленияИУдержания.Подразделение,
НачисленияИУдержания.ГруппаНачисленияУдержанияВыплаты,
НачисленияИУдержания.НачислениеУдержание,
НачисленияИУдержания.Организация,
НачисленияИУдержания.Сотрудник,
НачисленияИУдержания.ДатаНачала,
НачисленияИУдержания.Регистратор,
НАЧАЛОПЕРИОДА(НачисленияИУдержания.Период, МЕСЯЦ),
НачисленияИУдержания.ДокументОснование,
НачисленияИУдержания.ИдентификаторСтроки
ОБЪЕДИНИТЬ
ВЫБРАТЬ РАЗЛИЧНЫЕ
НАЧАЛОПЕРИОДА(НачисленияИУдержания.ПериодДействия, МЕСЯЦ),
НачисленияИУдержания.Период,
НачисленияИУдержания.ФизическоеЛицо,
НачисленияИУдержания.СтатьяФинансирования,
НачисленияИУдержания.СтатьяРасходов,
НачисленияИУдержания.Подразделение,
НачисленияИУдержания.ГруппаНачисленияУдержанияВыплаты,
НачисленияИУдержания.НачислениеУдержание,
НачисленияИУдержания.Организация,
НачисленияИУдержания.Сотрудник,
НачисленияИУдержания.ДатаНачала,
НачисленияИУдержания.Регистратор,
НачисленияИУдержания.ДокументОснование,
НачисленияИУдержания.ИдентификаторСтроки,
ЛОЖЬ
ИЗ
РегистрНакопления.НачисленияУдержанияПоСотрудникам КАК НачисленияИУдержания
ГДЕ
НачисленияИУдержания.ПериодДействия МЕЖДУ &НачалоПериода И &КонецПериода
И НЕ НачисленияИУдержания.Регистратор В (&ИсключаемыеСсылки)
И НачисленияИУдержания.ПериодДействия <> НачисленияИУдержания.Период
И НачисленияИУдержания.Организация.ГоловнаяОрганизация = &П7
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
НачисленияИУдержания.Сотрудник КАК Сотрудник,
КОНЕЦПЕРИОДА(НачисленияИУдержания.Период, МЕСЯЦ) КАК Период
ПОМЕСТИТЬ ВТВсеСотрудникиСПериодом
ИЗ
ВТНачисленияИУдержанияБезКадровыхДанных КАК НачисленияИУдержания
ОБЪЕДИНИТЬ
ВЫБРАТЬ РАЗЛИЧНЫЕ
НачисленияИУдержания.Сотрудник,
НачисленияИУдержания.ДатаНачала
ИЗ
ВТНачисленияИУдержанияБезКадровыхДанных КАК НачисленияИУдержания
ГДЕ
НачисленияИУдержания.ДатаНачала <> ДАТ��ВРЕМЯ(1, 1, 1)
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
ОстаткиИОбороты.Сотрудник КАК Сотрудник,
Месяцы.Период КАК Месяц
ПОМЕСТИТЬ ВТСотрудникиМесяцы
ИЗ
ВТВсеСотрудникиСПериодом КАК ОстаткиИОбороты
ЛЕВОЕ СОЕДИНЕНИЕ ПредставленияПериоды КАК Месяцы
ПО (ИСТИНА)
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
ВсеСотрудникиСПериодом.Сотрудник КАК Сотрудник,
ВсеСотрудникиСПериодом.Период КАК Период
ПОМЕСТИТЬ ВТВсеПериодомКадровыхДанных
ИЗ
ВТВсеСотрудникиСПериодом КАК ВсеСотрудникиСПериодом
ОБЪЕДИНИТЬ
ВЫБРАТЬ РАЗЛИЧНЫЕ
СотрудникиМесяцы.Сотрудник,
СотрудникиМесяцы.Месяц
ИЗ
ВТСотрудникиМесяцы КАК СотрудникиМесяцы
ОБЪЕДИНИТЬ
ВЫБРАТЬ РАЗЛИЧНЫЕ
СотрудникиМесяцы.Сотрудник,
КОНЕЦПЕРИОДА(СотрудникиМесяцы.Месяц, МЕСЯЦ)
ИЗ
ВТСотрудникиМесяцы КАК СотрудникиМесяцы
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
ТаблицаОтборов.Период КАК Период,
ТаблицаОтборов.Сотрудник КАК Сотрудник
ПОМЕСТИТЬ ВТОтборовРазличныхСотрудников
ИЗ
ВТВсеПериодомКадровыхДанных КАК ТаблицаОтборов
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Сотрудники КАК СправочникСотрудники
ПО ТаблицаОтборов.Сотрудник = СправочникСотрудники.Ссылка
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
РегистрСведений.Сотрудник КАК Сотрудник,
ИзмеренияДаты.Период КАК Период,
РегистрСведений.ВидЗанятости КАК ВидЗанятости
ПОМЕСТИТЬ ВТСведенияОВидахЗанятостиСотрудников
ИЗ
ВТОтборовРазличныхСотрудников КАК ИзмеренияДаты
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ВидыЗанятостиСотрудниковИнтервальный КАК РегистрСведений
ПО (РегистрСведений.ДатаНачала <= ВЫБОР
КОГДА ИзмеренияДаты.Период = ДАТАВРЕМЯ(1, 1, 1)
ТОГДА ДАТАВРЕМЯ(3999, 12, 31, 23, 59, 59)
ИНАЧЕ КОНЕЦПЕРИОДА(ИзмеренияДаты.Период, ДЕНЬ)
КОНЕЦ)
И (РегистрСведений.ДатаОкончания >= ВЫБОР
КОГДА ИзмеренияДаты.Период = ДАТАВРЕМЯ(1, 1, 1)
ТОГДА ДАТАВРЕМЯ(3999, 12, 31, 23, 59, 59)
ИНАЧЕ КОНЕЦПЕРИОДА(ИзмеренияДаты.Период, ДЕНЬ)
КОНЕЦ)
И (РегистрСведений.Сотрудник = ИзмеренияДаты.Сотрудник)
ИНДЕКСИРОВАТЬ ПО
Сотрудник
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ИзмеренияДаты.Сотрудник КАК Сотрудник,
ИзмеренияДаты.Период КАК Период
ПОМЕСТИТЬ ВТСведенияКадровойИсторииСотрудников
ИЗ
ВТОтборовРазличныхСотрудников КАК ИзмеренияДаты
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КадроваяИсторияСотрудниковИнтервальный КАК РегистрСведений
ПО (РегистрСведений.ДатаНачала <= ВЫБОР
КОГДА ИзмеренияДаты.Период = ДАТАВРЕМЯ(1, 1, 1)
ТОГДА ДАТАВРЕМЯ(3999, 12, 31, 23, 59, 59)
ИНАЧЕ КОНЕЦПЕРИОДА(ИзмеренияДаты.Период, ДЕНЬ)
КОНЕЦ)
И (РегистрСведений.ДатаОкончания >= ВЫБОР
КОГДА ИзмеренияДаты.Период = ДАТАВРЕМЯ(1, 1, 1)
ТОГДА ДАТАВРЕМЯ(3999, 12, 31, 23, 59, 59)
ИНАЧЕ КОНЕЦПЕРИОДА(ИзмеренияДаты.Период, ДЕНЬ)
КОНЕЦ)
И (РегистрСведений.Сотрудник = ИзмеренияДаты.Сотрудник)
И (РегистрСведений.ФизическоеЛицо = ИзмеренияДаты.Сотрудник.ФизическоеЛицо)
ИНДЕКСИРОВАТЬ ПО
Сотрудник
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ТаблицаОтборов.Период КАК Период,
ТаблицаОтборов.Сотрудник КАК Сотрудник,
СведенияОВидахЗанятостиСотрудников.ВидЗанятости КАК ВидЗанятости
ПОМЕСТИТЬ ПредставленияКадровыеДанныеСотрудников
ИЗ
ВТОтборовРазличныхСотрудников КАК ТаблицаОтборов
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ТекущиеКадровыеДанныеСотрудников КАК ТекущиеКадровыеДанныеСотрудников
ПО ТаблицаОтборов.Сотрудник = ТекущиеКадровыеДанныеСотрудников.Сотрудник
ЛЕВОЕ СОЕДИНЕНИЕ ВТСведенияКадровойИсторииСотрудников КАК КадроваяИсторияСотрудников
ПО ТаблицаОтборов.Сотрудник = КадроваяИсторияСотрудников.Сотрудник
И ТаблицаОтборов.Период = КадроваяИсторияСотрудников.Период
ЛЕВОЕ СОЕДИНЕНИЕ ВТСведенияОВидахЗанятостиСотрудников КАК СведенияОВидахЗанятостиСотрудников
ПО ТаблицаОтборов.Сотрудник = СведенияОВидахЗанятостиСотрудников.Сотрудник
И ТаблицаОтборов.Период = СведенияОВидахЗанятостиСотрудников.Период
;
////////////////////////////////////////////////////////////////////////////////
УНИЧТОЖИТЬ ВТСведенияКадровойИсторииСотрудников
;
////////////////////////////////////////////////////////////////////////////////
УНИЧТОЖИТЬ ВТСведенияОВидахЗанятостиСотрудников
;
////////////////////////////////////////////////////////////////////////////////
УНИЧТОЖИТЬ ВТОтборовРазличныхСотрудников
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
КадровыеДанныеСотрудников.Период КАК Период,
КадровыеДанныеСотрудников.Сотрудник КАК Сотрудник,
КадровыеДанныеСотрудников.ВидЗанятости КАК ВидЗанятости
ПОМЕСТИТЬ ПредставленияКадровыеДанныеСотрудниковАнализНачисленийИУдержаний
ИЗ
ПредставленияКадровыеДанныеСотрудников КАК КадровыеДанныеСотрудников
ИНДЕКСИРОВАТЬ ПО
Сотрудник
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
НачисленияИУдержания.МесяцНачисления КАК МесяцНачисления,
НачисленияИУдержания.ФизическоеЛицо КАК ФизическоеЛицо,
НачисленияИУдержания.СтатьяФинансирования КАК СтатьяФинансирования,
НачисленияИУдержания.СтатьяРасходов КАК СтатьяРасходов,
НачисленияИУдержания.Подразделение КАК Подразделение,
НачисленияИУдержания.Группа КАК Группа,
НачисленияИУдержания.ВидРасчета КАК ВидРасчета,
НачисленияИУдержания.Организация КАК Организация,
НачисленияИУдержания.Сотрудник КАК Сотрудник,
НачисленияИУдержания.ДатаНачала КАК ДатаНачала,
НачисленияИУдержания.Регистратор КАК Регистратор,
КадровыеДанныеСотрудников.ВидЗанятости КАК ВидЗанятости,
НачисленияИУдержания.ДокументОснование КАК ДокументОснование,
НачисленияИУдержания.ИдентификаторСтроки КАК ИдентификаторСтроки,
НачисленияИУдержания.НачислениеТекущегоПериода КАК НачислениеТекущегоПериода
ПОМЕСТИТЬ ВТНачисленияИУдержанияСКадровымиДанными
ИЗ
ВТНачисленияИУдержанияБезКадровыхДанных КАК НачисленияИУдержания
ЛЕВОЕ СОЕДИНЕНИЕ ПредставленияКадровыеДанныеСотрудниковАнализНачисленийИУдержаний КАК КадровыеДанныеСотрудников
ПО НачисленияИУдержания.Сотрудник = КадровыеДанныеСотрудников.Сотрудник
И (ВЫБОР
КОГДА НачисленияИУдержания.ДатаНачала = ДАТАВРЕМЯ(1, 1, 1)
ТОГДА КОНЕЦПЕРИОДА(НачисленияИУдержания.Период, МЕСЯЦ)
ИНАЧЕ НачисленияИУдержания.ДатаНачала
КОНЕЦ = КадровыеДанныеСотрудников.Период)
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
НАЧАЛОПЕРИОДА(ОтработанноеВремя.Период, МЕСЯЦ) КАК МесяцНачисления,
ОтработанноеВремя.Регистратор КАК Регистратор,
ОтработанноеВремя.Сотрудник КАК Сотрудник,
ОтработанноеВремя.Организация КАК Организация,
ОтработанноеВремя.Подразделение КАК Подразделение,
ОтработанноеВремя.Начисление КАК ВидРасчета,
ОтработанноеВремя.ДокументОснование КАК ДокументОснование,
ОтработанноеВремя.ИдентификаторСтроки КАК ИдентификаторСтроки,
ВЫБОР
КОГДА ОтработанноеВремя.Период = ОтработанноеВремя.ПериодДействия
ТОГДА ОтработанноеВремя.ОтработаноЧасов
ИНАЧЕ 0
КОНЕЦ КАК ОтработаноЧасовВПериоде
ПОМЕСТИТЬ ВТПериодыОтработанноеВремяСКорректировками
ИЗ
РегистрНакопления.ОтработанноеВремяПоСотрудникам КАК ОтработанноеВремя
ГДЕ
ОтработанноеВремя.Период МЕЖДУ &НачалоПериода И &КонецПериода
И ОтработанноеВремя.Организация = &П6
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
НАЧАЛОПЕРИОДА(ОтработанноеВремя.Период, МЕСЯЦ),
ОтработанноеВремя.Регистратор,
ОтработанноеВремя.Сотрудник,
ОтработанноеВремя.Организация,
ОтработанноеВремя.Подразделение,
ОтработанноеВремя.Начисление,
ОтработанноеВремя.ДокументОснование,
ОтработанноеВремя.ИдентификаторСтроки,
NULL
ИЗ
РегистрНакопления.ОтработанноеВремяПоСотрудникамКорректировка КАК ОтработанноеВремя
ГДЕ
ОтработанноеВремя.Период МЕЖДУ &НачалоПериода И &КонецПериода
И ОтработанноеВремя.Организация = &П6
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
НАЧАЛОПЕРИОДА(ОтработанноеВремя.ПериодДействия, МЕСЯЦ),
ОтработанноеВремя.Регистратор,
ОтработанноеВремя.Сотрудник,
ОтработанноеВремя.Организация,
ОтработанноеВремя.Подразделение,
ОтработанноеВремя.Начисление,
ОтработанноеВремя.ДокументОснование,
ОтработанноеВремя.ИдентификаторСтроки,
ОтработанноеВремя.ОтработаноЧасов
ИЗ
РегистрНакопления.ОтработанноеВремяПоСотрудникам КАК ОтработанноеВремя
ГДЕ
ОтработанноеВремя.ПериодДействия МЕЖДУ &НачалоПериода И &КонецПериода
И ОтработанноеВремя.Период <> ОтработанноеВремя.ПериодДействия
И ОтработанноеВремя.Организация = &П6
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
НАЧАЛОПЕРИОДА(ОтработанноеВремя.ПериодДействия, МЕСЯЦ),
ОтработанноеВремя.Регистратор,
ОтработанноеВремя.Сотрудник,
ОтработанноеВремя.Организация,
ОтработанноеВремя.Подразделение,
ОтработанноеВремя.Начисление,
ОтработанноеВремя.ДокументОснование,
ОтработанноеВремя.ИдентификаторСтроки,
0
ИЗ
РегистрНакопления.ОтработанноеВремяПоСотрудникамКорректировка КАК ОтработанноеВремя
ГДЕ
ОтработанноеВремя.ПериодДействия МЕЖДУ &НачалоПериода И &КонецПериода
И ОтработанноеВремя.Период <> ОтработанноеВремя.ПериодДействия
И ОтработанноеВремя.Организация = &П6
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ОтработанноеВремяВПериодахСКорректировками.МесяцНачисления КАК МесяцНачисления,
ОтработанноеВремяВПериодахСКорректировками.Регистратор КАК Регистратор,
ОтработанноеВремяВПериодахСКорректировками.Сотрудник КАК Сотрудник,
ОтработанноеВремяВПериодахСКорректировками.Организация КАК Организация,
ОтработанноеВремяВПериодахСКорректировками.Подразделение КАК Подразделение,
ОтработанноеВремяВПериодахСКорректировками.ВидРасчета КАК ВидРасчета,
ОтработанноеВремяВПериодахСКорректировками.ДокументОснование КАК ДокументОснование,
ОтработанноеВремяВПериодахСКорректировками.ИдентификаторСтроки КАК ИдентификаторСтроки,
СУММА(ОтработанноеВремяВПериодахСКорректировками.ОтработаноЧасовВПериоде) КАК ОтработаноЧасовВПериоде
ПОМЕСТИТЬ ВТПериодыОтработанноеВремя
ИЗ
ВТПериодыОтработанноеВремяСКорректировками КАК ОтработанноеВремяВПериодахСКорректировками
СГРУППИРОВАТЬ ПО
ОтработанноеВремяВПериодахСКорректировками.МесяцНачисления,
ОтработанноеВремяВПериодахСКорректировками.Регистратор,
ОтработанноеВремяВПериодахСКорректировками.Сотрудник,
ОтработанноеВремяВПериодахСКорректировками.Подразделение,
ОтработанноеВремяВПериодахСКорректировками.ВидРасчета,
ОтработанноеВремяВПериодахСКорректировками.ДокументОснование,
ОтработанноеВремяВПериодахСКорректировками.ИдентификаторСтроки,
ОтработанноеВремяВПериодахСКорректировками.Организация
;
////////////////////////////////////////////////////////////////////////////////
УНИЧТОЖИТЬ ВТПериодыОтработанноеВремяСКорректировками
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ОтработанноеВремя.МесяцНачисления КАК МесяцНачисления,
ОтработанноеВремя.Регистратор КАК Регистратор,
ОтработанноеВремя.Сотрудник КАК Сотрудник,
ОтработанноеВремя.Организация КАК Организация,
ОтработанноеВремя.Подразделение КАК Подразделение,
ОтработанноеВремя.ВидРасчета КАК ВидРасчета,
ОтработанноеВремя.ДокументОснование КАК ДокументОснование,
ОтработанноеВремя.ИдентификаторСтроки КАК ИдентификаторСтроки,
ОтработанноеВремя.ОтработаноЧасовВПериоде КАК ОтработаноЧасовВПериоде,
НачисленияИУдержания.СтатьяФинансирования КАК СтатьяФинансирования,
НачисленияИУдержания.СтатьяРасходов КАК СтатьяРасходов
ПОМЕСТИТЬ ВТНачисленияОтработанноеВремя
ИЗ
ВТПериодыОтработанноеВремя КАК ОтработанноеВремя
ЛЕВОЕ СОЕДИНЕНИЕ ВТНачисленияИУдержанияБезКадровыхДанных КАК НачисленияИУдержания
ПО ОтработанноеВремя.МесяцНачисления = НачисленияИУдержания.МесяцНачисления
И ОтработанноеВремя.Регистратор = НачисленияИУдержания.Регистратор
И ОтработанноеВремя.Сотрудник = НачисленияИУдержания.Сотрудник
И ОтработанноеВремя.Организация = НачисленияИУдержания.Организация
И ОтработанноеВремя.Подразделение = НачисленияИУдержания.Подразделение
И ОтработанноеВремя.ВидРасчета = НачисленияИУдержания.ВидРасчета
И ОтработанноеВремя.ИдентификаторСтроки = НачисленияИУдержания.ИдентификаторСтроки
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ОтработанноеВремя.МесяцНачисления КАК МесяцНачисления,
ОтработанноеВремя.Регистратор КАК Регистратор,
ОтработанноеВремя.Сотрудник КАК Сотрудник,
ОтработанноеВремя.Подразделение КАК Подразделение,
ОтработанноеВремя.ВидРасчета КАК ВидРасчета,
ОтработанноеВремя.ИдентификаторСтроки КАК ИдентификаторСтроки,
МИНИМУМ(ОтработанноеВремя.СтатьяФинансирования) КАК СтатьяФинансирования
ПОМЕСТИТЬ ВТСтатьяФинансированияОтработанноеВремя
ИЗ
ВТНачисленияОтработанноеВремя КАК ОтработанноеВремя
СГРУППИРОВАТЬ ПО
ОтработанноеВремя.МесяцНачисления,
ОтработанноеВремя.Регистратор,
ОтработанноеВремя.Сотрудник,
ОтработанноеВремя.Подразделение,
ОтработанноеВремя.ВидРасчета,
ОтработанноеВремя.ИдентификаторСтроки
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ОтработанноеВремя.МесяцНачисления КАК МесяцНачисления,
ОтработанноеВремя.Регистратор КАК Регистратор,
ОтработанноеВремя.Сотрудник КАК Сотрудник,
ОтработанноеВремя.Организация КАК Организация,
ОтработанноеВремя.Подразделение КАК Подразделение,
ОтработанноеВремя.ВидРасчета КАК ВидРасчета,
ОтработанноеВремя.ДокументОснование КАК ДокументОснование,
ОтработанноеВремя.ИдентификаторСтроки КАК ИдентификаторСтроки,
ОтработанноеВремя.ОтработаноЧасовВПериоде КАК ОтработаноЧасовВПериоде,
ОтработанноеВремя.СтатьяФинансирования КАК СтатьяФинансирования,
МИНИМУМ(ОтработанноеВремя.СтатьяРас��одов) КАК СтатьяРасходов
ПОМЕСТИТЬ ПредставленияОтработанноеВремя
ИЗ
ВТНачисленияОтработанноеВремя КАК ОтработанноеВремя
ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТСтатьяФинансированияОтработанноеВремя КАК ОтработанноеВремяСоСтатьейФинансирования
ПО ОтработанноеВремя.МесяцНачисления = ОтработанноеВремяСоСтатьейФинансирования.МесяцНачисления
И ОтработанноеВремя.Регистратор = ОтработанноеВремяСоСтатьейФинансирования.Регистратор
И ОтработанноеВремя.Сотрудник = ОтработанноеВремяСоСтатьейФинансирования.Сотрудник
И ОтработанноеВремя.Подразделение = ОтработанноеВремяСоСтатьейФинансирования.Подразделение
И ОтработанноеВремя.ВидРасчета = ОтработанноеВремяСоСтатьейФинансирования.ВидРасчета
И ОтработанноеВремя.СтатьяФинансирования = ОтработанноеВремяСоСтатьейФинансирования.СтатьяФинансирования
И ОтработанноеВремя.ИдентификаторСтроки = ОтработанноеВремяСоСтатьейФинансирования.ИдентификаторСтроки
СГРУППИРОВАТЬ ПО
ОтработанноеВремя.МесяцНачисления,
ОтработанноеВремя.Регистратор,
ОтработанноеВремя.Сотрудник,
ОтработанноеВремя.Подразделение,
ОтработанноеВремя.ВидРасчета,
ОтработанноеВремя.СтатьяФинансирования,
ОтработанноеВремя.ДокументОснование,
ОтработанноеВремя.ИдентификаторСтроки,
ОтработанноеВремя.Организация,
ОтработанноеВремя.ОтработаноЧасовВПериоде
;
////////////////////////////////////////////////////////////////////////////////
УНИЧТОЖИТЬ ВТПериодыОтработанноеВремя
;
////////////////////////////////////////////////////////////////////////////////
УНИЧТОЖИТЬ ВТНачисленияОтработанноеВремя
;
////////////////////////////////////////////////////////////////////////////////
УНИЧТОЖИТЬ ВТСтатьяФинансированияОтработанноеВремя
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ДанныеСотрудников.МесяцНачисления КАК МесяцНачисления,
ДанныеСотрудников.ФизическоеЛицо КАК ФизическоеЛицо,
ДанныеСотрудников.СтатьяФинансирования КАК СтатьяФинансирования,
ДанныеСотрудников.Подразделение КАК Подразделение,
ДанныеСотрудников.Группа КАК Группа,
ДанныеСотрудников.ВидРасчета КАК ВидРасчета,
ДанныеСотрудников.ДатаНачала КАК ДатаНачала,
ЕСТЬNULL(ОтработанноеВремя.ОтработаноЧасовВПериоде, 0) КАК ОтработаноЧасовВПериоде,
ДанныеСотрудников.Организация.ГоловнаяОрганизация КАК ГоловнаяОрганизация,
ДанныеСотрудников.Организация КАК Организация,
ДанныеСотрудников.Сотрудник КАК Сотрудник,
ДанныеСотрудников.ВидЗанятости КАК ВидЗанятости
ПОМЕСТИТЬ ОбщиеЗапросыНачисленияУдержанияСтатистикаПерсонала
ИЗ
ВТНачисленияИУдержанияСКадровымиДанными КАК ДанныеСотрудников
ЛЕВОЕ СОЕДИНЕНИЕ ПредставленияОтработанноеВремя КАК ОтработанноеВремя
ПО ДанныеСотрудников.Регистратор = ОтработанноеВремя.Регистратор
И ДанныеСотрудников.ДокументОснование = ОтработанноеВремя.ДокументОснование
И ДанныеСотрудников.Организация = ОтработанноеВремя.Организация
И ДанныеСотрудников.Сотрудник = ОтработанноеВремя.Сотрудник
И ДанныеСотрудников.Подразделение = ОтработанноеВремя.Подразделение
И ДанныеСотрудников.ВидРасчета = ОтработанноеВремя.ВидРасчета
И ДанныеСотрудников.МесяцНачисления = ОтработанноеВремя.МесяцНачисления
И ДанныеСотрудников.СтатьяФинансирования = ОтработанноеВремя.СтатьяФинансирования
И ДанныеСотрудников.СтатьяРасходов = ОтработанноеВремя.СтатьяРасходов
И ДанныеСотрудников.ИдентификаторСтроки = ОтработанноеВремя.ИдентификаторСтроки
ГДЕ
ДанныеСотрудников.НачислениеТекущегоПериода
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
ДанныеСотрудников.МесяцНачисления,
ДанныеСотрудников.ФизическоеЛицо,
ДанныеСотрудников.СтатьяФинансирования,
ДанныеСотрудников.Подразделение,
ДанныеСотрудников.Группа,
ДанныеСотрудников.ВидРасчета,
ДанныеСотрудников.ДатаНачала,
ЕСТЬNULL(ОтработанноеВремя.ОтработаноЧасовВПериоде, 0),
ДанныеСотрудников.Организация.ГоловнаяОрганизация,
ДанныеСотрудников.Организация,
ДанныеСотрудников.Сотрудник,
ДанныеСотрудников.ВидЗанятости
ИЗ
ВТНачисленияИУдержанияСКадровымиДанными КАК ДанныеСотрудников
ЛЕВОЕ СОЕДИНЕНИЕ ПредставленияОтработанноеВремя КАК ОтработанноеВремя
ПО ДанныеСотрудников.Регистратор = ОтработанноеВремя.Регистратор
И ДанныеСотрудников.ДокументОснование = ОтработанноеВремя.ДокументОснование
И ДанныеСотрудников.Организация = ОтработанноеВремя.Организация
И ДанныеСотрудников.Сотрудник = ОтработанноеВремя.Сотрудник
И ДанныеСотрудников.Подразделение = ОтработанноеВремя.Подразделение
И ДанныеСотрудников.ВидРасчета = ОтработанноеВремя.ВидРасчета
И ДанныеСотрудников.МесяцНачисления = ОтработанноеВремя.МесяцНачисления
И ДанныеСотрудников.СтатьяФинансирования = ОтработанноеВремя.СтатьяФинансирования
И ДанныеСотрудников.СтатьяРасходов = ОтработанноеВремя.СтатьяРасходов
И ДанныеСотрудников.ИдентификаторСтроки = ОтработанноеВремя.ИдентификаторСтроки
ГДЕ
НЕ ДанныеСотрудников.НачислениеТекущегоПериода
И НЕ ОтработанноеВремя.МесяцНачисления ЕСТЬ NULL
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
Начисления.ГрафикРаботы КАК ГрафикРаботы,
ОбщиеЗапросыНачисленияУдержанияСтатистикаПерсонала.Сотрудник КАК Сотрудник,
Начисления.ПериодДействияНачало КАК ПериодДействияНачало,
Начисления.ПериодДействияКонец КАК ПериодДействияКонец,
Начисления.ВидРасчета КАК ВидРасчета,
ОбщиеЗапросыНачисленияУдержанияСтатистикаПерсонала.МесяцНачисления КАК Месяц,
Начисления.ПериодРегистрацииВремени КАК ПериодРегистрацииВремени
ПОМЕСТИТЬ ВТГрафикиРаботСотрудников
ИЗ
ОбщиеЗапросыНачисленияУдержанияСтатистикаПерсонала КАК ОбщиеЗапросыНачисленияУдержанияСтатистикаПерсонала
ЛЕВОЕ СОЕДИНЕНИЕ РегистрРасчета.Начисления.ФактическийПериодДействия КАК Начисления
ПО ОбщиеЗапросыНачисленияУдержанияСтатистикаПерсонала.Сотрудник = Начисления.Сотрудник
И ОбщиеЗапросыНачисленияУдержанияСтатистикаПерсонала.ВидРасчета = Начисления.ВидРасчета
И ОбщиеЗапросыНачисленияУдержанияСтатистикаПерсонала.ДатаНачала = Начисления.ПериодДействияНачало
ГДЕ
ОбщиеЗапросыНачисленияУдержанияСтатистикаПерсонала.Группа = ЗНАЧЕНИЕ(Перечисление.ГруппыНачисленияУдержанияВыплаты.Начислено)
И &ЕстьНерабочиеПериоды
СГРУППИРОВАТЬ ПО
Начисления.ГрафикРаботы,
ОбщиеЗапросыНачисленияУдержанияСтатистикаПерсонала.Сотрудник,
Начисления.ПериодДействияНачало,
Начисления.ПериодДействияКонец,
Начисления.ВидРасчета,
ОбщиеЗапросыНачисленияУдержанияСтатистикаПерсонала.МесяцНачисления,
Начисления.ПериодРегистрацииВремени
ИНДЕКСИРОВАТЬ ПО
ГрафикРаботы,
ПериодДействияНачало,
ПериодДействияКонец,
ВидРасчета,
Месяц
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
КадровыеДанныеСотрудников.Сотрудник КАК Сотрудник,
КадровыеДанныеСотрудников.ДатаПриема КАК ДатаПриема,
КадровыеДанныеСотрудников.ДатаУвольнения КАК ДатаУвольнения
ПОМЕСТИТЬ ВТКадровыеДанныеСотрудниковДаты
ИЗ
ОбщиеЗапросыНачисленияУдержанияСтатистикаПерсонала КАК Сотрудники
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ТекущиеКадровыеДанныеСотрудников КАК КадровыеДанныеСотрудников
ПО Сотрудники.Сотрудник = КадровыеДанныеСотрудников.Сотрудник
ГДЕ
КадровыеДанныеСотрудников.Сотрудник.ГоловнаяОрганизация = &П7
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
Данные.МесяцНачисления КАК МесяцНачисления,
Данные.ГоловнаяОрганизация КАК ГоловнаяОрганизация,
Данные.Организация КАК Организация,
Данные.Сотрудник КАК Сотрудник,
Данные.СтатьяФинансирования КАК СтатьяФинансирования,
Данные.ФизическоеЛицо КАК ФизическоеЛицо,
Данные.Подразделение КАК Подразделение,
Данные.ВидРасчета КАК ВидРасчета,
Данные.ОтработаноЧасовВПериоде КАК ОтработаноЧасов,
ВЫБОР
КОГДА Данные.ВидРасчета = ЗНАЧЕНИЕ(Перечисление.ВидыОсобыхНачисленийИУдержаний.ДоговорРаботыУслуги)
И Данные.МесяцНачисления < НАЧАЛОПЕРИОДА(КадровыеДанныеСотрудниковДаты.ДатаПриема, МЕСЯЦ)
ТОГДА Данные.МесяцНачисления
КОГДА ВЫБОР
КОГДА Данные.ДатаНачала = ДАТАВРЕМЯ(1, 1, 1)
ТОГДА Данные.МесяцНачисления
ИНАЧЕ Данные.ДатаНачала
КОНЕЦ < КадровыеДанныеСотрудниковДаты.ДатаПриема
ТОГДА КадровыеДанныеСотрудниковДаты.ДатаПриема
ИНАЧЕ ВЫБОР
КОГДА Данные.ДатаНачала = ДАТАВРЕМЯ(1, 1, 1)
ТОГДА Данные.МесяцНачисления
ИНАЧЕ Данные.ДатаНачала
КОНЕЦ
КОНЕЦ КАК ДатаНачала,
Данные.ВидЗанятости КАК ВидЗанятости,
КадровыеДанныеСотрудниковДаты.ДатаУвольнения КАК ДатаУвольнения,
КадровыеДанныеСотрудниковДаты.ДатаПриема КАК ДатаПриема,
ВЫБОР
КОГДА Данные.ВидЗанятости В (ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.ВнутреннееСовместительство), ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.Подработка))
ТОГДА ИСТИНА
ИНАЧЕ ЛОЖЬ
КОНЕЦ КАК ВнутреннееСовместительствоИлиПодработка,
ВЫБОР
КОГДА Данные.ДатаНачала <= КадровыеДанныеСотрудниковДаты.ДатаУвольнения
И КадровыеДанныеСотрудниковДаты.ДатаУвольнения <> ДАТАВРЕМЯ(1, 1, 1)
ИЛИ Данные.ДатаНачала <> НАЧАЛОПЕРИОДА(Данные.ДатаНачала, МЕСЯЦ)
ТОГДА ИСТИНА
ИНАЧЕ ЛОЖЬ
КОНЕЦ КАК НачислениеНеСНачалаМесяца,
ВЫБОР
КОГДА НАЧАЛОПЕРИОДА(Данные.ДатаНачала, МЕСЯЦ) = Данные.МесяцНачисления
ТОГДА ИСТИНА
ИНАЧЕ ЛОЖЬ
КОНЕЦ КАК НачислениеЗаТекущийМесяц,
ВЫБОР
КОГДА НАЧАЛОПЕРИОДА(Данные.ДатаНачала, МЕСЯЦ) < Данные.МесяцНачисления
ТОГДА ИСТИНА
ИНАЧЕ ЛОЖЬ
КОНЕЦ КАК НачислениеЗаПрошлыйМесяц,
ВЫБОР
КОГДА НАЧАЛОПЕРИОДА(Данные.ДатаНачала, МЕСЯЦ) > Данные.МесяцНачисления
ТОГДА ИСТИНА
ИНАЧЕ ЛОЖЬ
КОНЕЦ КАК НачислениеЗаБудущийМесяц
ПОМЕСТИТЬ ОбщиеЗапросыНачисленияУдержанияИтоговая
ИЗ
ОбщиеЗапросыНачисленияУдержанияСтатистикаПерсонала КАК Данные
ЛЕВОЕ СОЕДИНЕНИЕ ВТКадровыеДанныеСотрудниковДаты КАК КадровыеДанныеСотрудниковДаты
ПО Данные.Сотрудник = КадровыеДанныеСотрудниковДаты.Сотрудник
ГДЕ
Данные.Группа В (ЗНАЧЕНИЕ(Перечисление.ГруппыНачисленияУдержанияВыплаты.Начислено), ЗНАЧЕНИЕ(Перечисление.ГруппыНачисленияУдержанияВыплаты.Справочно))
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
НАЧАЛОПЕРИОДА(ПоКонтрагентамАкционерам.Период, МЕСЯЦ),
ПоКонтрагентамАкционерам.Организация.ГоловнаяОрганизация,
ПоКонтрагентамАкционерам.Организация,
ВЫБОР
КОГДА ПоКонтрагентамАкционерам.Сотрудник = ЗНАЧЕНИЕ(Справочник.Сотрудники.ПустаяСсылка)
ТОГДА ПоКонтрагентамАкционерам.ФизическоеЛицо
ИНАЧЕ ПоКонтрагентамАкционерам.Сотрудник
КОНЕЦ,
ПоКонтрагентамАкционерам.СтатьяФинансирования,
ПоКонтрагентамАкционерам.ФизическоеЛицо,
ПоКонтрагентамАкционерам.Подразделение,
ПоКонтрагентамАкционерам.НачислениеУдержание,
0
НАЧАЛОПЕРИОДА(ПоКонтрагентамАкционерам.Период, МЕСЯЦ),
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL
ИЗ
РегистрНакопления.НачисленияУдержанияПоКонтрагентамАкционерам КАК ПоКонтрагентамАкционерам
ГДЕ
ПоКонтрагентамАкционерам.Период МЕЖДУ &НачалоПериода И &КонецПериода
И ПоКонтрагентамАкционерам.ГруппаНачисленияУдержанияВыплаты = ЗНАЧЕНИЕ(Перечисление.ГруппыНачисленияУдержанияВыплаты.Начислено)
И ПоКонтрагентамАкционерам.НачислениеУдержание В(&ВидыВыплатНаПериодТрудоустройства)
И ПоКонтрагентамАкционерам.Организация.ГоловнаяОрганизация = &П7
СГРУППИРОВАТЬ ПО
НАЧАЛОПЕРИОДА(ПоКонтрагентамАкционерам.Период, МЕСЯЦ),
ПоКонтрагентамАкционерам.Организация,
ПоКонтрагентамАкционерам.СтатьяФинансирования,
ПоКонтрагентамАкционерам.ФизическоеЛицо,
ПоКонтрагентамАкционерам.НачислениеУдержание,
ПоКонтрагентамАкционерам.Подразделение,
ПоКонтрагентамАкционерам.Организация.ГоловнаяОрганизация,
ВЫБОР
КОГДА ПоКонтрагентамАкционерам.Сотрудник = ЗНАЧЕНИЕ(Справочник.Сотрудники.ПустаяСсылка)
ТОГДА ПоКонтрагентамАкционерам.ФизическоеЛицо
ИНАЧЕ ПоКонтрагентамАкционерам.Сотрудник
КОНЕЦ,
НАЧАЛОПЕРИОДА(ПоКонтрагентамАкционерам.Период, МЕСЯЦ)
ИНДЕКСИРОВАТЬ ПО
МесяцНачисления,
Сотрудник,
ФизическоеЛицо,
ВидЗанятости,
ДатаНачала
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
Сотрудники.Сотрудник КАК Сотрудник,
ВЫБОР
КОГДА ВЫБОР
КОГДА Сотрудники.ДатаНачала = ДАТАВРЕМЯ(1, 1, 1)
ТОГДА Сотрудники.МесяцНачисления
ИНАЧЕ Сотрудники.ДатаНачала
КОНЕЦ < КадровыеДанныеСотрудников.ДатаПриема
ТОГДА КадровыеДанныеСотрудников.ДатаПриема
ИНАЧЕ ВЫБОР
КОГДА Сотрудники.ДатаНачала = ДАТАВРЕМЯ(1, 1, 1)
ТОГДА Сотрудники.МесяцНачисления
ИНАЧЕ Сотрудники.ДатаНачала
КОНЕЦ
КОНЕЦ КАК Период
ПОМЕСТИТЬ ВТИзмеренияДатыДляКадровыеДанныеСотрудников_Зарплата
ИЗ
ОбщиеЗапросыНачисленияУдержанияИтоговая КАК Сотрудники
ЛЕВОЕ СОЕДИНЕНИЕ ВТКадровыеДанныеСотрудниковДаты КАК КадровыеДанныеСотрудников
ПО Сотрудники.Сотрудник = КадровыеДанныеСотрудников.Сотрудник
ОБЪЕДИНИТЬ
ВЫБРАТЬ РАЗЛИЧНЫЕ
ОсновныеСотрудники.Сотрудник,
ВЫБОР
КОГДА ВЫБОР
КОГДА Совместители.ДатаНачала = ДАТАВРЕМЯ(1, 1, 1)
ТОГДА Совместители.МесяцНачисления
ИНАЧЕ Совместители.ДатаНачала
КОНЕЦ < КадровыеДанныеСотрудников.ДатаПриема
ТОГДА КадровыеДанныеСотрудников.ДатаПриема
ИНАЧЕ ВЫБОР
КОГДА Совместители.ДатаНачала = ДАТАВРЕМЯ(1, 1, 1)
ТОГДА Совместители.МесяцНачисления
ИНАЧЕ Совместители.ДатаНачала
КОНЕЦ
КОНЕЦ
ИЗ
ОбщиеЗапросыНачисленияУдержанияИтоговая КАК Совместители
ВНУТРЕННЕЕ СОЕДИНЕНИЕ ОбщиеЗапросыНачисленияУдержанияИтоговая КАК ОсновныеСотрудники
ПО Совместители.ФизическоеЛицо = ОсновныеСотрудники.ФизическоеЛицо
И (ВЫБОР
КОГДА ОсновныеСотрудники.МесяцНачисления <> НАЧАЛОПЕРИОДА(ОсновныеСотрудники.ДатаНачала, МЕСЯЦ)
ТОГДА Совместители.МесяцНачисления = НАЧАЛОПЕРИОДА(ОсновныеСотрудники.ДатаНачала, МЕСЯЦ)
ИНАЧЕ Совместители.МесяцНачисления = ОсновныеСотрудники.МесяцНачисления
КОНЕЦ)
И (ОсновныеСотрудники.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.ОсновноеМестоРаботы)
ИЛИ ОсновныеСотрудники.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.ВнутреннееСовместительство))
ЛЕВОЕ СОЕДИНЕНИЕ ВТКадровыеДанныеСотрудниковДаты КАК КадровыеДанныеСотрудников
ПО Совместители.Сотрудник = КадровыеДанныеСотрудников.Сотрудник
ГДЕ
(Совместители.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.ВнутреннееСовместительство)
ИЛИ Совместители.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.Подработка)
ИЛИ Совместители.ВидЗанятости ЕСТЬ NULL)
И Совместители.ДатаНачала >= ОсновныеСотрудники.ДатаПриема
И (Совместители.ДатаНачала <= ОсновныеСотрудники.ДатаУвольнения
ИЛИ ОсновныеСотрудники.ДатаУвольнения = ДАТАВРЕМЯ(1, 1, 1))
ОБЪЕДИНИТЬ
ВЫБРАТЬ РАЗЛИЧНЫЕ
ОсновныеСотрудники.Сотрудник,
КОНЕЦПЕРИОДА(ВЫБОР
КОГДА ВЫБОР
КОГДА Совместители.ДатаНачала = ДАТАВРЕМЯ(1, 1, 1)
ТОГДА Совместители.МесяцНачисления
ИНАЧЕ Совместители.ДатаНачала
КОНЕЦ < КадровыеДанныеСотрудников.ДатаПриема
ТОГДА КадровыеДанныеСотрудников.ДатаПриема
ИНАЧЕ ВЫБОР
КОГДА Совместители.ДатаНачала = ДАТАВРЕМЯ(1, 1, 1)
ТОГДА Совместители.МесяцНачисления
ИНАЧЕ Совместители.ДатаНачала
КОНЕЦ
КОНЕЦ, МЕСЯЦ)
ИЗ
ОбщиеЗапросыНачисленияУдержанияИтоговая КАК Совместители
ВНУТРЕННЕЕ СОЕДИНЕНИЕ ОбщиеЗапросыНачисленияУдержанияИтоговая КАК ОсновныеСотрудники
ПО Совместители.ФизическоеЛицо = ОсновныеСотрудники.ФизическоеЛицо
И (ВЫБОР
КОГДА ОсновныеСотрудники.МесяцНачисления <> НАЧАЛОПЕРИОДА(ОсновныеСотрудники.ДатаНачала, МЕСЯЦ)
И Совместители.МесяцНачисления <> НАЧАЛОПЕРИОДА(Совместители.ДатаНачала, МЕСЯЦ)
ТОГДА Совместители.ДатаНачала = ОсновныеСотрудники.ДатаНачала
КОГДА ОсновныеСотрудники.МесяцНачисления <> НАЧАЛОПЕРИОДА(ОсновныеСотрудники.ДатаНачала, МЕСЯЦ)
ТОГДА Совместители.МесяцНачисления = НАЧАЛОПЕРИОДА(ОсновныеСотрудники.ДатаНачала, МЕСЯЦ)
ИНАЧЕ ВЫБОР
КОГДА ОсновныеСотрудники.ДатаНачала <> ОсновныеСотрудники.МесяцНачисления
ТОГДА Совместители.ДатаНачала = ОсновныеСотрудники.ДатаНачала
ИНАЧЕ Совместители.МесяцНачисления = ОсновныеСотрудники.МесяцНачисления
КОНЕЦ
КОНЕЦ)
И (ОсновныеСотрудники.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.ОсновноеМестоРаботы)
ИЛИ ОсновныеСотрудники.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.Совместительство))
ЛЕВОЕ СОЕДИНЕНИЕ ВТКадровыеДанныеСотрудниковДаты КАК КадровыеДанныеСотрудников
ПО Совместители.Сотрудник = КадровыеДанныеСотрудников.Сотрудник
ГДЕ
(Совместители.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.ВнутреннееСовместительство)
ИЛИ Совместители.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.Подработка))
И (НАЧАЛОПЕРИОДА(ОсновныеСотрудники.ДатаУвольнения, МЕСЯЦ) <> ОсновныеСотрудники.МесяцНачисления
И НАЧАЛОПЕРИОДА(Совместители.ДатаУвольнения, МЕСЯЦ) <> Совместители.МесяцНачисления
ИЛИ НАЧАЛОПЕРИОДА(ОсновныеСотрудники.ДатаУвольнения, МЕСЯЦ) = ОсновныеСотрудники.МесяцНачисления
И НАЧАЛОПЕРИОДА(Совместители.ДатаУвольнения, МЕСЯЦ) <> Совместители.МесяцНачисления
ИЛИ ОсновныеСотрудники.ДатаУвольнения = ДАТАВРЕМЯ(1, 1, 1)
И НАЧАЛОПЕРИОДА(Совместители.ДатаУвольнения, МЕСЯЦ) <> Совместители.МесяцНачисления
ИЛИ ОсновныеСотрудники.ДатаУвольнения = ДАТАВРЕМЯ(1, 1, 1)
И НАЧАЛОПЕРИОДА(Совместители.ДатаУвольнения, МЕСЯЦ) <> НАЧАЛОПЕРИОДА(Совместители.ДатаНачала, ДЕНЬ))
ОБЪЕДИНИТЬ
ВЫБРАТЬ РАЗЛИЧНЫЕ
ОбщиеЗапросыНачисленияУдержанияИтоговаяСовместительство.Сотрудник,
ВЫБОР
КОГДА ВЫБОР
КОГДА Сотрудники.ДатаНачала = ДАТАВРЕМЯ(1, 1, 1)
ТОГДА Сотрудники.МесяцНачисления
ИНАЧЕ Со��рудники.ДатаНачала
КОНЕЦ < КадровыеДанныеСотрудников.ДатаПриема
ТОГДА КадровыеДанныеСотрудников.ДатаПриема
ИНАЧЕ ВЫБОР
КОГДА Сотрудники.ДатаНачала = ДАТАВРЕМЯ(1, 1, 1)
ТОГДА Сотрудники.МесяцНачисления
ИНАЧЕ Сотрудники.ДатаНачала
КОНЕЦ
КОНЕЦ
ИЗ
ОбщиеЗапросыНачисленияУдержанияИтоговая КАК Сотрудники
ВНУТРЕННЕЕ СОЕДИНЕНИЕ ОбщиеЗапросыНачисленияУдержанияИтоговая КАК ОбщиеЗапросыНачисленияУдержанияИтоговаяСовместительство
ПО Сотрудники.ФизическоеЛицо = ОбщиеЗапросыНачисленияУдержанияИтоговаяСовместительство.ФизическоеЛицо
И (ОбщиеЗапросыНачисленияУдержанияИтоговаяСовместительство.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.Совместительство))
ЛЕВОЕ СОЕДИНЕНИЕ ОбщиеЗапросыНачисленияУдержанияИтоговая КАК ОбщиеЗапросыНачисленияУдержанияИтоговая
ПО Сотрудники.ФизическоеЛицо = ОбщиеЗапросыНачисленияУдержанияИтоговая.ФизическоеЛицо
И (ОбщиеЗапросыНачисленияУдержанияИтоговая.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.ОсновноеМестоРаботы))
И Сотрудники.МесяцНачисления = ОбщиеЗапросыНачисленияУдержанияИтоговая.МесяцНачисления
И (ОбщиеЗапросыНачисленияУдержанияИтоговая.ДатаУвольнения = ДАТАВРЕМЯ(1, 1, 1))
ЛЕВОЕ СОЕДИНЕНИЕ ВТКадровыеДанныеСотрудниковДаты КАК КадровыеДанныеСотрудников
ПО Сотрудники.Сотрудник = КадровыеДанныеСотрудников.Сотрудник
ГДЕ
ОбщиеЗапросыНачисленияУдержанияИтоговая.ФизическоеЛицо ЕСТЬ NULL
И (Сотрудники.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.ВнутреннееСовместительство)
ИЛИ Сотрудники.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.Подработка))
И (ОбщиеЗапросыНачисленияУдержанияИтоговаяСовместительство.ДатаУвольнения = ДАТАВРЕМЯ(1, 1, 1)
ИЛИ ОбщиеЗапросыНачисленияУдержанияИтоговаяСовместительство.ДатаУвольнения >= Сотрудники.МесяцНачисления)
ОБЪЕДИНИТЬ
ВЫБРАТЬ РАЗЛИЧНЫЕ
ОбщиеЗапросыНачисленияУдержанияИтоговаяСовместительство.Сотрудник,
КОНЕЦПЕРИОДА(ВЫБОР
КОГДА ВЫБОР
КОГДА Сотрудники.ДатаНачала = ДАТАВРЕМЯ(1, 1, 1)
ТОГДА Сотрудники.МесяцНачисления
ИНАЧЕ Сотрудники.ДатаНачала
КОНЕЦ < КадровыеДанныеСотрудников.ДатаПриема
ТОГДА КадровыеДанныеСотрудников.ДатаПриема
ИНАЧЕ ВЫБОР
КОГДА Сотрудники.ДатаНачала = ДАТАВРЕМЯ(1, 1, 1)
ТОГДА Сотрудники.МесяцНачисления
ИНАЧЕ Сотрудники.ДатаНачала
КОНЕЦ
КОНЕЦ, МЕСЯЦ)
ИЗ
ОбщиеЗапросыНачисленияУдержанияИтоговая КАК Сотрудники
ВНУТРЕННЕЕ СОЕДИНЕНИЕ ОбщиеЗапросыНачисленияУдержанияИтоговая КАК ОбщиеЗапросыНачисленияУдержанияИтоговаяСовместительство
ПО Сотрудники.ФизическоеЛицо = ОбщиеЗапросыНачисленияУдержанияИтоговаяСовместительство.ФизическоеЛицо
И (ОбщиеЗапросыНачисленияУдержанияИтоговаяСовместительство.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.Совместительство))
ЛЕВОЕ СОЕДИНЕНИЕ ОбщиеЗапросыНачисленияУдержанияИтоговая КАК ОбщиеЗапросыНачисленияУдержанияИтоговая
ПО Сотрудники.ФизическоеЛицо = ОбщиеЗапросыНачисленияУдержанияИтоговая.ФизическоеЛицо
И (ОбщиеЗапросыНачисленияУдержанияИтоговая.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.ОсновноеМестоРаботы))
ЛЕВОЕ СОЕДИНЕНИЕ ВТКадровыеДанныеСотрудниковДаты КАК КадровыеДанныеСотрудников
ПО Сотрудники.Сотрудник = КадровыеДанныеСотрудников.Сотрудник
ГДЕ
ОбщиеЗапросыНачисленияУдержанияИтоговая.ФизическоеЛицо ЕСТЬ NULL
И (Сотрудники.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.ВнутреннееСовместительство)
ИЛИ Сотрудники.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.Подработка))
И (ОбщиеЗапросыНачисленияУдержанияИтоговаяСовместительство.ДатаУвольнения = ДАТАВРЕМЯ(1, 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)
ТОГДА ДАТАВРЕМЯ(3999, 12, 31, 23, 59, 59)
ИНАЧЕ КОНЕЦПЕРИОДА(ИзмеренияДаты.Период, ДЕНЬ)
КОНЕЦ)
И (РегистрСведений.ДатаОкончания >= ВЫБОР
КОГДА ИзмеренияДаты.Период = ДАТАВРЕМЯ(1, 1, 1)
ТОГДА ДАТАВРЕМЯ(3999, 12, 31, 23, 59, 59)
ИНАЧЕ КОНЕЦПЕРИОДА(ИзмеренияДаты.Период, ДЕНЬ)
КОНЕЦ)
И (РегистрСведений.Сотрудник = ИзмеренияДаты.Сотрудник)
И (РегистрСведений.ФизическоеЛицо = ИзмеренияДаты.Сотрудник.ФизическоеЛицо)
И (РегистрСведений.ГоловнаяОрганизация В (&ВТСведенияКадровойИсторииСотрудников_Параметр1))
И (РегистрСведений.Организация В (&ВТСведенияКадровойИсторииСотрудниковОтборыКСрезу_Параметр2))
ИНДЕКСИРОВАТЬ ПО
Сотрудник
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ТаблицаОтборов.Период КАК Период,
ТаблицаОтборов.Сотрудник КАК Сотрудник,
ТаблицаОтборов.ФизическоеЛицо КАК ФизическоеЛицо,
КадроваяИсторияСотрудников.Организация КАК Организация,
КадроваяИсторияСотрудников.Подразделение КАК Подразделение,
КадроваяИсторияСотрудников.ДолжностьПоШтатномуРасписанию КАК ДолжностьПоШтатномуРасписанию,
КадроваяИсторияСотрудников.Должность КАК Должность,
СведенияОВидахЗанятостиСотрудников.ВидЗанятости КАК ВидЗанятости,
ЕСТЬNULL(ТекущиеКадровыеДанныеГоловныхСотрудников.ДатаУвольнения, ДАТАВРЕМЯ(1, 1, 1)) КАК ДатаУвольнения,
СведенияОСостоянииСотрудников.Состояние КАК Состояние
ПОМЕСТИТЬ ПредставленияКадровыеДанныеСотрудников_Зарплата
ИЗ
ВТОтборовРазличныхСотрудников КАК ТаблицаОтборов
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ТекущиеКадровыеДанныеСотрудников КАК ТекущиеКадровыеДанныеГоловныхСотрудников
ПО ТаблицаОтборов.ГоловнойСотрудникТаблицыРазличных = ТекущиеКадровыеДанныеГоловныхСотрудников.Сотрудник
ЛЕВОЕ СОЕДИНЕНИЕ ВТСведенияКадровойИсторииСотрудников КАК КадроваяИсторияСотрудников
ПО ТаблицаОтборов.Сотрудник = КадроваяИсторияСотрудников.Сотрудник
И ТаблицаОтборов.Период = КадроваяИсторияСотрудников.Период
ЛЕВОЕ СОЕДИНЕНИЕ ВТСведенияОВидахЗанятостиСотрудников КАК СведенияОВидахЗанятостиСотрудников
ПО ТаблицаОтборов.Сотрудник = СведенияОВидахЗанятостиСотрудников.Сотрудник
И ТаблицаОтборов.Период = СведенияОВидахЗанятостиСотрудников.Период
ЛЕВОЕ СОЕДИНЕНИЕ ВТСведенияОСостоянииСотрудников КАК СведенияОСостоянииСотрудников
ПО ТаблицаОтборов.Сотрудник = СведенияОСостоянииСотрудников.Сотрудник
И ТаблицаОтборов.Период = СведенияОСостоянииСотрудников.Период
;
////////////////////////////////////////////////////////////////////////////////
УНИЧТОЖИТЬ ВТСведенияКадровойИсторииСотрудников
;
////////////////////////////////////////////////////////////////////////////////
УНИЧТОЖИТЬ ВТСведенияОВидахЗанятостиСотрудников
;
////////////////////////////////////////////////////////////////////////////////
УНИЧТОЖИТЬ ВТОтборовРазличныхСотрудников
;
////////////////////////////////////////////////////////////////////////////////
УНИЧТОЖИТЬ ВТСведенияОСостоянииСотрудников
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
СтатьиФинансированияЗарплата.Ссылка КАК СтатьяФинансирования
ПОМЕСТИТЬ ПредставленияСвойстваСтатейФинансирования
ИЗ
Справочник.СтатьиФинансированияЗарплата КАК СтатьиФинансированияЗарплата
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
Данные.МесяцНачисления КАК МесяцНачисления,
Данные.Сотрудник КАК Сотрудник,
Данные.ФизическоеЛицо КАК ФизическоеЛицо,
ВЫБОР
КОГДА НАЧАЛОПЕРИОДА(Данные.ДатаНачала, МЕСЯЦ) > Данные.МесяцНачисления
ТОГДА Данные.МесяцНачисления
КОГДА НАЧАЛОПЕРИОДА(Данные.ДатаНачала, МЕСЯЦ) < Данные.МесяцНачисления
ТОГДА НАЧАЛОПЕРИОДА(Данные.ДатаНачала, МЕСЯЦ)
ИНАЧЕ Данные.ДатаНачала
КОНЕЦ КАК ДатаНачала,
ВЫБОР
КОГДА Данные.ВидРасчета = ЗНАЧЕНИЕ(Перечисление.ВидыОсобыхНачисленийИУдержаний.ДоговорРаботыУслуги)
И (Данные.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.ПустаяСсылка)
ИЛИ Данные.ВидЗанятости ЕСТЬ NULL)
ТОГДА ИСТИНА
ИНАЧЕ ЛОЖЬ
КОНЕЦ КАК СотрудникГПХ,
ВЫБОР
КОГДА Данные.МесяцНачисления > КадровыеДанныеСотрудников.ДатаУвольнения
И КадровыеДанныеСотрудников.ДатаУвольнения <> ДАТАВРЕМЯ(1, 1, 1)
ТОГДА ИСТИНА
ИНАЧЕ ЛОЖЬ
КОНЕЦ КАК ЕстьВыплатыПослеУвольнения,
Данные.ДатаУвольнения КАК ДатаУвольнения
ПОМЕСТИТЬ ВТСотрудникиПоДоговорамГПХиВнутренниеСовместители
ИЗ
ОбщиеЗапросыНачисленияУдержанияИтоговая КАК Данные
ЛЕВОЕ СОЕДИНЕНИЕ ПредставленияКадровыеДанныеСотрудников_Зарплата КАК КадровыеДанныеСотрудников
ПО Данные.Сотрудник.ГоловнойСотрудник = КадровыеДанныеСотрудников.Сотрудник
И (ВЫБОР
КОГДА Данные.ДатаНачала = ДАТАВРЕМЯ(1, 1, 1)
ТОГДА НАЧАЛОПЕРИОДА(КадровыеДанныеСотрудников.Период, МЕСЯЦ) = Данные.МесяцНачисления
ИНАЧЕ КадровыеДанныеСотрудников.Период = Данные.ДатаНачала
КОНЕЦ)
ГДЕ
(Данные.ВидРасчета = ЗНАЧЕНИЕ(Перечисление.ВидыОсобыхНачисленийИУдержаний.ДоговорРаботыУслуги)
И (Данные.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.ПустаяСсылка)
ИЛИ Данные.ВидЗанятости ЕСТЬ NULL)
ИЛИ ВЫБОР
КОГДА Данные.МесяцНачисления > КадровыеДанныеСотрудников.ДатаУвольнения
И КадровыеДанныеСотрудников.ДатаУвольнения <> ДАТАВРЕМЯ(1, 1, 1)
ТОГДА ИСТИНА
ИНАЧЕ ЛОЖЬ
КОНЕЦ
ИЛИ КадровыеДанныеСотрудников.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.ВнутреннееСовместительство))
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ОбщиеЗапросыНачисленияУдержанияИтоговая.Сотрудник КАК Сотрудник,
ОбщиеЗапросыНачисленияУдержанияИтоговая.МесяцНачисления КАК МесяцНачисления,
МАКСИМУМ(ОбщиеЗапросыНачисленияУдержанияИтоговая.ДатаНачала) КАК ДатаНачала,
ОбщиеЗапросыНачисленияУдержанияИтоговая.ФизическоеЛицо КАК ФизическоеЛицо,
ОбщиеЗапросыНачисленияУдержанияИтоговая.ДатаУвольнения КАК ДатаУвольнения
ПОМЕСТИТЬ ВТНачисленияОсновныхСотрудниковСМаксимальнойДатой
ИЗ
ОбщиеЗапросыНачисленияУдержанияИтоговая КАК ОбщиеЗапросыНачисленияУдержанияИтоговая
ГДЕ
(ОбщиеЗапросыНачисленияУдержанияИт��говая.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.ОсновноеМестоРаботы)
ИЛИ ОбщиеЗапросыНачисленияУдержанияИтоговая.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.Совместительство))
СГРУППИРОВАТЬ ПО
ОбщиеЗапросыНачисленияУдержанияИтоговая.Сотрудник,
ОбщиеЗапросыНачисленияУдержанияИтоговая.МесяцНачисления,
ОбщиеЗапросыНачисленияУдержанияИтоговая.ФизическоеЛицо,
ОбщиеЗапросыНачисленияУдержанияИтоговая.ДатаУвольнения
ИНДЕКСИРОВАТЬ ПО
МесяцНачисления,
Сотрудник,
ФизическоеЛицо,
ДатаНачала
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ВТНачисленияОсновныхСотрудниковСМаксимальнойДатой.Сотрудник КАК Сотрудник,
ВТНачисленияОсновныхСотрудниковСМаксимальнойДатой.МесяцНачисления КАК МесяцНачисления,
ВТНачисленияОсновныхСотрудниковСМаксимальнойДатой.ДатаНачала КАК ДатаНачала,
ВТНачисленияОсновныхСотрудниковСМаксимальнойДатой.ФизическоеЛицо КАК ФизическоеЛицо,
ВТНачисленияОсновныхСотрудниковСМаксимальнойДатой.ДатаУвольнения КАК ДатаУвольнения,
ОбщиеЗапросыНачисленияУдержанияИтоговая.ВидЗанятости КАК ВидЗанятости,
ОбщиеЗапросыНачисленияУдержанияИтоговая.ДатаПриема КАК ДатаПриема
ПОМЕСТИТЬ ВТВидыЗанятостиПоМаксимальнойДате
ИЗ
ВТНачисленияОсновныхСотрудниковСМаксимальнойДатой КАК ВТНачисленияОсновныхСотрудниковСМаксимальнойДатой
ВНУТРЕННЕЕ СОЕДИНЕНИЕ ОбщиеЗапросыНачисленияУдержанияИтоговая КАК ОбщиеЗапросыНачисленияУдержанияИтоговая
ПО ВТНачисленияОсновныхСотрудниковСМаксимальнойДатой.Сотрудник = ОбщиеЗапросыНачисленияУдержанияИтоговая.Сотрудник
И ВТНачисленияОсновныхСотрудниковСМаксимальнойДатой.МесяцНачисления = ОбщиеЗапросыНачисленияУдержанияИтоговая.МесяцНачисления
И ВТНачисленияОсновныхСотрудниковСМаксимальнойДатой.ДатаНачала = ОбщиеЗапросыНачисленияУдержанияИтоговая.ДатаНачала
И ВТНачисленияОсновныхСотрудниковСМаксимальнойДатой.ФизическоеЛицо = ОбщиеЗапросыНачисленияУдержанияИтоговая.ФизическоеЛицо
И ВТНачисленияОсновныхСотрудниковСМаксимальнойДатой.ДатаУвольнения = ОбщиеЗапросыНачисленияУдержанияИтоговая.ДатаУвольнения
ИНДЕКСИРОВАТЬ ПО
Сотрудник,
ФизическоеЛицо,
МесяцНачисления,
ДатаНачала
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
СотрудникиПоДоговорамГПХиВнутренниеСовместители.МесяцНачисления КАК МесяцНачисления,
СотрудникиПоДоговорамГПХиВнутренниеСовместители.Сотрудник КАК Сотрудник,
Данные.ВидЗанятости КАК ВидЗанятостиОсновногоСотрудника,
СотрудникиПоДоговорамГПХиВнутренниеСовместители.ДатаНачала КАК ДатаНачала,
ДанныеПоМесяцуНачисления.ВидЗанятости КАК ВидЗанятостиОсновногоСотрудникаПоМесяцуНачисления,
СотрудникиПоДоговорамГПХиВнутренниеСовместители.СотрудникГПХ КАК СотрудникГПХ,
СотрудникиПоДоговорамГПХиВнутренниеСовместители.ЕстьВыплатыПослеУвольнения КАК ЕстьВыплатыПослеУвольнения
ПОМЕСТИТЬ ВТВидыЗанятостиОсновныхСотрудников
ИЗ
ВТСотрудникиПоДоговорамГПХиВнутренниеСовместители КАК СотрудникиПоДоговорамГПХиВнутренниеСовместители
ЛЕВОЕ СОЕДИНЕНИЕ ВТВидыЗанятостиПоМаксимальнойДате КАК Данные
ПО СотрудникиПоДоговорамГПХиВнутренниеСовместители.ФизическоеЛицо = Данные.ФизическоеЛицо
И (ВЫБОР
КОГДА Данные.МесяцНачисления >= НАЧАЛОПЕРИОДА(Данные.ДатаНачала, МЕСЯЦ)
ТОГДА СотрудникиПоДоговорамГПХиВнутренниеСовместители.ДатаНачала >= Данные.ДатаНачала
ИНАЧЕ СотрудникиПоДоговорамГПХиВнутренниеСовместители.ДатаНачала >= НАЧАЛОПЕРИОДА(Данные.ДатаНачала, МЕСЯЦ)
КОНЕЦ)
И (ВЫБОР
КОГДА СотрудникиПоДоговорамГПХиВнутренниеСовместители.ЕстьВыплатыПослеУвольнения
ТОГДА СотрудникиПоДоговорамГПХиВнутренниеСовместители.Сотрудник = Данные.Сотрудник
ИНАЧЕ СотрудникиПоДоговорамГПХиВнутренниеСовместители.Сотрудник <> Данные.Сотрудник
КОНЕЦ)
И (Данные.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.ОсновноеМестоРаботы)
ИЛИ Данные.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.Совместительство))
И (ВЫБОР
КОГДА Данные.ДатаУвольнения = ДАТАВРЕМЯ(1, 1, 1)
ИЛИ СотрудникиПоДоговорамГПХиВнутренниеСовместители.ЕстьВыплатыПослеУвольнения
ТОГДА СотрудникиПоДоговорамГПХиВнутренниеСовместители.ДатаНачала <= КОНЕЦПЕРИОДА(Данные.ДатаНачала, МЕСЯЦ)
ИНАЧЕ СотрудникиПоДоговорамГПХиВнутренниеСовместители.ДатаНачала <= Данные.ДатаУвольнения
КОНЕЦ)
ЛЕВОЕ СОЕДИНЕНИЕ ВТВидыЗанятостиПоМаксимальнойДате КАК ДанныеПоМесяцуНачисления
ПО СотрудникиПоДоговорамГПХиВнутренниеСовместители.ФизическоеЛицо = ДанныеПоМесяцуНачисления.ФизическоеЛицо
И СотрудникиПоДоговорамГПХиВнутренниеСовместители.МесяцНачисления = ДанныеПоМесяцуНачисления.МесяцНачисления
И СотрудникиПоДоговорамГПХиВнутренниеСовместители.Сотрудник <> ДанныеПоМесяцуНачисления.Сотрудник
И (ДанныеПоМесяцуНачисления.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.ОсновноеМестоРаботы)
ИЛИ ДанныеПоМесяцуНачисления.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.Совместительство))
И (ДанныеПоМесяцуНачисления.ДатаУвольнения = ДАТАВРЕМЯ(1, 1, 1)
ИЛИ НАЧАЛОПЕРИОДА(ДанныеПоМесяцуНачисления.ДатаУвольнения, МЕСЯЦ) >= НАЧАЛОПЕРИОДА(СотрудникиПоДоговорамГПХиВнутренниеСовместители.МесяцНачисления, МЕСЯЦ)
И ДанныеПоМесяцуНачисления.ДатаУвольнения >= СотрудникиПоДоговорамГПХиВнутренниеСовместители.ДатаНачала)
И (СотрудникиПоДоговорамГПХиВнутренниеСовместители.ДатаУвольнения = ДАТАВРЕМЯ(1, 1, 1)
ИЛИ ДанныеПоМесяцуНачисления.ДатаПриема < СотрудникиПоДоговорамГПХиВнутренниеСовместители.ДатаУвольнения
ИЛИ СотрудникиПоДоговорамГПХиВнутренниеСовместители.ЕстьВыплатыПослеУвольнения)
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
КадровыеДанныеСотрудников.Период КАК Период,
КадровыеДанныеСотрудников.ФизическоеЛицо КАК ФизическоеЛицо,
КадровыеДанныеСотрудников.Организация КАК ОсновнаяОрганизация,
КадровыеДанныеСотрудников.Подразделение КАК ОсновноеПодразделение,
ВЫБОР
КОГДА &ИспользоватьШтатноеРасписание
ТОГДА КадровыеДанныеСотрудников.ДолжностьПоШтатномуРасписанию
ИНАЧЕ КадровыеДанныеСотрудников.Должность
КОНЕЦ КАК ОсновнаяДолжностьПоШтатномуРасписанию,
КадровыеДанныеСотрудников.ВидЗанятости КАК ВидЗанятости
ПОМЕСТИТЬ ВТОсновныеКадровыеДанныеФизическихЛиц
ИЗ
ПредставленияКадровыеДанныеСотрудников_Зарплата КАК КадровыеДанныеСотрудников
ЛЕВОЕ СОЕДИНЕНИЕ ВТВидыЗанятостиОсновныхСотрудников КАК СотрудникиПоДоговорамГПХкакВнутренниеСовместители
ПО КадровыеДанныеСотрудников.Сотрудник = СотрудникиПоДоговорамГПХкакВнутренниеСовместители.Сотрудник
И (НАЧАЛОПЕРИОДА(КадровыеДанныеСотрудников.Период, МЕСЯЦ) = СотрудникиПоДоговорамГПХкакВнутренниеСовместители.МесяцНачисления)
И (КадровыеДанныеСотрудников.ВидЗанятости = ЕСТЬNULL(СотрудникиПоДоговорамГПХкакВнутренниеСовместители.ВидЗанятостиОсновногоСотрудника, СотрудникиПоДоговорамГПХкакВнутренниеСовместители.ВидЗанятостиОсновногоСотрудникаПоМесяцуНачисления))
ГДЕ
КадровыеДанныеСотрудников.ВидЗанятости <> ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.ВнутреннееСовместительство)
И КадровыеДанныеСотрудников.ВидЗанятости <> ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.Подработка)
И ЕСТЬNULL(СотрудникиПоДоговорамГПХкакВнутренниеСовместители.ЕстьВыплатыПослеУвольнения, ЛОЖЬ) = ЛОЖЬ
И ЕСТЬNULL(СотрудникиПоДоговорамГПХкакВнутренниеСовместители.СотрудникГПХ, ЛОЖЬ) = ЛОЖЬ
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
СУММА(ВЫБОР
КОГДА ВТГрафикиРаботСотрудников.ВидРасчета.ЗачетОтработанногоВремени
ИЛИ ВТГрафикиРаботСотрудников.ВидРасчета.КатегорияНачисленияИлиНеоплаченногоВремени = ЗНАЧЕНИЕ(Перечисление.КатегорииНачисленийИНеоплаченногоВремени.ОплатаКомандировки)
ИЛИ ВТГрафикиРаботСотрудников.ВидРасчета.КатегорияНачисленияИлиНеоплаченногоВремени = ЗНАЧЕНИЕ(Перечисление.КатегорииНачисленийИНеоплаченногоВремени.ДенежноеСодержаниеНаПериодКомандировки)
ТОГДА ГрафикиРаботыПоВидамВремени.ДополнительноеЗначение
КОНЕЦ) КАК ДополнительноеЗначение,
ВТГрафикиРаботСотрудников.Сотрудник КАК Сотрудник,
ВТГрафикиРаботСотрудников.ВидРасчета КАК ВидРасчета,
ВТГрафикиРаботСотрудников.ПериодДействияНачало КАК ПериодДействияНачало
ПОМЕСТИТЬ ВТОплачиваемыеНерабочиеЧасы
ИЗ
РегистрСведений.ГрафикиРаботыПоВидамВремени КАК ГрафикиРаботыПоВидамВремени
ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТГрафикиРаботСотрудников КАК ВТГрафикиРаботСотрудников
ПО ГрафикиРаботыПоВидамВремени.ГрафикРаботы = ВТГрафикиРаботСотрудников.ГрафикРаботы
И ГрафикиРаботыПоВидамВремени.ПериодРегистрации = ВТГрафикиРаботСотрудников.ПериодРегистрацииВремени
И ГрафикиРаботыПоВидамВремени.Месяц = ВТГрафикиРаботСотрудников.Месяц
И (ГрафикиРаботыПоВидамВремени.Дата МЕЖДУ ВТГрафикиРаботСотрудников.ПериодДействияНачало И ВТГрафикиРаботСотрудников.ПериодДействияКонец)
ГДЕ
&ЕстьНерабочиеПериоды
И ГрафикиРаботыПоВидамВремени.ВидУчетаВремени = &ОплачиваемыеНерабочиеДни
СГРУППИРОВАТЬ ПО
ВТГрафикиРаботСотрудников.ВидРасчета,
ВТГрафикиРаботСотрудников.Сотрудник,
ВТГрафикиРаботСотрудников.ПериодДействияНачало
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
Данные.Сотрудник КАК Сотрудник,
ВЫБОР
КОГДА Данные.ВидРасчета = ЗНАЧЕНИЕ(Перечисление.ВидыОсобыхНачисленийИУдержаний.ДоговорРаботыУслуги)
ТОГДА ЕСТЬNULL(ОсновныеКадровыеДанныеФизическихЛиц.ОсновнаяОрганизация, Данные.Организация)
КОГДА Данные.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.ВнутреннееСовместительство)
ИЛИ Данные.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.Подработка)
ТОГДА ЕСТЬNULL(ОсновныеКадровыеДанныеФизическихЛиц.ОсновнаяОрганизация, ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка))
ИНАЧЕ Данные.Организация
КОНЕЦ КАК Организация,
Данные.ГоловнаяОрганизация КАК ГоловнаяОрганизация,
ВЫБОР
КОГДА Данные.ВидРасчета = ЗНАЧЕНИЕ(Перечисление.ВидыОсобыхНачисленийИУдержаний.ДоговорРаботыУслуги)
ТОГДА ЕСТЬNULL(ОсновныеКадровыеДанныеФизическихЛиц.ОсновноеПодразделение, Данные.Подразделение)
КОГДА Данные.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.ВнутреннееСовместительство)
ИЛИ Данные.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.Подработка)
ТОГДА ЕСТЬNULL(ОсновныеКадровыеДанныеФизическихЛиц.ОсновноеПодразделение, ЗНАЧЕНИЕ(Справочник.ПодразделенияОрганизаций.ПустаяСсылка))
ИНАЧЕ Данные.Подразделение
КОНЕЦ КАК ПодразделениеСтатистики,
ВЫБОР
КОГДА Данные.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.ОсновноеМестоРаботы)
И Данные.ВидРасчета = ЗНАЧЕНИЕ(Перечисление.ВидыОсобыхНачисленийИУдержаний.ДоговорРаботыУслуги)
ТОГДА ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.ВнутреннееСовместительство)
ИНАЧЕ Данные.ВидЗанятости
КОНЕЦ КАК ВидЗанятости,
КадровыеДанныеСотрудников.ВидЗанятости КАК ВидЗанятостиГоловногоСотрудника,
ВЫБОР
КОГДА Данные.ВидРасчета = ЗНАЧЕНИЕ(Перечисление.ВидыОсобыхНачисленийИУдержаний.ДоговорРаботыУслуги)
ТОГДА СотрудникиПоДоговорамГПХкакВнутренниеСовместители.ВидЗанятостиОсновногоСотрудникаПоМесяцуНачисления
ИНАЧЕ ЕСТЬNULL(СотрудникиПоДоговорамГПХкакВнутренниеСовместители.ВидЗанятостиОсновногоСотрудника, СотрудникиПоДоговорамГПХкакВнутренниеСовместители.ВидЗанятостиОсновногоСотрудникаПоМесяцуНачисления)
КОНЕЦ КАК ВидЗанятостиОсновногоСотрудника,
ВЫБОР
КОГДА Данные.МесяцНачисления МЕЖДУ &НачалоПериода И &КонецПериода
ТОГДА ВЫБОР
КОГДА (ПланВидовРасчетаНачисления.ЗачетОтработанногоВремени
ИЛИ ПланВидовРасчетаНачисления.КатегорияНачисленияИлиНеоплаченногоВремени = ЗНАЧЕНИЕ(Перечисление.КатегорииНачисленийИНеоплаченногоВремени.ОплатаКомандировки)
ИЛИ ПланВидовРасчетаНачисления.КатегорияНачисленияИлиНеоплаченногоВремени = ЗНАЧЕНИЕ(Перечисление.КатегорииНачисленийИНеоплаченногоВремени.ДенежноеСодержаниеНаПериодКомандировки))
И ПланВидовРасчетаНачисления.ОбозначениеВТабелеУчетаРабочегоВремени <> &КормлениеРебенка
ТОГДА Данные.ОтработаноЧасов
ИНАЧЕ 0
КОНЕЦ
ИНАЧЕ 0
КОНЕЦ КАК ОтработаноЧасов,
ВЫБОР
КОГДА Данные.МесяцНачисления > КадровыеДанныеСотрудников.ДатаУвольнения
И КадровыеДанныеСотрудников.ДатаУвольнения <> ДАТАВРЕМЯ(1, 1, 1)
ТОГДА ИСТИНА
ИНАЧЕ ЛОЖЬ
КОНЕЦ КАК СотрудникУволен,
ВЫБОР
КОГДА ВЫБОР
КОГДА Данные.МесяцНачисления МЕЖДУ &НачалоПериода И &КонецПериода
ТОГДА ВЫБОР
КОГДА ПланВидовРасчетаНачисления.ЗачетОтработанногоВремени
ИЛИ ПланВидовРасчетаНачисления.КатегорияНачисленияИлиНеоплаченногоВремени = ЗНАЧЕНИЕ(Перечисление.КатегорииНачисленийИНеоплаченногоВремени.ОплатаКомандировки)
ИЛИ ПланВидовРасчетаНачисления.КатегорияНачисленияИлиНеоплаченногоВремени = ЗНАЧЕНИЕ(Перечисление.КатегорииНачисленийИНеоплаченногоВремени.ДенежноеСодержаниеНаПериодКомандировки)
ТОГДА Данные.ОтработаноЧасов
ИНАЧЕ 0
КОНЕЦ
ИНАЧЕ 0
КОНЕЦ > 0
ТОГДА ЕСТЬNULL(ВТОплачиваемыеНерабочиеЧасы.ДополнительноеЗначение, 0)
КОГДА ВЫБОР
КОГДА Данные.МесяцНачисления МЕЖДУ &НачалоПериода И &КонецПериода
ТОГДА ВЫБОР
КОГДА ПланВидовРасчетаНачисления.ЗачетОтработанногоВремени
ИЛИ ПланВидовРасчетаНачисления.КатегорияНачисленияИлиНеоплаченногоВремени = ЗНАЧЕНИЕ(Перечисление.КатегорииНачисленийИНеоплаченногоВремени.ОплатаКомандировки)
ИЛИ ПланВидовРасчетаНачисления.КатегорияНачисленияИлиНеоплаченногоВремени = ЗНАЧЕНИЕ(Перечисление.КатегорииНачисленийИНеоплаченногоВремени.ДенежноеСодержаниеНаПериодКомандировки)
ТОГДА Данные.ОтработаноЧасов
ИНАЧЕ 0
КОНЕЦ
ИНАЧЕ 0
КОНЕЦ < 0
ТОГДА ЕСТЬNULL(-ВТОплачиваемыеНерабочиеЧасы.ДополнительноеЗначение, 0)
КОГДА ВЫБОР
КОГДА Данные.МесяцНачисления МЕЖДУ &НачалоПериода И &КонецПериода
ТОГДА ВЫБОР
КОГДА ПланВидовРасчетаНачисления.ЗачетОтработанногоВремени
ИЛИ ПланВидовРасчетаНачисления.КатегорияНачисленияИлиНеоплаченногоВремени = ЗНАЧЕНИЕ(Перечисление.КатегорииНачисленийИНеоплаченногоВремени.ОплатаКомандировки)
ИЛИ ПланВидовРасчетаНачисления.КатегорияНачисленияИлиНеоплаченногоВремени = ЗНАЧЕНИЕ(Перечисление.КатегорииНачисленийИНеоплаченногоВремени.ДенежноеСодержаниеНаПериодКомандировки)
ТОГДА Данные.ОтработаноЧасов
ИНАЧЕ 0
КОНЕЦ
ИНАЧЕ 0
КОНЕЦ = 0
ТОГДА 0
КОНЕЦ КАК ОплачиваемыеНерабочиеЧасы
ПОМЕСТИТЬ ВТИтоги
ИЗ
ОбщиеЗапросыНачисленияУдержанияИтоговая КАК Данные
ЛЕВОЕ СОЕДИНЕНИЕ ПредставленияСвойстваСтатейФинансирования КАК ПредставленияСвойстваСтатейФинансирования
ПО Данные.СтатьяФинансирования = ПредставленияСвойстваСтатейФинансирования.СтатьяФинансирования
ЛЕВОЕ СОЕДИНЕНИЕ ПредставленияКадровыеДанныеСотрудников_Зарплата КАК КадровыеДанныеПриостановленных
ПО (ВЫБОР
КОГДА Данные.НачислениеЗаТекущийМесяц
ИЛИ Данные.НачислениеЗаБудущийМесяц
ТОГДА Данные.ДатаНачала = КадровыеДанныеПриостановленных.Период
ИНАЧЕ Данные.МесяцНачисления = КадровыеДанныеПриостановленных.Период
КОНЕЦ)
И Данные.Сотрудник.ГоловнойСотрудник = КадровыеДанныеПриостановленных.Сотрудник
И (КадровыеДанныеПриостановленных.Состояние = ЗНАЧЕНИЕ(Перечисление.СостоянияСотрудника.ТрудовойДоговорПриостановлен))
ЛЕВОЕ СОЕДИНЕНИЕ ПредставленияКадровыеДанныеСотрудников_Зарплата КАК КадровыеДанныеСотрудников
ПО Данные.Сотрудник.ГоловнойСотрудник = КадровыеДанныеСотрудников.Сотрудник
И Данные.ДатаНачала = КадровыеДанныеСотрудников.Период
ЛЕВОЕ СОЕДИНЕНИЕ ВТОсновныеКадровыеДанныеФизическихЛиц КАК ОсновныеКадровыеДанныеФизическихЛиц
ПО Данные.ФизическоеЛицо = ОсновныеКадровыеДанныеФизическихЛиц.ФизическоеЛицо
И (ВЫБОР
КОГДА Данные.ВнутреннееСовместительствоИлиПодработка
И КадровыеДанныеСотрудников.Состояние <> ЗНАЧЕНИЕ(Перечисление.СостоянияСотрудника.РаботаВОтпускеПоУходуЗаРебенком)
ТОГДА ВЫБОР
КОГДА Данные.НачислениеНеСНачалаМесяца
ТОГДА ВЫБОР
КОГДА Данные.НачислениеЗаТекущийМесяц
ТОГДА Данные.ДатаНачала = ОсновныеКадровыеДанныеФизическихЛиц.Период
КОГДА Данные.НачислениеЗаПрошлыйМесяц
ТОГДА КОНЕЦПЕРИОДА(Данные.ДатаНачала, МЕСЯЦ) = ОсновныеКадровыеДанныеФизическихЛиц.Период
КОГДА Данные.НачислениеЗаБудущийМесяц
ТОГДА Данные.МесяцНачисления = ОсновныеКадровыеДанныеФизическихЛиц.Период
КОНЕЦ
ИНА��Е ВЫБОР
КОГДА Данные.НачислениеЗаПрошлыйМесяц
ТОГДА Данные.ДатаНачала = ОсновныеКадровыеДанныеФизическихЛиц.Период
ИНАЧЕ КОНЕЦПЕРИОДА(Данные.ДатаНачала, МЕСЯЦ) = ОсновныеКадровыеДанныеФизическихЛиц.Период
КОНЕЦ
КОНЕЦ
КОГДА Данные.ДатаПриема = ДАТАВРЕМЯ(1, 1, 1)
ТОГДА Данные.ДатаНачала = ОсновныеКадровыеДанныеФизическихЛиц.Период
ИНАЧЕ Данные.ДатаНачала = ОсновныеКадровыеДанныеФизическихЛиц.Период
И Данные.ВидЗанятости = ОсновныеКадровыеДанныеФизическихЛиц.ВидЗанятости
КОНЕЦ)
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СтрокиОтчетностиМониторингаРаботниковСоциальнойСферы КАК СтрокиОтчетностиМониторингаРаботниковСоциальнойСферы
ПО (ОсновныеКадровыеДанныеФизическихЛиц.ОсновнаяДолжностьПоШтатномуРасписанию = СтрокиОтчетностиМониторингаРаботниковСоциальнойСферы.Должность)
И (СтрокиОтчетностиМониторингаРаботниковСоциальнойСферы.ВидФормыМониторинга = &ФормаМониторинга)
ЛЕВОЕ СОЕДИНЕНИЕ ПланВидовРасчета.Начисления КАК ПланВидовРасчетаНачисления
ПО Данные.ВидРасчета = ПланВидовРасчетаНачисления.Ссылка
ЛЕВОЕ СОЕДИНЕНИЕ ВТВидыЗанятостиОсновныхСотрудников КАК СотрудникиПоДоговорамГПХкакВнутренниеСовместители
ПО Данные.Сотрудник = СотрудникиПоДоговорамГПХкакВнутренниеСовместители.Сотрудник
И (ВЫБОР
КОГДА НАЧАЛОПЕРИОДА(Данные.ДатаНачала, МЕСЯЦ) > Данные.МесяцНачисления
ТОГДА Данные.МесяцНачисления = СотрудникиПоДоговорамГПХкакВнутренниеСовместители.МесяцНачисления
И Данные.МесяцНачисления = СотрудникиПоДоговорамГПХкакВнутренниеСовместители.ДатаНачала
КОГДА НАЧАЛОПЕРИОДА(Данные.ДатаНачала, МЕСЯЦ) < Данные.МесяцНачисления
ТОГДА НАЧАЛОПЕРИОДА(Данные.ДатаНачала, МЕСЯЦ) = СотрудникиПоДоговорамГПХкакВнутренниеСовместители.ДатаНачала
И Данные.МесяцНачисления = СотрудникиПоДоговорамГПХкакВнутренниеСовместители.МесяцНачисления
ИНАЧЕ Данные.ДатаНачала = СотрудникиПоДоговорамГПХкакВнутренниеСовместители.ДатаНачала
И Данные.МесяцНачисления = СотрудникиПоДоговорамГПХкакВнутренниеСовместители.МесяцНачисления
КОНЕЦ)
И (Данные.ВидЗанятости <> ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.Совместительство)
ИЛИ Данные.ВидЗанятости ЕСТЬ NULL)
И (Данные.ВидЗанятости <> ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.ОсновноеМестоРаботы)
ИЛИ Данные.ВидЗанятости ЕСТЬ NULL)
ЛЕВОЕ СОЕДИНЕНИЕ ВТОплачиваемыеНерабочиеЧасы КАК ВТОплачиваемыеНерабочиеЧасы
ПО Данные.Сотрудник = ВТОплачиваемыеНерабочиеЧасы.Сотрудник
И Данные.ВидРасчета = ВТОплачиваемыеНерабочиеЧасы.ВидРасчета
И Данные.ДатаНачала = ВТОплачиваемыеНерабочиеЧасы.ПериодДействияНачало
ГДЕ
(ЕСТЬNULL(ПланВидовРасчетаНачисления.КатегорияНачисленияИлиНеоплаченногоВремени, НЕОПРЕДЕЛЕНО) <> ЗНАЧЕНИЕ(Перечисление.КатегорииНачисленийИНеоплаченногоВремени.ПособиеПоУходуЗаРебенкомДоТрехЛет)
ИЛИ ЕСТЬNULL(КадровыеДанныеСотрудников.Состояние, НЕОПРЕДЕЛЕНО) = ЗНАЧЕНИЕ(Перечисление.СостоянияСотрудника.РаботаВОтпускеПоУходуЗаРебенком))
И (ВЫБОР
КОГДА ГОД(&НачалоПериода) > 2019
ТОГДА Данные.ВидРасчета.КатегорияСтатистическогоНаблюдения <> ЗНАЧЕНИЕ(Перечисление.КатегорииСтатистическогоНаблюдения.ПустаяСсылка)
ИНАЧЕ Данные.ВидРасчета.КатегорияСтатистическогоНаблюдения2019 <> ЗНАЧЕНИЕ(Перечисление.КатегорииСтатистическогоНаблюдения.ПустаяСсылка)
КОНЕЦ
ИЛИ Данные.ВидРасчета В (ЗНАЧЕНИЕ(Перечисление.ВидыОсобыхНачисленийИУдержаний.КомпенсацияЗаЗадержкуЗарплаты), ЗНАЧЕНИЕ(Перечисление.ВидыОсобыхНачисленийИУдержаний.ДоговорРаботыУслуги), ЗНАЧЕНИЕ(Перечисление.ВидыОсобыхНачисленийИУдержаний.СтоимостьПодарковПризов))
ИЛИ Данные.ВидРасчета В (&ВидыВыплатНаПериодТрудоустройства))
И ЕСТЬNULL(КадровыеДанныеСотрудников.Состояние, НЕОПРЕДЕЛЕНО) <> ЗНАЧЕНИЕ(Перечисление.СостоянияСотрудника.ОтпускПоУходуЗаРебенком)
И ЕСТЬNULL(КадровыеДанныеСотрудников.Состояние, НЕОПРЕДЕЛЕНО) <> ЗНАЧЕНИЕ(Перечисление.СостоянияСотрудника.ОтпускПоБеременностиИРодам)
И Данные.ГоловнаяОрганизация = &П7
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
Итоги.Сотрудник КАК Сотрудник,
ВЫБОР
КОГДА Итоги.ПодразделениеСтатистики = ЗНАЧЕНИЕ(Справочник.ПодразделенияОрганизаций.ПустаяСсылка)
ИЛИ Итоги.ПодразделениеСтатистики.КодОКВЭД2 = ""
ТОГДА Итоги.Организация.КодОКВЭД2
ИНАЧЕ Итоги.ПодразделениеСтатистики.КодОКВЭД2
КОНЕЦ КАК КодОКВЭД2,
СУММА(ВЫБОР
КОГДА ЕСТЬNULL(Итоги.ВидЗанятостиОсновногоСотрудника, Итоги.ВидЗанятостиГоловногоСотрудника) = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.ОсновноеМестоРаботы)
И НЕ Итоги.СотрудникУволен
И (НЕ Итоги.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.Совместительство)
ИЛИ Итоги.ВидЗанятости ЕСТЬ NULL)
ТОГДА Итоги.ОтработаноЧасов - Итоги.ОплачиваемыеНерабочиеЧасы
ИНАЧЕ 0
КОНЕЦ) КАК ОтработаноЧасовРаботникамиСписочногоСоставаСумма,
ПРЕДСТАВЛЕНИЕССЫЛКИ(Итоги.Сотрудник) КАК СотрудникПредставление,
Итоги.Сотрудник.Наименование КАК СотрудникНаименование,
ВЫБОР
КОГДА Итоги.Сотрудник.Наименование ЕСТЬ NULL
ТОГДА 0
ИНАЧЕ 1
КОНЕЦ КАК СотрудникНаименованиеПолеУпорядочивания1,
ВЫБОР
КОГДА ТИПЗНАЧЕНИЯ(Итоги.Сотрудник) В (&П8)
ТОГДА 1
КОГДА Итоги.Сотрудник.Ссылка ЕСТЬ NULL
ТОГДА 0
ИНАЧЕ 1
КОНЕЦ КАК СотрудникПолеУпорядочивания1
ИЗ
ВТИтоги КАК Итоги
ГДЕ
Итоги.Организация = &П6
И Итоги.ГоловнаяОрганизация = &П7
СГРУППИРОВАТЬ ПО
Итоги.Сотрудник,
Итоги.Сотрудник.Наименование,
ВЫБОР
КОГДА Итоги.ПодразделениеСтатистики = ЗНАЧЕНИЕ(Справочник.ПодразделенияОрганизаций.ПустаяСсылка)
ИЛИ Итоги.ПодразделениеСтатистики.КодОКВЭД2 = ""
ТОГДА Итоги.Организация.КодОКВЭД2
ИНАЧЕ Итоги.ПодразделениеСтатистики.КодОКВЭД2
КОНЕЦ,
ВЫБОР
КОГДА Итоги.Сотрудник.Наименование ЕСТЬ NULL
ТОГДА 0
ИНАЧЕ 1
КОНЕЦ,
ВЫБОР
КОГДА ТИПЗНАЧЕНИЯ(Итоги.Сотрудник) В (&П8)
ТОГДА 1
КОГДА Итоги.Сотрудник.Ссылка ЕСТЬ NULL
ТОГДА 0
ИНАЧЕ 1
КОНЕЦ
УПОРЯДОЧИТЬ ПО
СотрудникНаименованиеПолеУпорядочивания1,
СотрудникНаименование,
СотрудникПолеУпорядочивания1,
СотрудникНаименование,
СотрудникИ вот тут-то вспомнился случай с ИИ-шечкой. Но я же ей не верю — посмотрю сам. Взял текст запроса, создал обработку, вставил в неё, открыл конструктором. Подзапросов многовато, но пробежался. Тут есть одна хитрость: временные таблицы мне не нужны, а реальные есть в каждом подзапросе на вкладке «Дополнительно», вот здесь:

Конечно, пришлось мониторить, что нет всяких вложенных запросов. Нашёл все «ИЗ», проверил таблицы через «ПравоДоступа» — есть права на все таблицы.
Ну что ж, попробую ИИ.
Взял для пробы первый подзапрос с таблицами
ВЫБРАТЬ РАЗРЕШЕННЫЕ
НАЧАЛОПЕРИОДА(НачисленияИУдержания.Период, МЕСЯЦ) КАК МесяцНачисления,
НачисленияИУдержания.Период КАК Период,
НачисленияИУдержания.ФизическоеЛицо КАК ФизическоеЛицо,
НачисленияИУдержания.СтатьяФинансирования КАК СтатьяФинансирования,
НачисленияИУдержания.СтатьяРасходов КАК СтатьяРасходов,
НачисленияИУдержания.Подразделение КАК Подразделение,
НачисленияИУдержания.ГруппаНачисленияУдержанияВыплаты КАК Группа,
НачисленияИУдержания.НачислениеУдержание КАК ВидРасчета,
НачисленияИУдержания.Организация КАК Организация,
НачисленияИУдержания.Сотрудник КАК Сотрудник,
НачисленияИУдержания.ДатаНачала КАК ДатаНачала,
НачисленияИУдержания.Регистратор КАК Регистратор,
НачисленияИУдержания.ДокументОснование КАК ДокументОснование,
НачисленияИУдержания.ИдентификаторСтроки КАК ИдентификаторСтроки,
ИСТИНА КАК НачислениеТекущегоПериода
ПОМЕСТИТЬ ВТНачисленияИУдержанияБезКадровыхДанных
ИЗ
РегистрНакопления.НачисленияУдержанияПоСотрудникам КАК НачисленияИУдержания
ГДЕ
НачисленияИУдержания.Период МЕЖДУ &НачалоПериода И &КонецПериода
И НЕ НачисленияИУдержания.Регистратор В (&ИсключаемыеСсылки)
И НачисленияИУдержания.Организация.ГоловнаяОрганизация = &П7
СГРУППИРОВАТЬ ПО
НачисленияИУдержания.Период,
НачисленияИУдержания.ФизическоеЛицо,
НачисленияИУдержания.СтатьяФинансирования,
НачисленияИУдержания.СтатьяРасходов,
НачисленияИУдержания.Подразделение,
НачисленияИУдержания.ГруппаНачисленияУдержанияВыплаты,
НачисленияИУдержания.НачислениеУдержание,
НачисленияИУдержания.Организация,
НачисленияИУдержания.Сотрудник,
НачисленияИУдержания.ДатаНачала,
НачисленияИУдержания.Регистратор,
НАЧАЛОПЕРИОДА(НачисленияИУдержания.Период, МЕСЯЦ),
НачисленияИУдержания.ДокументОснование,
НачисленияИУдержания.ИдентификаторСтрокиПростой промпт для DeepSeek: «Какие таблицы 1С использует этот запрос?». ИИ дал верный ответ. Ещё он ерунды всякой отдельным пунктом дописал (все ссылочные реквизиты выбрал, и дописал, что к этим таблицам тоже будет обращение) Но главное – нужный ответ получен. Запустил для всего запроса — список точно как у меня. Так в чём же проблема? Надо искать. А как? Первая же идея: делить запрос пополам и проверять, уйдёт ли ошибка. В отладчике я могу подставить текст запроса и проверить, сформируется ли отчёт. Но больно уж неудобно на каждую проверку запускать отчёт.
Консоль я не люблю для таких целей использовать. Разный контекст в консоли и при выполнении, даже если всю СКД выгрузить. Не раз она меня подводила при отладке. Но я в копии базы, поэтому могу временно внести изменения:
МакетКомпоновки = ЗарплатаКадрыОтчеты.МакетКомпоновкиДанных(СхемаКомпоновки, НастройкиОтчета);
ТМП(ДокументРезультат, ВнешниеНаборыДанных, МакетКомпоновки);
...
Функция ТМП(ДокументРезультат, ВнешниеНаборыДанных, МакетКомпоновки)
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
Если ВнешниеНаборыДанных <> Неопределено Тогда
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ВнешниеНаборыДанных, , Истина);
Иначе
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, , , Истина);
КонецЕсли;
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных, Истина);Возврат ДокументРезультат;
КонецФункцииТеперь поставлю точку на вызов новой функции, буду менять текст запроса и проверять значение функции — ошибка или нет. И добавлю где-нибудь рядом комментарий,
//МакетКомпоновки.НаборыДанных.НаборДанных1.Запросчтобы быстро выделять выражение, а не раскрывать плюсики в окне просмотра:

Впрочем, можно все выражения и в списке выбора найти. Конфигуратор не ЕДТ, в котором никак не научат открывать окно просмотра без начального выражения, список короче, да и не всегда даёт изменить значение.
Размещаю запрос в новой обработке в #Область. Область — моя любимая инструкция, даёт красивый, структурированный код. Тоже тема для отдельной статьи. Так стал выглядеть модуль:

В нижнюю область я поместил оригинальный запрос, в верхнюю — его копию, которую буду менять, а между ними — промежуточные варианты.
Сразу же делаю промежуточный вариант, в котором меняю текст последнего подзапроса: заменяю все поля константами:
ВЫБРАТЬ
""СОТР"" КАК Сотрудник,
""КодОКВЭД2"" КАК КодОКВЭД2,
0 КАК ОтработаноЧасовРаботникамиСписочногоСоставаСумма,
""ПРЕДСТАВЛЕНИЕ"" КАК СотрудникПредставление,
""Наименование"" КАК СотрудникНаименование,
0 КАК СотрудникНаименованиеПолеУпорядочивания1,
1 КАК СотрудникПолеУпорядочивания1Теперь как бы я ни удалял предпоследние таблицы, ошибки не возникнет: временные таблицы не используются.
Всё готово к действиям. Жалко, что ни ИИ, ни Git-конвейеры пока эти действия повторять не умеют:
Изменяю запрос
Сворачиваю область
В буфер её
Вставляю в окно подстановки значения

Текст запроса в окне подстановки. Удаляю конец области... Убираю область в конце и в начале

...и начало Проверяю значение функции
Всё быстро, поскольку процесс стабилен и перезапуска не требует.
И неожиданно прихожу к причине: к самому началу, к тому подзапросу, который первым cкормил ИИ. Подзапросы до него не используют данные базы, там не на что ругаться. А здесь-то что?
Если посмотреть подзапрос в общем тексте, то он состоит из объединения таблиц. Убрал одну — ошибка остаётся. Убрал все поля — ошибка остаётся.
Ага, значит, дело в условиях. Половинным делением нашёл, что в организациях. Проверил права — они есть, но с RLS. Вот и выяснилось, в чём дело. Добавил РАЗРЕШЕННЫЕ к запросу — заработал мой коротенький запрос. Пробежался по тексту, добавил РАЗРЕШЕННЫЕ в подзапросы, где такие же обращения, подставил новый текст — ошибка.
Пошёл снова половинным делением. И нашёл такой подзапрос:
ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
ТаблицаОтборов.Период КАК Период,
ТаблицаОтборов.Сотрудник КАК Сотрудник
ПОМЕСТИТЬ ВТОтборовРазличныхСотрудников
ИЗ
ВТВсеПериодомКадровыхДанных КАК ТаблицаОтборов
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Сотрудники КАК СправочникСотрудники
ПО ТаблицаОтборов.Сотрудник = СправочникСотрудники.СсылкаЯ снова озадачился. А зачем здесь соединение? От него не только ошибка, но и замедление запроса. Скорее всего, это так механизм представлений ошибочно транслировал запрос.
Проверяю Сотрудников — там снова RLS. Пока просто ставлю РАЗРЕШЕННЫЕ и к этому запросу. Проверяю все обращения к Сотрудникам через точку и повторяю полный запрос. Опять ошибка. На сей раз причиной оказалась просто выборка сотрудника из измерения регистра. Таки права была ИИшечка! Эти поля не ерунда, они хоть и не все, но тоже нужны.
Добавил РАЗРЕШЕННЫЕ, проверил — снова ошибка.
Тут мне совсем надоело таблицы искать. Вставил перед вызовом процедуры такой код:
МакетКомпоновки.НаборыДанных.НачисленияУдержания.Запрос =
СтрЗаменить(СтрЗаменить(
МакетКомпоновки.НаборыДанных.НачисленияУдержания.Запрос,
" РАЗРЕШЕННЫЕ",
" "),
"/
|ВЫБРАТЬ",
"/
|ВЫБРАТЬ РАЗРЕШЕННЫЕ");И отправил аналитику на проверку. Пока он проверял (спойлер: всё сработало), пришла в голову мысль: что-то ж было в стандартах 1С про РАЗРЕШЕННЫЕ. Дай-ка освежу… Но до стандартов не добрался. Ещё раньше вот эта ссылка попалась.
Тут я понял, что доработка моя не нужна, и остановил аналитика. Действительно, пусть стоит в отчёте 25 тыс. Из них 5 тыс. — по сотрудникам, закрытым для пользователя, и он в расшифровке увидит 20. Будут жалобы и недовольство.
И да, я не исключаю, что в маленьком странном запросе целью соединения было именно применение RLS: к временной таблице RLS не применится, а вот если сотрудников добавить — то сработает. Так ли это, и насколько оптимален такой метод — тема для отдельного исследования.
Почему же я начал исправлять запрос и не понял, что будут получены некорректные данные? Да потому, что сначала никакого RLS не встретилось и сложилась полная уверенность, что у пользователя просто недостаточно прав и надо обеспечить ему возможность построить отчёт. А когда появилась RLS без РАЗРЕШЕННЫЕ, подсознательно сработала убеждённость, что это ошибка.
А пока у меня остался последний вопрос. Если мне в запросе к DeepSeek реально потребуются только используемые запросом таблицы, без учёта особенностей построителя, то можно ли отделить для справочника обращения через точку? Справится ли ИИ?
И он справился. Не с первого раза, а когда я изменил промпт на «Реквизиты каких таблиц выбираются в запросе (обращение через две и более точек)?». Замечу, что промпты были простейшие. Отмечаю для себя, что работает DeepSeek с текстами запросов очень даже неплохо.
Выводы
ИИ уже сейчас — мощный помощник. Всё чаще вполне неплохо вместе с вопросом: «Как я это сделаю?» сразу ставить и вопрос: «А чем может мне помочь ИИ?».
Помог бы мне ИИ в данном случае? Да, но не так всё просто. Дело в том, что я изначально про «две точки» не подозревал. А поэтому до половинного деления дело бы дошло всё равно.
Продуманными действиями (половинное деление, организация повторов действий по шаблону) удалось ускорить поиск ошибки.
Как правильно действовать при повторе ситуации с другим отчётом?
а) Задать себе вопрос: «А может ли в отчёте корректно применяться RLS?» Если да,то на каждом следующем шаге следует при обнаружении RLS как причины нарушения прав искать пути исправления, а если нет — прекращать дальнейший поиск.
б) Посмотреть настройки RLS у пользователя. Это сузит список подозреваемых таблиц, если причиной окажется RLS.
в) Получить список таблиц с помощью ИИ и проверить доступ к основным таблицам (из конструкции ИЗ) с учётом RLS.
г) Далее проверить обращения через две и более точек, и снова проверить доступ.И потом проверить уже поля. Если причина не будет обнаружена, тогда применять половинное деление.
После завершения любой работы никогда не лишним будет вопрос: «А всё ли я правильно сделал с учётом изменившейся ситуации?» В большинстве задач такие изменения бывают.
