У различных программных продуктов 1С есть типовая функция рассылки. Массовые рассылки сотрудникам и клиентам очень удобный способ информирования, который может содержать различные отчеты и его варианты.
И вот спустя несколько дней активного поиска крупиц информации, разбросанных по просторам интернета, удалось выполнить поставленную задачу.
Выяснилось, что такой недостаток, как отсутствие типового отчета в меню подбора отчетов можно обойти путем несложных доработок. Для этого понадобится внешний отчет, который будет формировать типовой отчет программно.
Для начала необходимо создать пустой внешний отчет, который будем добавлять в рассылку. Первым делом добавим в модуль объекта стандартные функции для регистрации внешнего отчета (СведенияОВнешнейОбработке(), ПолучитьТаблицуКоманд(), ДобавитьКоманду()). Далее необходимо создать процедуру ПриКомпоновкеРезультата(), эта функция будет отвечать за программное формирование отчета и настройку СКД. Чтобы обойти недостатки типового функционала, придется немного попрограммировать.
Процедура При Компоновке Результата( ДокументР езультат, Данные Расшифровки, СтандартнаяОбработка)
В качестве результата (сформированного отчета) создадим реквизит Результат типа “ТабличныйДокумент”, а затем на форме отчета создадим поле Результат, которое будет содержать в себе одноименный реквизит. Таким образом, появится возможность выводить отчет на форму.
Тут потребуется Схема Компоновки Данных внешнего отчета. Откроем или создадим пустую СКД. В ней необходимо создать параметры, которые будем заполнять. Для нашей задачи необходимы параметры: Получатель Рассылки и Период Отчета.
После этого настроим видимость параметров в пользовательском интерфейсе в настройках.
Теперь имеются параметры, которые можно заполнять, но самого отчета нет, поэтому программно создадим его в процедуре ПриКомпоновкеРезультата().
ОтчетОСВ = Отчеты.ОборотноСальдоваяВедомостьПоСчету.Создать();
*При таком создании отчета можно использовать и отчеты из расширения, так как при обращении к типовому отчету таким методом подтягиваться будет отчет из расширения. В данном случае необходимо было тянуть отчет из расширения для добавления специфичного поля.
После таких манипуляций можно проверять отчет в предпросмотре.
Рисунок 4 - Пустой отчет в предпросмотре
Можно приступать к самому интересному - программному формированию отчета.
Для начала заполним параметры отчета:
ПараметрыОтчета.Организация = БухгалтерскийУчетПереопределяемый.ПолучитьЗначениеПоУмолчанию("ОсновнаяОрганизация",ПараметрыСеанса.ТекущийПользователь);
ПараметрыОтчета.Счет = ПредопределенноеЗначение("ПланСчетов.Хозрасчетный.РасчетыСПоставщикамиИПодрядчиками");
И добавим элемент отбора по получателю. Для этого необходим его идентификатор, который можно получить путем отладки типового отчета. С помощью Компоновщика Настроек зададим отбор:
НовыйЭлементОтбора = отчетОСВ.КомпоновщикНастроек.Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ПолеОтбора = Новый ПолеКомпоновкиДанных("Субконто2.[Ответственный менеджер (Справочник ""Договоры контрагентов"")]");
А также зададим левое и правое значения, вид сравнения и использование. После этого добавим группировку по контрагенту. При отладке типового отчета удалось выяснить, что идентификатор поля Контрагенты – Субконто1.
новаяГРуппировка = ПараметрыОтчета.Группировка.Добавить();
новаяГРуппировка.Использование = Истина;
новаяГРуппировка.Поле = "Субконто1";
новаяГРуппировка.Представление = "Контрагенты";
И в конце заполним типовые настройки и параметры отчета:
ЗаполнятьТиповыеНастройки = Новый Структура;
ЗаполнятьТиповыеНастройки.Вставить("Отбор", Ложь);
ЗаполнятьТиповыеНастройки.Вставить("Группировка", Ложь);
ЗаполнятьТиповыеНастройки.Вставить("ВыводимыеДанные", Истина);
ЗаполнятьТиповыеНастройки.Вставить("Показатели", Истина);
ПараметрыОтчета.ПоказательБУ = Истина;
ПараметрыОтчета.ПоказательКоличество = Ложь;
ПараметрыОтчета.ПоСубсчетам = Ложь;
ПараметрыОтчета.РазвернутоеСальдо = Ложь;
ПараметрыОтчета.Вставить("РазмещениеДополнительныхПолей", 1);
ПараметрыОтчета.Вставить("ДополнительныеПоля",отчетОСВ.ДополнительныеПоля.Выгрузить());
ПараметрыОтчета.Периодичность = 0;
ПараметрыОтчета.ДанныеРасшифровки = "";
ПараметрыОтчета.ИдентификаторОтчета = "ОборотноСальдоваяВедомостьПоСчету";
Готово. Осталось добавить внешний отчет в программу и подготовить рассылку. На нашем сайте есть прекрасная статья Власова Дениса “Отправка рассылок из 1С проще, чем кажется”, так что с настройкой почты и самой рассылки не должно воникнуть трудностей. Уточню только один нюанс. Чтобы добавить внешний отчет в рассылку, есть отдельный механизм в меню подбора отчетов. Необходимо выбрать меню “Ещё” и выбрать “Подобрать дополнительный отчет”.
Выберем поле менеджер и нажмем указать получателя рассылки. После этого в значение этой настройки подставиться параметр [Получатель] – это и есть получатель рассылки.
Чтобы все работало корректно, проверим, что тип получателей совпадает с типом отбора, который мы указали в Схеме Компоновке Данных.
Теперь вы умеете программно формировать отчеты для дальнейшего добавления в рассылку.
Ещё больше полезный статей на нашем сайте