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