Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка [1]) СтандартнаяОбработка [1] = Ложь; НайденныйПараметрКоличествоДнейМоментаНачалаНачисленияПениДоОплаты = ЭтотОбъект.КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("КоличествоДнейМоментаНачалаНачисленияПениДоОплаты"); НайденныйПараметрНачалоПериода = ЭтотОбъект.КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("НачалоПериода"); НайденныйПараметрСрокОплатыРабочиеДни = ЭтотОбъект.КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("СрокОплатыРабочиеДни"); Если НайденныйПараметрКоличествоДнейМоментаНачалаНачисленияПениДоОплаты > Неопределено И НайденныйПараметрНачалоПериода > Неопределено И НайденныйПараметрСрокОплатыРабочиеДни > Неопределено Тогда НайденныйПараметрКоличествоДнейМоментаНачалаНачисленияПениДоОплаты.Использование = Истина; НайденныйПараметрНачалоПериода.Использование = Истина; НайденныйПараметрСрокОплатыРабочиеДни.Использование = Истина; Состояние("Обработка [1] производственного календаря"); Запрос = Новый Запрос; Если НайденныйПараметрСрокОплатыРабочиеДни.Значение Тогда Запрос.Текст = "ВЫБРАТЬ | РегламентированныйПроизводственныйКалендарь.ДатаКалендаря КАК Дата |ПОМЕСТИТЬ Даты |ИЗ | РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь |ГДЕ | НАЧАЛОПЕРИОДА(РегламентированныйПроизводственныйКалендарь.ДатаКалендаря, ДЕНЬ) >= НАЧАЛОПЕРИОДА(&НачалоПериода, ДЕНЬ) |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | Даты.Дата, | КОЛИЧЕСТВО(РАЗЛИЧНЫЕ РегламентированныйПроизводственныйКалендарь.ДатаКалендаря) КАК КоличествоРабочихДней, | МАКСИМУМ(РегламентированныйПроизводственныйКалендарь.ДатаКалендаря) КАК ДатаКалендаря, | РегламентированныйПроизводственныйКалендарь1.ДатаКалендаря КАК ДатаКалендаряДляГруппировки |ПОМЕСТИТЬ ДатыПроизводственногоКалендаря |ИЗ | РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Даты КАК Даты | ПО (Даты.Дата | И (ДОБАВИТЬКДАТЕ(Даты.Дата, ДЕНЬ, 30) > РегламентированныйПроизводственныйКалендарь.ДатаКалендаря) | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь1 | ПО РегламентированныйПроизводственныйКалендарь.ДатаКалендаря |ГДЕ | (РегламентированныйПроизводственныйКалендарь.ВидДня = ЗНАЧЕНИЕ(Перечисление.ВидыДнейПроизводственногоКалендаря.Предпраздничный) | ИЛИ РегламентированныйПроизводственныйКалендарь.ВидДня = ЗНАЧЕНИЕ(Перечисление.ВидыДнейПроизводственногоКалендаря.Рабочий)) | |СГРУППИРОВАТЬ ПО | РегламентированныйПроизводственныйКалендарь1.ДатаКалендаря, | Даты.Дата | |ИМЕЮЩИЕ | МАКСИМУМ(РегламентированныйПроизводственныйКалендарь.ДатаКалендаря) = РегламентированныйПроизводственныйКалендарь1.ДатаКалендаря И | КОЛИЧЕСТВО(РАЗЛИЧНЫЕ РегламентированныйПроизводственныйКалендарь.ДатаКалендаря) = &КоличествоДнейМоментаНачалаНачисленияПениДоОплаты + 2 |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | Даты.Дата КАК ДатаКалендаря, | МИНИМУМ(ДатыПроизводственногоКалендаря.ДатаКалендаря) КАК РабочаяДата |ПОМЕСТИТЬ РабочиеДаты |ИЗ | Даты КАК Даты | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДатыПроизводственногоКалендаря КАК ДатыПроизводственногоКалендаря | ПО Даты.Дата //|ГДЕ //| Даты.Дата >= &НачалоПериода | |СГРУППИРОВАТЬ ПО | Даты.Дата |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | РабочиеДаты.ДатаКалендаря КАК ДатаКалендаря, | РабочиеДаты.РабочаяДата КАК ДатаНачалаВозникновения |ИЗ | РабочиеДаты КАК РабочиеДаты | |УПОРЯДОЧИТЬ ПО | ДатаКалендаря"; Иначе Запрос.Текст = "ВЫБРАТЬ | РегламентированныйПроизводственныйКалендарь.ДатаКалендаря КАК ДатаКалендаря, | ДОБАВИТЬКДАТЕ(РегламентированныйПроизводственныйКалендарь.ДатаКалендаря, ДЕНЬ, &КоличествоДнейМоментаНачалаНачисленияПениДоОплаты + 2) КАК ДатаНачалаВозникновения |ИЗ | РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь |ГДЕ | НАЧАЛОПЕРИОДА(РегламентированныйПроизводственныйКалендарь.ДатаКалендаря, ДЕНЬ) >= НАЧАЛОПЕРИОДА(&НачалоПериода, ДЕНЬ)"; КонецЕсли; Запрос.УстановитьПараметр("КоличествоДнейМоментаНачалаНачисленияПениДоОплаты", НайденныйПараметрКоличествоДнейМоментаНачалаНачисленияПениДоОплаты.Значение); Запрос.УстановитьПараметр("НачалоПериода", НачалоДня(НайденныйПараметрНачалоПериода.Значение)); РабочиеДатыПроизводственногоКалендаря = Запрос.Выполнить().Выгрузить(); //Процессор вывода в табл.документ ВнешниеНаборыДанных = Новый Структура; ВнешниеНаборыДанных.Вставить("РабочиеДатыПроизводственногоКалендаря", РабочиеДатыПроизводственногоКалендаря); СхемаКомпоновкиДанных =ЭтотОбъект.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных"); Настройки = КомпоновщикНастроек.ПолучитьНастройки(); КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.ПолучитьНастройки() , ДанныеРасшифровки, ,); ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ВнешниеНаборыДанных, ДанныеРасшифровки); ДокументРезультат.Очистить(); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(ДокументРезультат); ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных, Истина); КонецЕсли; КонецПроцедуры
Ссылки
[1] https://www.mykib.org/article/den-devyatyy-integriroval-samyy-bolshoy-katalog-razrabotok-dlya-platformy-1s