Добавить в корзинуПозвонить
Найти в Дзене
ИнфоСофт

Настройка автоматической рассылки отчета Оборотно-сальдовой ведомости с помощью программного формирования отчета.

У различных программных продуктов 1С есть типовая функция рассылки. Массовые рассылки сотрудникам и клиентам очень удобный способ информирования, который может содержать различные отчеты и его варианты. И вот спустя несколько дней активного поиска крупиц информации, разбросанных по просторам интернета, удалось выполнить поставленную задачу. Выяснилось, что такой недостаток, как отсутствие типового отчета в меню подбора отчетов можно обойти путем несложных доработок. Для этого понадобится внешний отчет, который будет формировать типовой отчет программно. Для начала необходимо создать пустой внешний отчет, который будем добавлять в рассылку. Первым делом добавим в модуль объекта стандартные функции для регистрации внешнего отчета (СведенияОВнешнейОбработке(), ПолучитьТаблицуКоманд(), ДобавитьКоманду()). Далее необходимо создать процедуру ПриКомпоновкеРезультата(), эта функция будет отвечать за программное формирование отчета и настройку СКД. Чтобы обойти недостатки типового функционала,

У различных программных продуктов 1С есть типовая функция рассылки. Массовые рассылки сотрудникам и клиентам очень удобный способ информирования, который может содержать различные отчеты и его варианты.

Однако не все отчеты можно разослать типовым функционалом “Рассылка электронных писем”. Некоторые отчеты, например, Оборотно-сальдовая ведомость по счету, не соответствуют логике построения, из-за этого такой отчет нельзя выбрать среди типовых отчетов в автоматической рассылке. И вот перед нами встала такая задача, как добавить такой отчет в автоматическую рассылку?
Однако не все отчеты можно разослать типовым функционалом “Рассылка электронных писем”. Некоторые отчеты, например, Оборотно-сальдовая ведомость по счету, не соответствуют логике построения, из-за этого такой отчет нельзя выбрать среди типовых отчетов в автоматической рассылке. И вот перед нами встала такая задача, как добавить такой отчет в автоматическую рассылку?

И вот спустя несколько дней активного поиска крупиц информации, разбросанных по просторам интернета, удалось выполнить поставленную задачу.

Выяснилось, что такой недостаток, как отсутствие типового отчета в меню подбора отчетов можно обойти путем несложных доработок. Для этого понадобится внешний отчет, который будет формировать типовой отчет программно.

Для начала необходимо создать пустой внешний отчет, который будем добавлять в рассылку. Первым делом добавим в модуль объекта стандартные функции для регистрации внешнего отчета (СведенияОВнешнейОбработке(), ПолучитьТаблицуКоманд(), ДобавитьКоманду()). Далее необходимо создать процедуру ПриКомпоновкеРезультата(), эта функция будет отвечать за программное формирование отчета и настройку СКД. Чтобы обойти недостатки типового функционала, придется немного попрограммировать.

Процедура При Компоновке Результата( ДокументР езультат, Данные Расшифровки, СтандартнаяОбработка)

В качестве результата (сформированного отчета) создадим реквизит Результат типа “ТабличныйДокумент”, а затем на форме отчета создадим поле Результат, которое будет содержать в себе одноименный реквизит. Таким образом, появится возможность выводить отчет на форму.

Для нашей задачи необходимо было при формировании отчета в качестве отбора устанавливать получателя рассылки. Таким образом, каждый отчет формировался для своего получателя, исключая лишнюю информацию о других членах рассылки. А также определенную дату, на которую формировался бы отчет. В нашем случае периодом является один конкретный день, на который все данные подбиты, и можно формировать отчет. Поэтому нельзя установить период днем рассылки, так как обычно этот период устанавливается прошлым месяцем.
Для нашей задачи необходимо было при формировании отчета в качестве отбора устанавливать получателя рассылки. Таким образом, каждый отчет формировался для своего получателя, исключая лишнюю информацию о других членах рассылки. А также определенную дату, на которую формировался бы отчет. В нашем случае периодом является один конкретный день, на который все данные подбиты, и можно формировать отчет. Поэтому нельзя установить период днем рассылки, так как обычно этот период устанавливается прошлым месяцем.

Тут потребуется Схема Компоновки Данных внешнего отчета. Откроем или создадим пустую СКД. В ней необходимо создать параметры, которые будем заполнять. Для нашей задачи необходимы параметры: Получатель Рассылки и Период Отчета.

Создадим 2 параметра: “Менеджер” – Получатель рассылки и “ДеньОтчета” – требуемый период формирования отчета
Создадим 2 параметра: “Менеджер” – Получатель рассылки и “ДеньОтчета” – требуемый период формирования отчета

После этого настроим видимость параметров в пользовательском интерфейсе в настройках.

Теперь имеются параметры, которые можно заполнять, но самого отчета нет, поэтому программно создадим его в процедуре ПриКомпоновкеРезультата().

ОтчетОСВ = Отчеты.ОборотноСальдоваяВедомостьПоСчету.Создать();

*При таком создании отчета можно использовать и отчеты из расширения, так как при обращении к типовому отчету таким методом подтягиваться будет отчет из расширения. В данном случае необходимо было тянуть отчет из расширения для добавления специфичного поля.

После таких манипуляций можно проверять отчет в предпросмотре.

-5

Рисунок 4 - Пустой отчет в предпросмотре

Можно приступать к самому интересному - программному формированию отчета.

Для начала заполним параметры отчета:

ПараметрыОтчета.Организация = БухгалтерскийУчетПереопределяемый.ПолучитьЗначениеПоУмолчанию("ОсновнаяОрганизация",ПараметрыСеанса.ТекущийПользователь);

ПараметрыОтчета.Счет = ПредопределенноеЗначение("ПланСчетов.Хозрасчетный.РасчетыСПоставщикамиИПодрядчиками");

И добавим элемент отбора по получателю. Для этого необходим его идентификатор, который можно получить путем отладки типового отчета. С помощью Компоновщика Настроек зададим отбор:

НовыйЭлементОтбора = отчетОСВ.КомпоновщикНастроек.Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));

ПолеОтбора = Новый ПолеКомпоновкиДанных("Субконто2.[Ответственный менеджер (Справочник ""Договоры контрагентов"")]");

А также зададим левое и правое значения, вид сравнения и использование. После этого добавим группировку по контрагенту. При отладке типового отчета удалось выяснить, что идентификатор поля Контрагенты – Субконто1.

новаяГРуппировка = ПараметрыОтчета.Группировка.Добавить();

новаяГРуппировка.Использование = Истина;

новаяГРуппировка.Поле = "Субконто1";

новаяГРуппировка.Представление = "Контрагенты";

И в конце заполним типовые настройки и параметры отчета:

ЗаполнятьТиповыеНастройки = Новый Структура;

ЗаполнятьТиповыеНастройки.Вставить("Отбор", Ложь);

ЗаполнятьТиповыеНастройки.Вставить("Группировка", Ложь);

ЗаполнятьТиповыеНастройки.Вставить("ВыводимыеДанные", Истина);

ЗаполнятьТиповыеНастройки.Вставить("Показатели", Истина);

ПараметрыОтчета.ПоказательБУ = Истина;

ПараметрыОтчета.ПоказательКоличество = Ложь;

ПараметрыОтчета.ПоСубсчетам = Ложь;

ПараметрыОтчета.РазвернутоеСальдо = Ложь;

ПараметрыОтчета.Вставить("РазмещениеДополнительныхПолей", 1);

ПараметрыОтчета.Вставить("ДополнительныеПоля",отчетОСВ.ДополнительныеПоля.Выгрузить());

ПараметрыОтчета.Периодичность = 0;

ПараметрыОтчета.ДанныеРасшифровки = "";

ПараметрыОтчета.ИдентификаторОтчета = "ОборотноСальдоваяВедомостьПоСчету";

Готово. Осталось добавить внешний отчет в программу и подготовить рассылку. На нашем сайте есть прекрасная статья Власова Дениса “Отправка рассылок из 1С проще, чем кажется”, так что с настройкой почты и самой рассылки не должно воникнуть трудностей. Уточню только один нюанс. Чтобы добавить внешний отчет в рассылку, есть отдельный механизм в меню подбора отчетов. Необходимо выбрать меню “Ещё” и выбрать “Подобрать дополнительный отчет”.

Теперь выберем отчет и посмотрим настройки:
Теперь выберем отчет и посмотрим настройки:

Выберем поле менеджер и нажмем указать получателя рассылки. После этого в значение этой настройки подставиться параметр [Получатель] – это и есть получатель рассылки.
Чтобы все работало корректно, проверим, что тип получателей совпадает с типом отбора, который мы указали в Схеме Компоновке Данных.

На рисунке 3 продемонстрировано, что отбор имеет тип Физические лица, как и тип получателя в рассылке. А также выберем отправлять “Свой отчет для каждого получателя” и выполним рассылку.
На рисунке 3 продемонстрировано, что отбор имеет тип Физические лица, как и тип получателя в рассылке. А также выберем отправлять “Свой отчет для каждого получателя” и выполним рассылку.
При корректных настройках все получатели, указанные в рассылке, получают свой отчет. Настроить тип файла отчета можно в самой рассылке.
При корректных настройках все получатели, указанные в рассылке, получают свой отчет. Настроить тип файла отчета можно в самой рассылке.

Теперь вы умеете программно формировать отчеты для дальнейшего добавления в рассылку.

Ещё больше полезный статей на нашем сайте