Универсальный код ВПФ
Категория: Примеры кода | 09.04.2026 | Просмотров: 18
Ниже представлен код на языке 1С:Предприятие 8 представляет собой стандартную реализацию экспортной функции СведенияОВнешнейОбработке(), которая используется для регистрации внешней обработки (в данном случае — печатной формы) в типовых конфигурациях на управляемых формах.
Функция СведенияОВнешнейОбработке() Экспорт
МетаданныеОбработки = Метаданные();
ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке();
ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиПечатнаяФорма();
ПараметрыРегистрации.Назначение = ПолучитьНазначения();
ПараметрыРегистрации.Версия = МетаданныеОбработки.Комментарий;
ПараметрыРегистрации.Наименование = МетаданныеОбработки.Синоним;
ПараметрыРегистрации.БезопасныйРежим = Ложь;
ПараметрыРегистрации.Информация = МетаданныеОбработки.Синоним + Символы.ПС + "Последнее изменение: " + Формат(ТекущаяДатаСеанса(),"ДЛФ=D");
Для Каждого СтрокаМакеты Из МетаданныеОбработки.Макеты Цикл
НоваяКоманда = ПараметрыКоманды();
НоваяКоманда.Представление = СтрокаМакеты.Синоним;
НоваяКоманда.Идентификатор = СтрокаМакеты.Имя;
НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();
НоваяКоманда.ПоказыватьОповещение = Ложь;
НоваяКоманда.Модификатор = "ПечатьMXL";
ДобавитьКомандуПечати(ПараметрыРегистрации, НоваяКоманда);
КонецЦикла;
Возврат ПараметрыРегистрации;
КонецФункции
Процедура ДобавитьКомандуПечати(ПараметрыРегистрации, ПараметрыКоманды)
НоваяКоманда = ПараметрыРегистрации.Команды.Добавить();
ЗаполнитьЗначенияСвойств(НоваяКоманда, ПараметрыКоманды);
КонецПроцедуры
Функция ПараметрыКоманды()
Результат = Новый Структура();
Результат.Вставить("Представление");
Результат.Вставить("Идентификатор");
Результат.Вставить("Использование");
Результат.Вставить("ПоказыватьОповещение", Ложь);
Результат.Вставить("Модификатор", "");
Возврат Результат;
КонецФункции
Функция ПолучитьНазначения()
МассивНазначений = Новый Массив();
МассивНазначений.Добавить("Документ.СчетНаОплатуПокупателю");
Возврат МассивНазначений;
КонецФункцииНазначение функции СведенияОВнешнейОбработке()
Функция с предопределённым именем СведенияОВнешнейОбработке является обязательной для любой внешней обработки, предназначенной для подключения к типовым конфигурациям через подсистему «Дополнительные отчеты и обработки». Она возвращает структуру параметров регистрации, которая сообщает системе, как именно должна быть представлена обработка в интерфейсе, к каким объектам метаданных она применима и какие команды предоставляет пользователю.
Пошаговый разбор кода
1. Получение метаданных обработки
МетаданныеОбработки = Метаданные();Функция Метаданные() возвращает объект метаданных самой внешней обработки (т.е. её собственное описание из файла *.epf). Через этот объект в дальнейшем извлекаются синоним, комментарий (версия) и перечень макетов.
2. Создание базовой структуры параметров регистрации
ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке();Вызов метода СведенияОВнешнейОбработке() из менеджера подсистемы создаёт типовую структуру, которую необходимо заполнить специфическими для данной обработки значениями.
Затем последовательно заполняются свойства структуры:
Свойство | Значение | Пояснение |
|---|---|---|
| Вид | ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиПечатнаяФорма() | Указывает, что обработка является печатной формой. |
| Назначение | ПолучитьНазначения() | Массив ссылок на объекты метаданных (документы, справочники и т.д.), к которым «привязывается» печатная форма. |
| Версия | МетаданныеОбработки.Комментарий | В качестве версии используется значение поля «Комментарий» из свойств обработки в конфигураторе. |
| Наименование | МетаданныеОбработки.Синоним | Синоним обработки будет отображаться в интерфейсе как название внешней печатной формы. |
| БезопасныйРежим | Ложь | Разрешает выполнение кода обработки вне безопасного режима (доступ к файловой системе, COM и т.п.). При необходимости можно установить Истина. |
| Информация | Строка с синонимом и датой последнего изменения (текущей датой сеанса). | Отображается в карточке обработки как дополнительное описание. |
3. Функция получения назначений
Функция ПолучитьНазначения()
МассивНазначений = Новый Массив();
МассивНазначений.Добавить("Документ.СчетНаОплатуПокупателю");
Возврат МассивНазначений;
КонецФункции
Возвращает массив строковых идентификаторов объектов метаданных, для которых будет доступна данная печатная форма. В примере она назначается только для документа «Счет на оплату покупателю». При необходимости можно добавить несколько элементов, например: "Документ.РеализацияТоваровУслуг", "Справочник.Контрагенты".
4. Формирование команд печати на основе макетов
Для Каждого СтрокаМакеты Из МетаданныеОбработки.Макеты Цикл
НоваяКоманда = ПараметрыКоманды();
НоваяКоманда.Представление = СтрокаМакеты.Синоним;
НоваяКоманда.Идентификатор = СтрокаМакеты.Имя;
НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();
НоваяКоманда.ПоказыватьОповещение = Ложь;
НоваяКоманда.Модификатор = "ПечатьMXL";
ДобавитьКомандуПечати(ПараметрыРегистрации, НоваяКоманда);
КонецЦикла;
В этом цикле перебираются все макеты, присутствующие в обработке. Для каждого макета создаётся отдельная команда печати. Такой подход удобен, когда в одной внешней обработке содержится несколько печатных форм (например, «Счет (обычный)» и «Счет с факсимиле»). Поля команды:
- Представление — название кнопки в меню «Печать» (берётся из синонима макета).
- Идентификатор — внутреннее имя команды (соответствует имени макета). По этому идентификатору в дальнейшем будет вызываться процедура Печать() или аналогичная в модуле объекта обработки.
- Использование — указывает, что команда вызывает серверный метод обработки (ТипКомандыВызовСерверногоМетода()).
- Модификатор — строка "ПечатьMXL" говорит системе, что результат выполнения команды следует интерпретировать как табличный документ для вывода на печать.
- Вспомогательная функция ДобавитьКомандуПечати добавляет сформированную структуру команды в коллекцию ПараметрыРегистрации.Команды.
5. Вспомогательные функции
Функция ПараметрыКоманды()
Результат = Новый Структура();
Результат.Вставить("Представление");
Результат.Вставить("Идентификатор");
Результат.Вставить("Использование");
Результат.Вставить("ПоказыватьОповещение", Ложь);
Результат.Вставить("Модификатор", "");
Возврат Результат;
КонецФункцииСоздаёт шаблон структуры команды с необходимыми ключами. Такой подход улучшает читаемость кода и уменьшает вероятность опечаток.
Процедура ДобавитьКомандуПечати(ПараметрыРегистрации, ПараметрыКоманды)
НоваяКоманда = ПараметрыРегистрации.Команды.Добавить();
ЗаполнитьЗначенияСвойств(НоваяКоманда, ПараметрыКоманды);
КонецПроцедурыДобавляет новый элемент в коллекцию команд и копирует в него значения свойств из переданной структуры.
6. Возврат итоговой структуры
Возврат ПараметрыРегистрации;После заполнения всех данных структура возвращается вызывающему механизму, который на её основе выполняет регистрацию обработки в информационной базе.
Принцип работы в типовой конфигурации
- Пользователь загружает внешнюю обработку через справочник «Дополнительные отчеты и обработки».
- Система вызывает функцию СведенияОВнешнейОбработке() и получает параметры регистрации.
- На основе этих параметров в форме объекта (например, документа «Счет на оплату») динамически формируется подменю «Печать», содержащее команды, соответствующие каждому макету обработки.
- При выборе команды выполняется серверный вызов обработки с идентификатором команды. В модуле объекта обработки разработчик должен реализовать метод, который формирует табличный документ на основании переданных ссылок на объекты и возвращает его.
Важные замечания
- Имя макета и идентификатор команды должны совпадать с именем экспортной процедуры в модуле объекта обработки, которая будет отвечать за формирование печатной формы. Например, для макета с именем Счет в модуле объекта должна быть объявлена процедура Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт.
- Модификатор "ПечатьMXL" автоматически запускает стандартный механизм печати табличного документа, возвращённого серверным методом.
- Если требуется поддержка нескольких типов объектов (документов), достаточно добавить соответствующие строки в массив внутри функции ПолучитьНазначения().
Заключение
Представленный код — это минимально необходимый каркас для создания внешней печатной формы, совместимой с подсистемой «Дополнительные отчеты и обработки» в 1С:Предприятие 8.3. Он демонстрирует правильную регистрацию обработки, автоматическое формирование команд печати на основе имеющихся макетов и назначение обработки конкретному документу. Такой подход позволяет быстро разрабатывать и подключать печатные формы без изменения конфигурации, что особенно ценно при работе с типовыми решениями, находящимися на поддержке.
Комментарии
Пока нет комментариев. Будьте первым!
Добавить комментарий
Только авторизованные пользователи могут оставлять комментарии. Войдите или зарегистрируйтесь