Как выполнить код в типовой форме отчёта

Сегодня рассмотрим такую задачу: мы добавили в типовую конфигурацию свой отчёт на СКД, и нам нужно выполнить какие-то действия на форме. По умолчанию, если к отчёту не привязано специфических форм, к нему будет подключена типовая форма Библиотеки Стандартных Подсистем (она называется ФормаОтчета и находится в списке общих форм).

ReportCurrency (MetaData)

Типовая форма предоставляющая дополнительные сервисы в подарок от авторов БСП: расчёт суммы в ячейке, отправка отчёта по электронной почте и т.д. Но нужно выполнить некий код на форме нашего отчёта, не затронув остальные отчёты. Есть два способа сделать это: создать свою форму отчёта — но тогда мы потеряем указанные выше сервисы, либо воспользоваться рекомендациями от авторов подсистемы ВариантыОтчетов. Второй путь несколько сложнее, но в конечном итоге даст нам более гибкое и функциональное решение. Рассмотрим его подробно.

Все манипуляции будем производить на типовой 1С:Управление холдингом версии 3.1 с подключенной подсистемой СтандартныеПодсистемы (она же БСП) версии 3.0.3.43. Уточнить версии подключенных подсистем можно в регистре ВерсииПодсистем, входящий в типовые конфигурации.

SubsystemsVersion

Постановка задачи

Итак, мы создадим простой отчёт, выводящий курсы валют на сегодняшнюю дату. Например, будем брать данные вот таким запросом:

Готовый отчёт выглядит так:

CurrencyReport

Наша задача модифицировать его таким образом, чтобы при старте исполнялся некий код. Например, выводилось сообщение.

Для этого необходимо выполнить 7 несложных, но неочевидных действий:

  1. Разместить в ВариантыОтчетовПереопределяемый — НастроитьВариантыОтчетов()
  2. Добавить хранилище вариантов ХранилищеВариантовОтчетов
  3. В модуле менеджера отчетов добавить экспортную процедуру НастроитьВариантыОтчетов()
  4. Запустить обновление вспомогательных данных
  5. В модуле объекта отчёта создать процедуру ОпределитьНастройкиФормы()
  6. В процедуре указать настройки, подключить обработчик
  7. Написать обработчик для вызова

Шаг 1. Разместить в ВариантыОтчетовПереопределяемый

Открываем общий модуль ВариантыОтчетовПереопределяемый (его можно смело снять с поддержки), находим там процедуру НастроитьВариантыОтчетов() и добавляем в конце свою настройку:

RepoertSetting1

Шаг 2. Добавить хранилище вариантов

В свойствах отчёта указываем хранилище вариантов — ХранилищеВариантовОтчетов

VariantsReport

Шаг 3. Добавить процедуру НастроитьВариантыОтчетов() в модуле менеджера

Шаг 4. Запустить обновление вспомогательных данных

Сейчас требуется «рассказать» БСП о нашем отчёте. Для этого нужно запустить обновление подсистемы ВариантыОтчетов. Сделать это можно двумя способами: увеличить номер версии конфигурации, либо воспользовавшись специальной обработкой от авторов БСП. В этом случае выбираем вариант «Простая настройка» и устанавливаем флажок «Варианты отчётов». Запускаем обновление

 

AdditionalDataUpdateШаг 5. В модуле объекта отчёта создать процедуру ОпределитьНастройкиФормы()

Отправляемся на этот раз в модуль объекта отчёта и добавляем там процедуру

Шаг 6. Подключить обработчик события

Самое время приступить к прикладной части. В нашем примере нам нужно переопределить обработчик ПриСозданииНаСервере(), чтобы при старте отчёта выводилось сообщение. Сообщаем в процедуре из шага 5, что такой обработчик находится здесь же

Конечно, возможности подсистемы не заканчиваются одним обработчиком ПриСозданииНаСервере. Разработчики заложили программный доступ ко многим функциям формы отчётов. Полный список доступного функционала можно узнать на официальном сайте 1С

Шаг 7. Написать обработчик для вызова

Пришла пора сделать то, для чего всё и затевалась — написать нужный нам код. Создаём экспортный обработчик ПриСозданииНаСервере() там же, в модуле менеджера отчёта

Готово! Если мы запустим отчёт, мы увидим наше тестовое сообщение.

ReportFinal

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *