Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
НайденныйПараметрКоличествоДнейМоментаНачалаНачисленияПениДоОплаты = ЭтотОбъект.КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("КоличествоДнейМоментаНачалаНачисленияПениДоОплаты");
НайденныйПараметрНачалоПериода = ЭтотОбъект.КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("НачалоПериода");
НайденныйПараметрСрокОплатыРабочиеДни = ЭтотОбъект.КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("СрокОплатыРабочиеДни");
Если НайденныйПараметрКоличествоДнейМоментаНачалаНачисленияПениДоОплаты > Неопределено И НайденныйПараметрНачалоПериода > Неопределено И НайденныйПараметрСрокОплатыРабочиеДни > Неопределено Тогда
НайденныйПараметрКоличествоДнейМоментаНачалаНачисленияПениДоОплаты.Использование = Истина;
НайденныйПараметрНачалоПериода.Использование = Истина;
НайденныйПараметрСрокОплатыРабочиеДни.Использование = Истина;
Состояние("Обработка производственного календаря");
Запрос = Новый Запрос;
Если НайденныйПараметрСрокОплатыРабочиеДни.Значение Тогда
Запрос.Текст = "ВЫБРАТЬ
| РегламентированныйПроизводственныйКалендарь.ДатаКалендаря КАК Дата
|ПОМЕСТИТЬ Даты
|ИЗ
| РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь
|ГДЕ
| НАЧАЛОПЕРИОДА(РегламентированныйПроизводственныйКалендарь.ДатаКалендаря, ДЕНЬ) >= НАЧАЛОПЕРИОДА(&НачалоПериода, ДЕНЬ)
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| Даты.Дата,
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ РегламентированныйПроизводственныйКалендарь.ДатаКалендаря) КАК КоличествоРабочихДней,
| МАКСИМУМ(РегламентированныйПроизводственныйКалендарь.ДатаКалендаря) КАК ДатаКалендаря,
| РегламентированныйПроизводственныйКалендарь1.ДатаКалендаря КАК ДатаКалендаряДляГруппировки
|ПОМЕСТИТЬ ДатыПроизводственногоКалендаря
|ИЗ
| РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Даты КАК Даты
| ПО (Даты.Дата
| И (ДОБАВИТЬКДАТЕ(Даты.Дата, ДЕНЬ, 30) > РегламентированныйПроизводственныйКалендарь.ДатаКалендаря)
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь1
| ПО РегламентированныйПроизводственныйКалендарь.ДатаКалендаря
|ГДЕ
| (РегламентированныйПроизводственныйКалендарь.ВидДня = ЗНАЧЕНИЕ(Перечисление.ВидыДнейПроизводственногоКалендаря.Предпраздничный)
| ИЛИ РегламентированныйПроизводственныйКалендарь.ВидДня = ЗНАЧЕНИЕ(Перечисление.ВидыДнейПроизводственногоКалендаря.Рабочий))
|
|СГРУППИРОВАТЬ ПО
| РегламентированныйПроизводственныйКалендарь1.ДатаКалендаря,
| Даты.Дата
|
|ИМЕЮЩИЕ
| МАКСИМУМ(РегламентированныйПроизводственныйКалендарь.ДатаКалендаря) = РегламентированныйПроизводственныйКалендарь1.ДатаКалендаря И
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ РегламентированныйПроизводственныйКалендарь.ДатаКалендаря) = &КоличествоДнейМоментаНачалаНачисленияПениДоОплаты + 2
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| Даты.Дата КАК ДатаКалендаря,
| МИНИМУМ(ДатыПроизводственногоКалендаря.ДатаКалендаря) КАК РабочаяДата
|ПОМЕСТИТЬ РабочиеДаты
|ИЗ
| Даты КАК Даты
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДатыПроизводственногоКалендаря КАК ДатыПроизводственногоКалендаря
| ПО Даты.Дата
//|ГДЕ
//| Даты.Дата >= &НачалоПериода
|
|СГРУППИРОВАТЬ ПО
| Даты.Дата
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| РабочиеДаты.ДатаКалендаря КАК ДатаКалендаря,
| РабочиеДаты.РабочаяДата КАК ДатаНачалаВозникновения
|ИЗ
| РабочиеДаты КАК РабочиеДаты
|
|УПОРЯДОЧИТЬ ПО
| ДатаКалендаря";
Иначе
Запрос.Текст = "ВЫБРАТЬ
| РегламентированныйПроизводственныйКалендарь.ДатаКалендаря КАК ДатаКалендаря,
| ДОБАВИТЬКДАТЕ(РегламентированныйПроизводственныйКалендарь.ДатаКалендаря, ДЕНЬ, &КоличествоДнейМоментаНачалаНачисленияПениДоОплаты + 2) КАК ДатаНачалаВозникновения
|ИЗ
| РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь
|ГДЕ
| НАЧАЛОПЕРИОДА(РегламентированныйПроизводственныйКалендарь.ДатаКалендаря, ДЕНЬ) >= НАЧАЛОПЕРИОДА(&НачалоПериода, ДЕНЬ)";
КонецЕсли;
Запрос.УстановитьПараметр("КоличествоДнейМоментаНачалаНачисленияПениДоОплаты", НайденныйПараметрКоличествоДнейМоментаНачалаНачисленияПениДоОплаты.Значение);
Запрос.УстановитьПараметр("НачалоПериода", НачалоДня(НайденныйПараметрНачалоПериода.Значение));
РабочиеДатыПроизводственногоКалендаря = Запрос.Выполнить().Выгрузить();
//Процессор вывода в табл.документ
ВнешниеНаборыДанных = Новый Структура;
ВнешниеНаборыДанных.Вставить("РабочиеДатыПроизводственногоКалендаря", РабочиеДатыПроизводственногоКалендаря);
СхемаКомпоновкиДанных =ЭтотОбъект.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
Настройки = КомпоновщикНастроек.ПолучитьНастройки();
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.ПолучитьНастройки() , ДанныеРасшифровки, ,);
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ВнешниеНаборыДанных, ДанныеРасшифровки);
ДокументРезультат.Очистить();
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных, Истина);
КонецЕсли;
КонецПроцедуры