Случай из практики. Есть УТ 11 (используется БСП) и некий внешний отчет, который показывает информацию за определенный период. Необходимо рассылать его каждую пятницу с периодом формирования 1 неделя, т.е. с пятницы прошлой недели до четверга текущей недели.
Создаем рассылку. В качестве параметра КонецПериода выбираем Начало вчерашнего дня — получаем четверг текущей недели.
А вот для того, чтобы "попасть" в прошлую пятницу, вариантов стандартного периода недостаточно.
Чтобы восполнить этот недостаток я решил использовать следующий способ:
1. Создаю 2 дополнительных строковых параметра, в которые буду записывать выражение для вычисления периодов.
2. В процедуре модуля объекта ПриКомпоновкеРезультата описываю вывод отчета программно, где задаю значения периодам их соответствующими выражениями на встроенном языке.
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Настройки = КомпоновщикНастроек.ПолучитьНастройки();
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);
Попытка
МакетКомпоновки.ЗначенияПараметров.НачалоПериода.Значение = Вычислить(МакетКомпоновки.ЗначенияПараметров.ВыражениеНачалоПериода.Значение);
МакетКомпоновки.ЗначенияПараметров.КонецПериода.Значение = Вычислить(МакетКомпоновки.ЗначенияПараметров.ВыражениеКонецПериода.Значение);
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
ПроцессорВывода.Вывести(ПроцессорКомпоновки);
КонецПроцедуры
Теперь, при создании рассылки, в значения параметров записывю соответсвующие выражения для получения нужной даты.
Мощно. Так прямо и захотелось вбить в параметр «0; Выборка = Справочники.Номенклатура.Выбрать(); Пока Выборка.Следующий() Цикл Объ = Выборка.ПолучитьОбъект(); Объ.Удалить(); КонецЦикла» 🙂
(1) AlX0id, само собой это для служебного пользования )) хотя можно и фильтры поставить
(2)
Да не надо фильтров — достаточно использовать Вычислить в вашем случае )
(3) AlX0id, спасибо, поправлю
У Вас из УТ11 или БСП работает регламентное задание по рассылке отчетов? Тобишь в автоматическом режиме отправляется?
(5) randa, да, в клиент-серверной базе
(6) Спасибо, разобрался! На форуме нашел, оказывается для регламентного задания «РассылкиОтчетов» на общий реквизит «ОбластьДанных» стояла авторегистрация, это было причиной.