Подключение отчета к бсп 1с
При переходе на версию 1С БСП 2.4, приходится переписывать процедуру инициализации подключения стандартной подсистемы «Подключаемые команды». Если в предыдущих версиях использовались процедуры общих модулей «УправлениеПечатью», «ВводНаОснование», «МенюОтчеты», то в версии 2.4 требуется вызывать процедуры одного общего модуля «ПодключаемыеКоманды».
Рассмотрим по шагам, что надо сделать, чтобы подключаемые команды появились на формах добавленных (нетиповых) документов или справочников.
Далее приводятся примеры кода для версии БСП 2.4. Закомментированный код использовался для предыдущих версий БСП .
Инициализация подключаемых команд в процедуре «ПриСозданииНаСервере» в модуле формы объекта (или списка):
В вызываемой процедуре «ПодключаемыеКоманды.ПриСозданииНаСервере()» происходит:
а) программное добавление всех необходимых команд формы
б) расположение их в нужных подменю
Описание подключаемых команд в модуле формы объекта (списка).
В командной панели формы объекта (списка) должны присутствовать отмеченные пункты подменю. Это требование не изменилось в версии 2.4
В модуле менеджера объекта создаются экспортные процедуры для добавления нужных команды на формы объектов. В версии БСП 2.4 есть небольшие изменения, касающиеся параметров процедур.
ДобавитьКомандыСозданияНаОсновании() — экспортная процедура, в которой заполняется таблица «КомандыСозданияНаОсновании». Команды из этой таблицы выводятся на форму в «ПодменюСоздатьНаОсновании».
ДобавитьКомандуСоздатьНаОсновании() — экспортная функция, которая используется для добавления команды создания текущего объекта на основании других объектов.
ДобавитьКомандыОтчетов() — экспортная процедура, в которой заполняется таблица «КомандыОтчетов». Команды из этой таблицы выводятся на форму в «ПодменюОтчеты».
ДобавитьКомандыПечати() — экспортная процедура, в которой заполняется таблица «КомандыПечати». Команды из этой таблицы выводятся на форму в «ПодменюПечать».
Все предыдущие шаги можно сделать по аналогии типовых объектов. При переходе на версию БСП 2.4 во всех типовых объектах разработчики проводят указанные выше модификации. Но для вывода на форму своих (добавленных) объектов этого будет не достаточно, подключаемые команды не появятся на формах. В версии БСП 2.4 необходимо сделать еще следующие доработки:
Речь пойдет об отчетах, созданных на базе СКД (на всякий случай пишу, если еще остались люди, которые делают отчеты не на СКД).
Добавить отчет в типовую конфигурацию 1С, построенную на базе БСП, можно одним из следующих способов:
Добавляемый отчет может быть:
Вроде все должно быть просто и интуитивно понятно, но есть нюансы, и в каждом случае добавление происходит по разному. В общем, разработчики БСП и других типовых продуктов не дают соскучиться J .
Варианты отчетов
Прежде чем приступить к описанию добавления отчетов, хочется сказать несколько слов о вариантах.
Варианты отчетов - это встроенный механизм СКД, который позволяет создавать для отчета произвольное количество предопределенных и пользовательских вариантов. По своей сути варианты – это отдельные отчеты, созданные на базе одной и той же системы компоновки данных.
Существует отдельная подсистема БСП, для управления вариантами отчетов, которая встроена во все типовые конфигурации. Подсистема предоставляет общее хранилище вариантов, общие формы для вывода и настройки отчетов, механизмы для отображения отчетов – формирование специальных панелей для каждого раздела системы. Пользователь может управлять настройками предопределенных вариантов отчетов, создавать и настраивать собственные варианты в режиме 1С Предприятие. Также подсистема позволяет создавать контекстные отчеты, привязанные к определенным объектам метаданных.
Для каждого отчета существует основной предопределенный вариант. В дальнейшем, говоря об отчете, я буду подразумевать именно его основной вариант.
Общая сравнительная таблица:
Тип добавления
В основную конфигурацию
В расширение конфигурации
В качестве внешнего отчета
Обновление вспомогательных данных (идентификаторы объектов)
Обновление вспомогательных данных (варианты отчетов)
Предопределенные настройки вариантов
Общий модуль: ВариантыОтчетовПереопределяемый
Модуль менеджера отчета
Возможность добавление обработчиков событий формы
Указывается в общем модуле: ВариантыОтчетовПереопределяемый
Указывается в модуле менеджера отчета:
ПриОпределенииНастроек
Доступна по умолчанию
Описание назначения для контекстного отчета
Модуль менеджера отчета, модуль менеджера объекта назначения
Модуль менеджера отчета
Модель объекта отчета
Описание основного варианта (по умолчанию)
Свойство отчета «Пояснение»
Добавление пользовательских вариантов отчета
Добавление нового отчета в основную конфигурацию
Рассмотрим добавление отчета в основную конфигурацию. В более старых конфигурациях типа УТ 10.3, УПП все было предельно просто. Добавляешь отчет, выводишь его в меню интерфейса или на панели быстрого доступа, и все работает.
В новых все несколько сложнее, и есть свои нюансы.
Для того, чтобы отчет выводился в основном окне раздела в группе «Отчеты», достаточно просто включить отчет в необходимую подсистему.
Однако, в этом случае, отчет не будет виден на специальной панели отчетов, которую предоставляет БСП. Панель открывается при переходе по ссылке «Отчеты по » из каждого раздела системы:
Отчеты выводятся с разбивкой по подгруппам согласно иерархии подсистем, и имеют описания. Причем , могут быть выведены несколько вариантов одного и того же отчета. Если просто добавить отчет в конфигурацию и включить в нужную подсистему, отчет не будет виден в указанной панели. Отчет будет доступен только в группе «Отчеты» основного окна раздела. Кстати, не так давно, он бы даже не работал, пока не будут обновлены идентификаторы объектов метаданных.
Обновить идентификаторы можно одним из трех способов:
- Запустить 1С Предприятие в режиме обновления ИБ, задав параметр запуска: «ЗапуститьОбновлениеИнформационнойБазы»:
- Увеличить номер версии конфигурации.
- Воспользоваться обработкой из состава БСП: «Обновление вспомогательных данных»
В текущих версиях, идентификаторы обновляются при запуске 1С в пользовательском режиме автоматически . Наконец-то разработчики сделали это, слава богам!
Однако, для того, чтобы отчет, добавленный в основную конфигурацию появился на панели отчетов, все же необходимо обновить вспомогательные данные вручную, выбрав пункт «Варианты отчетов»:
После выполнения этих действия, отчет будет добавлен в специальные справочники: «Варианты отчетов» и «Предопределенные варианты отчетов», и его основной вариант будет виден в панелях отчетов согласно указанной подсистемы.
Конечно, все дальнейшие настройки, такие как добавление описания, вывод отчета или других его вариантов в другие подразделы или панели отчетов, можно выполнить непосредственно в пользовательском режиме, перейдя по ссылке «Все отчеты»:
Но, более правильно указать основные (предопределенные) настройки в конфигурации. Тем более, что некоторые виды настроек, например видимость варианта отчета в зависимости от функциональных опций, нельзя настроить в пользовательском режиме.
Настройки вариантов отчетов задаются в процедуре общего модуля: «ВариантыОтчетовПереопределяемый >> НастроитьВариантыОтчетов». Здесь описаны все типовые отчеты и их варианты. Все настройки необходимо создавать для двух объектов: «Описание отчета» и «Описание варианта», которые можно получить из общего списка настроек, переданных в процедуру:
Объект «ОписаниеОтчета» имеет следующие свойства:
Включен - если свойство имеет значение «ложь», отчет не регистрируется в справочнике «Варианты отчетов».
ОпределитьНастройкиФормы – свойство определяет наличие в модуле объекта отчета экспортной процедуры « ОпределитьНастройкиФормы ». В данной процедуре указывается наличие дополнительных обработчиков для событий модуля формы отчета, которые также должны присутствовать в модуле объекта отчета:
Объект «ОписаниеВарианта» имеет следующие свойства:
Описание - Описание варианта отчета, которое выводится на панели отчетов.
ВидимостьПоУмолчанию - если свойство имеет значение «ложь», вариант не виден по умолчанию в панели отчетов, но в справочнике «Варианты отчетов» он регистрируется.
Размещение – настройка размещения отчета. По умолчанию, коллекция содержит все подсистемы, выбранные для отчета. Можно добавить новые подсистемы для размещения или удалить существующие. Дополнительно, можно указать важность размещения: «Важный» или «СмТакже»:
ФункциональныеОпции – подключенные к команде вывода варианта отчета функциональные опции:
НастройкиДляПоиска – дополнительные сведения для поиска варианта отчета
Для вступления настроек в силу, требуется обновить вспомогательные данные, выбрав пункт «Варианты отчетов».
В пользовательском режиме, можно переопределить эти настройки для текущего пользователя или всех пользователей системы. Тем не менее, всегда остается возможность вернуться к предопределенным настройкам, заданным в конфигурации:
Добавление нового отчета в расширение конфигурации
На первый взгляд, добавление отчета в расширении не должно отличаться от его добавления в основную конфигурацию, но это не так.
Во-первых, для того, чтобы отчет был виден на панели отчетов, не нужно выполнять обновление вспомогательных данных. Необходимая информация в справочники: «Варианты отчетов» и «Предопределенные варианты отчетов» добавляется автоматически, при начале работы системы. Я думаю логика разработчиков следующая: расширение может подключить обычный пользователь в режиме 1С Предприятия. И он не должен знать о необходимости обновлении вспомогательных данных.
Для отчетов, добавленных в расширениях, также существует возможность описания предопределенных настроек: описание, подсистемы, функциональные опции. Однако, эти настройки выполняются не в переопределяемом общем модуле, а непосредственно в модуле менеджера отчета:
Все настройки аналогичны тем, которые выполнялись для отчетов основной конфигурации. Отличие только в том, что объект «НастройкиОтчета» уже передан в процедуру в качестве параметра.
Для применения созданных настроек обязательно должен быть установлен параметр «НастроитьВариантыОтчета» в экспортной процедуре модуля менеджера отчета «ПриОпределенииНастроек»:
Если флаг установлен, предопределенные настройки обновляются автоматически, без необходимости обновления вспомогательных данных.
В этой же процедуре указывается наличие дополнительных обработчиков событий модуля формы отчета:
На заметку. Для отчетов созданных в расширениях, есть возможность указания описания для основного варианта без использования менеджера отчета. Для задания описания «по умолчанию» используется свойство отчета «Пояснение»:
Добавление контекстного отчета в основную конфигурацию или в расширение
Алгоритм добавления контекстных отчетов одинаков для отчетов созданных в основной конфигурации и для отчетов, созданных в расширениях.
В обоих случаях, необходимо определить экспортную процедуру «ПриОпределенииНастроек» в модуле менеджера отчета, и указать объекты назначения:
Сами команды необходимо описать в отдельной процедуре:
Основные свойства команды:
Представление – наименование команды в интерфейсе объекта назначения,
КлючВарианта – идентификатор варианта отчета компоновки данных, который требуется запустить.
Дополнительные свойства команды:
Важность - группы в подменю «Отчеты», в которой следует вывести команду открытия отчета. Доступные значения: "Важное", "Обычное" и "СмТакже".
Порядок - п орядок размещения отчета по отношению к другим отчетам.
СочетаниеКлавиш - с очетание клавиш для быстрого открытия отчета (тип «СочетаниеКлавиш».
ВидимостьВФормах - и спользуется для указания перечня форм, в которых требуется выводить отчет. По умолчанию, отчет выводится во всех формах объекта, подключенных к БСП.
ФункциональныеОпции - имена функциональных опций, определяющих видимость команды открытия отчета в форме.
УсловияВидимости – дополнительные условия, о пределяющие видимость команды отчета (массив). Для добавления новых условий рекомендуется использовать процедуру общего модуля «ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(Команда, Реквизит, Значение, Знач ВидСравнения = Неопределено)».
Параметр «Реквизит» - это имя реквизита объекта назначения.
ДополнительныеПараметры – можно указать дополнительные параметры, и потом их обработать в переопределенном обработчике события модуля формы отчета «ПриСозданииНаСервере».
Ссылка на объект назначения передается в контекстный отчет в качестве параметра формы «ПараметрКоманды» . Для указания отбора по переданному значению, необходимо переопределить событие модуля формы отчета «ПриСозданииНаСервере», и добавить значение параметра в структуру «ФормаПараметры.Отбор»:
При необходимости можно обработать данные, переданные в свойстве команды «ДополнительныеПараметры»:
Примечание. Описывать команды для вывода контекстных отчетов можно не только в модуле менеджера самого отчета, но и в модуле менеджера объекта назначения, в экспортной процедуре «ДобавитьКомандыОтчетов». В этом случае, команда должны иметь дополнительный обязательный параметр «Менеджер», в котором необходимо указать полное имя менеджера отчета. Контекстные отчеты в типовых конфигурациях описаны именно таким способом.
Добавление отчетов с помощью механизма внешних отчетов и обработок
Процесс добавления общих и контекстных отчетов с использованием механизма дополнительных отчетов и обработок подробно описан во многих статьях, например в этой .
Я не думаю, что у кого-то возникают сложности при добавлении отчетов таким способом. Отмечу лишь, что в данном случае не нужно обновлять вспомогательные данные. Также, нет возможности указания предопределенных настроек для вариантов отчета. Все настройки вариантов указываются в пользовательском режиме, прямо в форме элемента дополнительного отчета:
Возможность добавления в модуль объекта обработчиков событий формы отчета доступна по умолчанию.
Если я ошибаюсь, и существуют вопросы и непонятные моменты в работе механизма дополнительных отчетов и обработок, пишите в комментариях, и я напишу отдельную статью на эту тему.
Дополнительно хочу отметить, что варианты отчетов, созданные в пользовательском режиме настраиваются одинаково для любого из способов добавления основного отчета.
На этом все, спасибо за внимание, и за то, что читаете мои статьи J .
Другие мои статьи по использованию механизмов БСП в типовых конфигурациях 1С
Дополнительные отчеты и обработки — подсистема 1С БСП, предназначена для расширения функционала без изменения конфигурации.
Для более полного ознакомления можно развернуть демонстрационную конфигурацию по БСП. В ней есть необходимые примеры.
Что можно подключить
- внешние обработки (файлы с расширением “epf”) ;
- внешние отчеты (файлы с расширением «erf»).
Виды разработок
- Дополнительная обработка.
- Дополнительный отчет.
- Заполнение объекта. Возможность установить свои кнопки по заполнению документа (ранее были только кнопки по заполнению табличной части).
- Печатная форма. Дополнительная печатная форма. Добавляется кнопка «Дополнительные печатные формы».
- Отчет. Прикрепляемый к справочникам и документам.
- Создание связанных объектов. Свой ввод на основании. В пункт меню «Ввод на основании» добавляется кнопка «Создание связанных объектов…».
Возможности БСП:
- В документах можно добавлять кнопки по заполнению всего документа, кнопки по вводу на основании.
- Обработка может содержать несколько команд меню.
- Вводить на основании и заполнять объекты сразу на основании нескольких объектов.
- Задавать расписание выполнение серверных команд (на сервере).
- Задавать режим «Безопасный» или «Небезопасный», т.е. запускать обработку с учетом ограничением прав или полные права
- Задать режим использования: «Не использовать», «Отладка», «Использовать».
- Включить использование в формах объекта и в форма списков
- Привязать ко всем указанным объектам обработку или отчет.
- Настроить быстрый доступ к определенным командам внешних обработок.
- Возможность указать в каких разделах интерфейса должны появляться дополнительные обработки и отчеты.
Сведения о внешней обработке
«Вид»
Минимальным условием для регистрации разработки является заполнение поля «Вид».
Значение поле может принимать одно из значений, возвращаемых функциями: ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработки().
Таблица. Поле «ВИД».
«Назначение»
Содержит массив объектов конфигурации в формате «.», для которых будет назначен внешний отчет/обработка.
«Наименование»
Строка. Подставляется в наименование при создании элемента справочника «Дополнительные отчеты и обработки». Если не заполнено, то используется синоним внешней обработки/отчета.
«Команды»
Таблица значений. Загружается в одноименную табличную часть элемента справочника «Дополнительные отчеты и обработки» при регистрации внешней обработки.
Эту табличную часть можно заполнить и вручную.
Колонки таблицы:
Идентификатор – строка (идентификатор команды).
Представление – описание команды.
Модификатор — строка (используется для дополнительных печатных форм).
ПоказыватьОповещение – окно оповещение будет появляться перед началом и после окончания выполнения (для команд клиентских и серверных без формы).
Использование – режим запуска обработки.
В колонке «Использование» указывается тип вызываемой команды. По сочетанию Вид-Тип команды система определяет какая предопределенная процедура будет вызвана из внешней обработки/отчета, и где она будет объявлена — на клиенте или на сервере.
Наиболее часто используются процедуры Печать() и ВыполнитьКоманду(), а также открытие формы без обращения к методу.
Это поле может принимать одно из значений, возвращаемых функциями ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКоманды(), например, ТипКомандыВызовСерверногоМетода().
Таблица. Возможные варианты использования в таблице.
Тип команды | Значение поля «Вид» | Вызываемая экспортная процедура |
ВызовСерверногоМетода | ПечатнаяФорма | Печать( МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) |
ДополнительнаяОбработка ДополнительныйОтчет Отчет | ВыполнитьКоманду( ИдентификаторКоманды, ПараметрыВыполнения) | |
СозданиеСвязанныхОбъектов | ВыполнитьКоманду( ИдентификаторКоманды, ОбъектыНазначения, СозданныеОбъекты, ПараметрыВыполнения) | |
ЗаполнениеОбъекта | ВыполнитьКоманду( ИдентификаторКоманды, ОбъектыНазначения, ПараметрыВыполнения) | |
ВызовКлиентскогоМетода | ПечатнаяФорма | &НаКлиенте Печать( ИдентификаторКоманды, ОбъектыНазначенияМассив) |
ДополнительнаяОбработка ДополнительныйОтчет | &НаКлиенте ВыполнитьКоманду( ИдентификаторКоманды) | |
СозданиеСвязанныхОбъектов | &НаКлиенте ВыполнитьКоманду( ИдентификаторКоманды, ОбъектыНазначенияМассив, СозданныеОбъекты) | |
ЗаполнениеОбъекта Отчет | &НаКлиенте ВыполнитьКоманду( ИдентификаторКоманды, ОбъектыНазначенияМассив) | |
Для всех видов | в форму передается параметр ДополнительнаяОбработкаСсылка | |
ОткрытиеФормы | СозданиеСвязанныхОбъектов ЗаполнениеОбъекта Отчет | в форму передается дополнительный параметр ОбъектыНазначения |
Для всех видов | в форму передаются параметры ИдентификаторКоманды ДополнительнаяОбработкаСсылка ИмяФормы | |
Отчет | Отчет с макетом СКД может не иметь форму, тогда будет использована общая форма для отчетов по умолчанию | |
ЗаполнениеФормы | ЗаполнениеОбъекта | ВыполнитьКоманду( ИдентификаторКоманды, ОбъектыНазначения, ПараметрыВыполнения) |
СценарийВБезопасномРежиме | Для всех видов | см. описание в комментарии к функции ДополнительныеОтчетыИОбработкиКлиентСервер .ТипКомандыСценарийВБезопасномРежиме() |
ЗагрузкаДанныхИзФайла | ДополнительнаяОбработка | см. описание в комментарии к функции ДополнительныеОтчетыИОбработкиКлиентСервер .ТипКомандыЗагрузкаДанныхИзФайла() |
Для типа команды ВызовКлиентскогоМетода необходимо создать форму в обработке, назначить ее основной и объявить экспортную процедуру.
«Версия БСП»
Строка, версия встроенной в конфигурации БСП. Необходима для поддержки совместимости. Можно не заполнять.
«Безопасный Режим»
Булево, отображает режим запуска обработка. В безопасном режиме недоступен привилегированный режим, COM-соединение, загрузка dll, доступ к файловой системе и интернету.
«Информация»
Строка, комментарий, который характеризует обработку.
«Версия»
Строка, версия обработки.
Подготовка разработки к подключению.
Для подключения разработки в базу необходимо задать параметры в экспортной функции модуля объекта «СведенияОВнешнейОбработке».
Пример
Подключение к базе.
Открываем справочник «Дополнительные отчеты и обработки». Кнопкой «Добавить» создаем элемент справочника. После чего система предложит прикрепить вашу разработку. Система автоматически заполнит поля формы функцией «СведенияОВнешнейОбработке.
Отладка
Единственный минус дополнительных отчетов и обработок заключается в том, что внутри них не работает встроенный в платформу отладчик.
Связано это в первую очередь с тем, что, запуская такую форму, система создает временный файл, и точки останова не срабатывают.
Добрый день, коллеги! Тема библиотеки стандартных подсистем обширна и недостаточно раскрыта. Все новые конфигурации построены на основе этой библиотеки, - ЗУП 3.1, УТ 11, ERP 2.4 и другие. Поэтому Вашему вниманию предлагаю простой способ разработки контекстного отчета на основе СКД, поскольку большинство отчетов построено на СКД, и в экзамене на 1С Специалист по платформе тоже отчеты строятся на СКД, которые позволяют на своей основе построить отчеты с универсальными настройками и не создавать полностью макет вручную и программно его заполнять.
Пример построения подобного отчета можно посмотреть демо конфигурации БСП соответствующей версии на примере отчета _ДемоОтчетПоСчетамНаОплатуКонтекстный.
Для программы ЗУП 3.1.12 используется версия библиотеки стандартных подсистем 3.1.2. В отчете используется макет ОсновнаяСхемаКомпоновкиДанных.
В данной схеме компоновки отчета отсутствуют параметры, но в полях выборки есть поле ссылка, именно по нему происходит отбор, при открытии отчета.
В модуле отчета, имеются процедуры:
- СведенияОВнешнейОбработке() Экспорт - для регистрации отчета в системе
2.И две процедуры, с помощью которых происходит передача параметров из вызывающего объекта в отчет:
Таким образом в нашем случае отбор по ссылке происходит в этом участке кода:
На основе этого примера, я сделал отчет "Лист ознакомления с графиком отпусков", который вызывается из формы списка, и формы документа "График отпусков", причем в этом отчете параметры присутствуют, и они корректно заполняются. Вместо "Ссылка" в вышеприведенном коде нужно вставить название вашего параметра.
После добавления внешнего отчета в Дополнительные отчеты и обработки необходимо также указать размещение, в нашем случае документ "График отпусков".
После этого в меню Еще. появляется пункт Дополнительные отчеты, откуда и вызывается отчет "Лист ознакомления".
В статье приводится аргументация за использование во внешних отчетах и обработках только одного варианта использования - ОткрытиеФормы, и приводится пример обработки внешней печатной формы, которая печатает комментарий, подключается к любой конфигурации ко всем ссылочным объектам, у которых есть комментарий. Обработку легко отлаживать и можно использовать в качестве шаблона для создания других обработок внешних печатных форм.
АЦРК: дополнительные отчеты и обработки
для конфигураций, основанных на БСП.
Часть 2. Печатные формы.
БСП — библиотека стандартных подсистем, на которой основаны типовые конфигурации 1С на управляемых формах.
В состав БСП входит и подсистема «Дополнительные отчеты и обработки»», которая определяет правила создания и подключения к конфигурациям дополнительных ВНЕШНИХ отчетов и обработок различного назначения.
В БСП для дополнительных внешних отчетов и обработок (далее ДВОО) предусмотрен справочник "ДополнительныеОтчетыИОбработки". Кроме того, для каждой ДВОО предусмотрено три способа вызова:
- вызов серверного метода;
- вызов клиентского метода;
- открытие формы.
Вызов обработок из справочника и так сильно затрудняет отладку в управляемом приложении, а ту еще и разные способы вызова.
Но если над всем этим подумать, то при открытии формы сначала на сервере вызывается обработчик события "ПриСозданииНаСервере. В нем можно вызвать любую серверную процедуру, и если форма не нужна, то "Отказ=Истина;" и все. Получаем тот же вызов серверного метода.
Затем при создании формы вызывается обработчик "ПриОткрытии", уже на клиенте. В нем можно вызвать клиентский метод формы, и если сама форма не нудна, то "Отказ=Истина;" и все. Получаем вызов клиентского метода.
Ну и наконец, если мы не отказываемся создать и открыть форму, то форма и откроется. Получаем вызов ДВОО способом "Открытие формы".
То есть я хочу сказать, что все ДВОО надо делать со способом вызова "Открытие формы".
Рассуждаем дальше. Открытие формы есть открытие формы. То есть, делается это в конфигурации БСП или просто через главное меню "Файл / Открыть", управление попадает в метод формы "ПриСозданииНаСервере". То есть такую обработку очень легко отлаживать. Запускаем через "Файл / Открыть" и отлаживаем. А потом подключаем в конфигурацию и она должна работать так же.
Рассуждаем дальше. БСП при вызове разных типов обработок (печатные формы, обработки заполнения объекта и т.д.) передает им дополнительные параметры. Эти параметры можно отобразить на открываемой форме, чтобы задавать их в режиме отладки. Тем более, что не трудно определить, открывается форма через "Файл / Открыть" или штатным для БСП способом через справочник "ДополнительныеОтчетыИОбработки" и скрывать эти реквизиты при штатной работе и показывать при отладке.
Следующая мысль. Обработки часто используются чисто в серверном контексте, когда создается объект обработки, заполняются его реквизиты и вызываются ее методы, которые выполняют какие-то действия. Та же схема может быть реализована при использовании метода «ОткрытьФорму»: создаем обработку, вызываем открытие формы, передавая в форму все нужные параметры, в форме в процедуре «ПриСозданииНаСервере» выполняем все нужные действия и «Отказ=Истина». То есть реквизиты у внешних отчетов и обработок использовать тоже не нужно. Все данные передаются и хранятся в параметрах и реквизитах формы. Зато это наверное ускорит выполнение метода «л_ОбработкаОбъект = РеквизитФормыВЗначение(«Объект»);». Этой командой мы фактически инициализируем модуль обработки, чтобы воспользоваться его процедурами и функциями. То есть обработка как бы является внешним общим модулем, которые мы загружаем из внешнего файла.
Перейдем к практике.
2. Внешняя печатная форма.
Итак:
Во-первых, хочется, чтобы печатная форма в результате показывалась в специальной общей форме "ПечатьДокументов", предусмотренной в БСП для вывода печатных форм.
Во-вторых, хочется иметь возможность простой отладки.
В-третьих, иногда перед печатью формы хочется запросить у пользователя дополнительную информацию.
В этой части статьи остановимся на простой печатной форме, без запроса дополнительной информации.
Файл печатной формы — АЦРК_ДополнительнаяВнешняяПечатнаяФорма_ПечатьКомментария_х_х_ххх.epf
2.1 Модуль обработки.
Модуль обработки содержит процедуру СведенияОВнешнейОбработке с двумя служебными процедурой и функцией.
И кроме того, в модуле находится экспортная процедура Печать(п_МассивОбъектовНазначения, п_КоллекцияПечатныхФорм, п_ОбъектыПечати, п_ПараметрыВывода), которая должна сформировать табличные документы и поместить их в коллекцию печатных форм, а так же заполнить список значений «ОбъектыПечати» и связать их с областями сформированного табличного документа через имена областей. Это требование БСП.
Процедура вызывается из общей формы БСП «Печать документов».
Ну и далее могут быть процедуры и функции, которые вызываются из процедуры Печать.
2.2 Форма обработки
Параметры.
Определены 4 параметра, которые БСП передает в открываемую форму:
- ДополнительнаяОбработкаСсылка
- ИдентификаторКоманды
- ИмяФормы
- ОбъектыНазначения
У ОбъектыНазначения тип «Произвольный», а передается в него массив объектов назначения.
Реквизиты.
Четыре реквизита (рф_ДополнительнаяОбработкаСсылка, рф_ИдентификаторКоманды, рф_ИмяФормы, рф_СписокОбъектовНазначения) соответствуют параметрам, чтобы можно было параметры на форме отобразить, а в режиме отладки и заполнить.
Важно! Реквизит рф_СписокОбъектовНазначения имеет тип СписокЗначение и тип значения ЛюбаяСсылка, потому что может работать с любыми объектами базы.
Реквизит рф_ИмяЭтойОбработки предназначен для открытия других форм этой обработки командой ОткрытьФорму("ВнешняяОбработка."+рф_ИмяЭтойОбработки+".Форма. ". );
В данном простом примере эта возможность не используется.
Реквизит рф_РежимОтладки предназначен для хранения признака запуска обработки в режиме отладки. Режимом отладки будем считать запуск обработки через «Файл/Открыть» или установка признака отладки при подключении внешней обработки. Во втором случае режим отладки будет означать только то, что откроется форма обработки и покажет полученные параметры, отладку в конфигураторе такой режим не обеспечит.
Реквизит рф_ТаблицаКоманд предназначен для получения таблицы команд из сведений о внешней обработке. При желании его можно поместить на форму, чтобы посмотреть эти команды. А сам список команд из таблицы переносится в список значений для поля ввода для идентификатора команды (рф_ИдентификаторКоманды), так что все команды будут видны в списке выбора.
2.3 Модуль формы
Процедура ПриСозданииНаСервере.
Из параметров регистрации получаем таблицу команд.
Затем устанавливаем режим отладки и переносим значения из параметров в реквизиты формы.
При запуске через «Файл/Открыть» никакие параметры не передаются. Поэтому признаком запуска через «Файл/Открыть» выберем отсутствие параметра рф_ДополнительнаяОбработкаСсылка. Но при этом мы можем получить ссылку на нашу обработку в справочнике дополнительных отчеты и обработок, если мы ее туда помещали, хотя она нам и не нужна в режиме отладки. При первичной отладке мы проверяем правильное формирование табличных документов, котрые будут просто показаны в виде табличных документов, а не в форме «ПечатьДокументов».
Процедура ПриОткрытии.
В режиме отладки отрываем для редактирования список объектов назначения. Устанавливаем в качестве выполняемой команды первую команду из таблицы команд.
Если запуск производится в штатном режиме, то параметры редактировать не надо, только смотрим. И сразу имитируем выполнение переданной команды. Ну и поскольку в данном примере дополнительных запросов мы делать не будем, то форму открывать не надо, а значит Отказ = Истина;
Процедура ВыполнитьКоманду.
Преобразуем список объектов назначения в массив (при штатной работе через БСП в процедуру печати объекты назначения передаются именно в виде массива) и выполняем формирование печатных форм.
Процедура ПечатьМакетаMXL
В режиме отладки мы не обращаемся к БСП и ее форме ПечатьДокументов, потому что БСП будет вызывать нашу обработку через справочник ДополнительныеОтчетыИОбработки и мы не сможе отладить серверную процедуру Печать. Поэтому мы подготавливаем параметры и вызываем нашу процедуру Печать сами, чтобы можно было пройти ее отладчиком. А потом просто показываем сформированные табличные документы методом Показать.
А вот в штатном режиме мы вызываем стандартную форму БСП ПечатьДокументов так же, как это делается в БСП, предварительно подготовив нужные параметры. То есть при штатной работе БСП создает внешнюю обработку из справочника ДополнительныеОтчетыИОбработки, которая должна использовать вызов серверного метода, готовит параметры и вызывает форму ПечатьДокументов, которая уже вызывает метод Печать из модуля созданной обработки. Ну а мы вызовем форму Печать документов напрямую, передав ей ссылку на нашу обработку, обойдя проверку на использование вызова серверного метода. И получится, что наша обработка используется через ОткрытиеФормы, но печатная форма появится в форме ПечатьДокумента! Что вообще-то в БСП не предусмотрено.
Процедура рф_ИдентификаторКомандыПриИзменении
Обеспечивает изменение заголовка кнопки выполнения команды при выборе команды.
Функция ОтладкаФормированияПечатнойФормыНаСервере.
Процедура формирует парамеры для серверной процедуры Печать, как это делается при штатной работе через БСП, вызывает процедуру Печать и потом извлекает сформированные табличные документы из полученной коллекции печатных форм.
Попробуйте подключить к своей конфигурации — должна работать с любым объектом, для которого предусмотрено подключение внешних печатных форм и есть реквизит Комментарий. В том числе должно работать и для списка объектов.
3. Как из этого образца делать свою форму.
3.1 Модуль объекта
Сокращаем количество типов объектов, для которых форма будет работать, в процедуре СведенияОВнешнейОбработке.
Изменяем список команд.
Переделываем процедуру Печать и вызываемые процедуры и функции. Если форма создается на основе имеющейся в конфигурации, можно и нужно вызывать процедуры из менеджеров соответствующих объектов. Или перенести такие процедуры в модуль, если нужно внести в них изменения.
3.2 Форма
Ограничить тип значения реквизита рф_СписокОбъектовНазначения в соответствии с теми типами, которые перечислены в процедуре СведенияОВнешнейОбработке в модуле.
3.3 Модуль формы
Ничего менять не нужно.
3.4 Макеты
Добавляете свои макеты. Стандарт БСП предполагает, чтобы имена MXL-макетов начинались с “ПФ_MXL_”.
Читайте также: