Приветствуем, коллеги! В процессе разработки внешних отчетов на базе схемы компоновки данных (СКД) в среде «1С:Предприятие 8.3» на управляемых формах программисты часто сталкиваются с необъяснимым поведением платформы. Вы создаете собственную форму отчета, добавляете на нее командную панель, размещаете новые кнопки, привязываете обработчики событий, но при запуске отчета в режиме «1С:Предприятие» все ваши труды пропадают. Отчет открывается в стандартном виде, а созданной вами формы с уникальными кнопками будто и не существовало.
Более того, даже если вы полностью удалите все формы из своего внешнего отчета в конфигураторе, отчет все равно продолжит успешно запускаться и формироваться. Давайте подробно разберем по шагам, почему так происходит, как механизмы Библиотеки стандартных подсистем (БСП) перехватывают управление и как заставить систему отобразить ваши кнопки на форме.
Основная причина такого поведения кроется в интеграции отчета с современными типовыми конфигурациями (такими как ERP, КА, УТ, БП, ЗУП), построенными на базе БСП (Библиотеки стандартных подсистем). Рассмотрим подробнее этот механизм:
ОбщаяФорма.ФормаОтчета.Теперь, когда мы проанализировали ситуацию и поняли истоки проблемы, разберем способы ее решения.
Если ваш отчет будет использоваться как дополнительный отчет в системе, мы можем явно указать подсистеме БСП, что необходимо открывать именно нашу спроектированную форму, а не использовать стандартный динамический шаблон.
Для этого откроем модуль объекта внешнего отчета и найдем экспортную функцию СведенияОВнешнейОбработке(). Нам необходимо правильно настроить параметры регистрации команды:
Функция СведенияОВнешнейОбработке() Экспорт
ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.2.2.1");
ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительныйОтчет();
ПараметрыРегистрации.Наименование = "Мой внешний отчет с кнопками";
ПараметрыРегистрации.Версия = "1.0";
ПараметрыРегистрации.БезопасныйРежим = Ложь;
// Создаем команду для открытия нашей формы
НоваяКоманда = ПараметрыРегистрации.Команды.Добавить();
НоваяКоманда.Представление = "Открыть отчет (индивидуальная форма)";
НоваяКоманда.Идентификатор = "ОткрытьОтчетСКомандой";
// КРИТИЧЕСКИ ВАЖНО: указываем тип запуска "ОткрытиеФормы"
НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыОткрытиеФормы();
НоваяКоманда.ПоказыватьОповещение = Ложь;
Возврат ПараметрыРегистрации;
КонецФункции
При такой настройке БСП считает команду не просто «запуском отчета», а вызовом полноценной интерактивной формы. В результате откроется именно та форма, которую вы назначили Основной в конфигураторе внешнего отчета.
Что делать, если вам крайне необходим весь богатый функционал типовых отчетов (сохранение вариантов настроек, быстрые отборы, рассылки отчетов, отправка по почте), но при этом нужно вывести свою кнопку на командную панель? Лучший вариант в этом случае — скопировать системную форму БСП внутрь вашего отчета.
Выполним это по шагам:
ОбщаяФорма.ФормаОтчета.Поскольку структура скопированной формы полностью идентична той, которую ожидает БСП, интеграция пройдет гладко. Система «подумает», что открывает стандартную форму, но на самом деле запустится ваша доработанная копия с новыми кнопками.
Если вы отлаживаете отчет через Файл -> Открыть, но изменения формы упорно не появляются, выполните следующие действия:
МойОтчет напишите МойОтчет_Отладка). Изменение имени объекта заставит платформу создать новую запись в кэше и полностью перерисовать форму при следующем открытии.Если вы точно убедились (например, поставив точку останова в процедуре ПриСозданииНаСервере в модуле вашей формы), что открывается именно ваша форма, но добавленная кнопка все равно отсутствует, проанализируем настройки элементов в конфигураторе:
Автозаполнение, то добавленные вами команды не появятся автоматически. Вам потребуется вручную перетащить созданную команду из вкладки «Команды» в дерево элементов формы на нужную панель.ПоложениеВКоманднойПанели. Если установлено значение В дополнительном меню, кнопка будет спрятана под стандартную системную кнопку «Еще». Чтобы кнопка всегда была на виду, установите это свойство в значение В командной панели.Мы подробно разобрали, по каким правилам управляемая платформа 1С работает с формами отчетов. Используя предложенные инструкции, вы сможете гибко настраивать интерфейс ваших внешних отчетов и успешно добавлять на них любые кастомные кнопки.