Формируется рассылка отчета из внешнего отчета, но есть один нюанс
Добрый день. Есть внешний отчет, который писался под требования заказчика на СКД.
В нем есть параметры типо даты там и др.
В определённый день недели мне необходимо изменять дату и формировать отчет за другой день.
Для этого была написана вот такая процедура:
Однако есть забавный момент. Очет интерактивно формируется, все хорошо. Отрабатывает корректно и данные выводит тоже корректно.
Но, как написано в теме, есть нюанс. Когда отрабатывает рассылка отчета по датам которые не попадают в блок ЕСЛИ рассылка формируется. Когда даты попадают в блок если, дает сообщение об ожибке в ЖР
"Рассылка отчетов не выполнена, так как отчеты пустые или не сформированы из-за ошибок."
При этом строкой выше есть вот такое сообщение в ЖР
"Отчет 'МойУсловныйОтчет' успешно сформирован."
В чем может быть причина такого поведения рассылки и отчета?
В нем есть параметры типо даты там и др.
В определённый день недели мне необходимо изменять дату и формировать отчет за другой день.
Для этого была написана вот такая процедура:
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) Экспорт
СтандартнаяОбработка = Ложь;
НастройкиКД = КомпоновщикНастроек.ПолучитьНастройки();
НачалоПериода = НастройкиКД.ПараметрыДанных.Элементы.Найти("НачалоПериода").Значение;
КонецПериода = НастройкиКД.ПараметрыДанных.Элементы.Найти("КонецПериода").Значение;
Если НачалоПериода <> Неопределено И КонецПериода <> Неопределено Тогда
Если ДеньНедели(НачалоПериода) = 7 И ДеньНедели(КонецПериода) = 1 Тогда
НастройкиКД.ПараметрыДанных.УстановитьЗначениеПараметра("НачалоПериода", НачалоПериода.Дата - (2*60*60*24));
НастройкиКД.ПараметрыДанных.УстановитьЗначениеПараметра("КонецПериода", КонецПериода.Дата - (2*60*60*24));
КонецЕсли;
КонецЕсли;
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиКД, ДанныеРасшифровки);
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки, Ложь);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
ПроцессорВывода.Вывести(ПроцессорКомпоновки);
КонецПроцедуры
ПоказатьОднако есть забавный момент. Очет интерактивно формируется, все хорошо. Отрабатывает корректно и данные выводит тоже корректно.
Но, как написано в теме, есть нюанс. Когда отрабатывает рассылка отчета по датам которые не попадают в блок ЕСЛИ рассылка формируется. Когда даты попадают в блок если, дает сообщение об ожибке в ЖР
"Рассылка отчетов не выполнена, так как отчеты пустые или не сформированы из-за ошибок."
При этом строкой выше есть вот такое сообщение в ЖР
"Отчет 'МойУсловныйОтчет' успешно сформирован."
В чем может быть причина такого поведения рассылки и отчета?
По теме из базы знаний
- 1С:Хлебобулочное и кондитерское производство. Модуль для 1С:ERP и 1С:КА
- Интеграция сценарного тестирования в процесс разработки
- Не спеша, эффективно и правильно – путь разработки. Часть 2. Теория
- "Обновление через копию" - как это использовать?
- Нестандартные приемы безопасной разработки и эксплуатации ПО на платформе 1С, категория "18+"
Найденные решения
Столкнулся с таким же явлением. Ответ нашелся в том, что в обработчике ПриКомпоновкеРезультат настройки компоновщика получаются в переменную, локально обрабатываются и все на этом. Обратно в компоновщик измененные настройки не загружаются.
Помогла одна строка: КомпоновщикНастроек.ЗагрузитьНастройки(Настройки);
То есть обратная загрузка измененных настроек в компоновщик.
Помогла одна строка: КомпоновщикНастроек.ЗагрузитьНастройки(Настройки);
То есть обратная загрузка измененных настроек в компоновщик.
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(4) Прошел отладчиком, добавил вывод в ЖР всех параметров что устанавливаю, добавил обработчик ошибок.
Итога нет, все такая же ситуация.
Что бы исключить вариант с кэшированием или не подтянувшимся вариантом отчета, пересоздал отчет в отдельном файле с другим именем (как самого отчета так и файла), пересоздал рассылку с нуля (не копированием) и все так же картина на выходе
Итога нет, все такая же ситуация.
Что бы исключить вариант с кэшированием или не подтянувшимся вариантом отчета, пересоздал отчет в отдельном файле с другим именем (как самого отчета так и файла), пересоздал рассылку с нуля (не копированием) и все так же картина на выходе
Я проверил что параметры встают корректно и убрал лишние куски кода, что бы глаза не мозолили
В параметры попадает тип дата и при этом не пустое значение, так что проблема не в получении параметров или их установке.
Возможно для рассылки и в т.ч. Фоновых заданий их как то по другому надо устанавливать?
Да и если бы проблема была в параметре, то давало бы ошибку хоть какую то, а так, складывается ощущение что не срабатывает условие или ещё что-то в этом роде
В параметры попадает тип дата и при этом не пустое значение, так что проблема не в получении параметров или их установке.
Возможно для рассылки и в т.ч. Фоновых заданий их как то по другому надо устанавливать?
Да и если бы проблема была в параметре, то давало бы ошибку хоть какую то, а так, складывается ощущение что не срабатывает условие или ещё что-то в этом роде
(8) Не помогло
Скрин ЖР прилагаю
Измененный код модуля тоже ниже
Скрин ЖР прилагаю
Измененный код модуля тоже ниже
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) Экспорт
СтандартнаяОбработка = Ложь;
НастройкиКД = КомпоновщикНастроек.ПолучитьНастройки();
НП = НастройкиКД.ПараметрыДанных.Элементы.Найти("НачалоПериода").Значение;
КП = НастройкиКД.ПараметрыДанных.Элементы.Найти("КонецПериода").Значение;
Если НП <> Неопределено И КП <> Неопределено Тогда
Если ДеньНедели(НП) = 7 И ДеньНедели(КП) = 1 Тогда
Попытка
НастройкиКД.ПараметрыДанных.УстановитьЗначениеПараметра("НачалоПериода", НП.Дата - (2*60*60*24));
НастройкиКД.ПараметрыДанных.УстановитьЗначениеПараметра("КонецПериода", КП.Дата - (2*60*60*24));
Исключение
ЗаписьЖурналаРегистрации(НСтр("ru = 'Выгрузка по 51 счету. Действие с возможной ошибкой'"),
УровеньЖурналаРегистрации.Ошибка, , ,
НСтр("ru = 'Во время выполнения действия произошла неизвестная ошибка.'") + Символы.ПС +
ОбработкаОшибок.ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
КонецПопытки;
КонецЕсли;
КонецЕсли;
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиКД, ДанныеРасшифровки);
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки, Ложь);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
ПроцессорВывода.Вывести(ПроцессорКомпоновки);
КонецПроцедуры
ПоказатьПрикрепленные файлы:

Удалось словить отладчиком. Скрин с типами данных и со значениями которые присвоились прикрепляю. Так же прикрепляю скрин того что вывелось в журнал регистрации. Получается что в условие мы все же попадаем, но корректного выполнения отчета не получаем. Хотя при таком же проходе Интерактивным формированием получаем нормальный результат.
Прикрепленные файлы:


(13) Не понял, что значит "НП.Дата" и "КП.Дата" если НП и КП уже дата.
НастройкиКД.ПараметрыДанных.УстановитьЗначениеПараметра("НачалоПериода", НП.Дата - (2*60*60*24));
НастройкиКД.ПараметрыДанных.УстановитьЗначениеПараметра("КонецПериода", КП.Дата - (2*60*60*24));
НастройкиКД.ПараметрыДанных.УстановитьЗначениеПараметра("НачалоПериода", НП.Дата - (2*60*60*24));
НастройкиКД.ПараметрыДанных.УстановитьЗначениеПараметра("КонецПериода", КП.Дата - (2*60*60*24));
Столкнулся с таким же явлением. Ответ нашелся в том, что в обработчике ПриКомпоновкеРезультат настройки компоновщика получаются в переменную, локально обрабатываются и все на этом. Обратно в компоновщик измененные настройки не загружаются.
Помогла одна строка: КомпоновщикНастроек.ЗагрузитьНастройки(Настройки);
То есть обратная загрузка измененных настроек в компоновщик.
Помогла одна строка: КомпоновщикНастроек.ЗагрузитьНастройки(Настройки);
То есть обратная загрузка измененных настроек в компоновщик.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот