Меню

    Ниже представлен код на языке 1С:Предприятие 8 представляет собой стандартную реализацию экспортной функции СведенияОВнешнейОбработке(), которая используется для регистрации внешней обработки (в данном случае — печатной формы) в типовых конфигурациях на управляемых формах.

Функция СведенияОВнешнейОбработке() Экспорт
	
	МетаданныеОбработки = Метаданные();

	ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке();
	ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиПечатнаяФорма();
	ПараметрыРегистрации.Назначение = ПолучитьНазначения();
	ПараметрыРегистрации.Версия = МетаданныеОбработки.Комментарий;
	ПараметрыРегистрации.Наименование = МетаданныеОбработки.Синоним;
	ПараметрыРегистрации.БезопасныйРежим = Ложь;
	ПараметрыРегистрации.Информация = МетаданныеОбработки.Синоним + Символы.ПС + "Последнее изменение: " + Формат(ТекущаяДатаСеанса(),"ДЛФ=D");
	
	Для Каждого СтрокаМакеты Из МетаданныеОбработки.Макеты Цикл
		НоваяКоманда = ПараметрыКоманды(); 
		НоваяКоманда.Представление = СтрокаМакеты.Синоним;
		НоваяКоманда.Идентификатор = СтрокаМакеты.Имя;
		НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();
		НоваяКоманда.ПоказыватьОповещение = Ложь;
		НоваяКоманда.Модификатор = "ПечатьMXL";
		ДобавитьКомандуПечати(ПараметрыРегистрации, НоваяКоманда);
	КонецЦикла;
	
	Возврат ПараметрыРегистрации;
	
КонецФункции

Процедура ДобавитьКомандуПечати(ПараметрыРегистрации, ПараметрыКоманды)
	
	НоваяКоманда = ПараметрыРегистрации.Команды.Добавить();  
	ЗаполнитьЗначенияСвойств(НоваяКоманда, ПараметрыКоманды);
	
КонецПроцедуры

Функция ПараметрыКоманды()
	
	Результат = Новый Структура();
	Результат.Вставить("Представление");
	Результат.Вставить("Идентификатор");
	Результат.Вставить("Использование");
	Результат.Вставить("ПоказыватьОповещение", Ложь);
	Результат.Вставить("Модификатор", "");
	
	Возврат Результат;
	
КонецФункции

Функция ПолучитьНазначения()
	
	МассивНазначений = Новый Массив();
	МассивНазначений.Добавить("Документ.СчетНаОплатуПокупателю");
	
	Возврат МассивНазначений;
		
КонецФункции

Назначение функции СведенияОВнешнейОбработке()

Функция с предопределённым именем СведенияОВнешнейОбработке является обязательной для любой внешней обработки, предназначенной для подключения к типовым конфигурациям через подсистему «Дополнительные отчеты и обработки». Она возвращает структуру параметров регистрации, которая сообщает системе, как именно должна быть представлена обработка в интерфейсе, к каким объектам метаданных она применима и какие команды предоставляет пользователю.

Пошаговый разбор кода

1. Получение метаданных обработки


МетаданныеОбработки = Метаданные();

Функция Метаданные() возвращает объект метаданных самой внешней обработки (т.е. её собственное описание из файла *.epf). Через этот объект в дальнейшем извлекаются синоним, комментарий (версия) и перечень макетов.

2. Создание базовой структуры параметров регистрации


ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке();

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

Затем последовательно заполняются свойства структуры:

Свойство 

Значение

Пояснение

ВидДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиПечатнаяФорма()Указывает, что обработка является печатной формой.
НазначениеПолучитьНазначения()Массив ссылок на объекты метаданных (документы, справочники и т.д.), к которым «привязывается» печатная форма.
ВерсияМетаданныеОбработки.КомментарийВ качестве версии используется значение поля «Комментарий» из свойств обработки в конфигураторе.
НаименованиеМетаданныеОбработки.СинонимСиноним обработки будет отображаться в интерфейсе как название внешней печатной формы.
БезопасныйРежимЛожьРазрешает выполнение кода обработки вне безопасного режима (доступ к файловой системе, COM и т.п.). При необходимости можно установить Истина.
ИнформацияСтрока с синонимом и датой последнего изменения (текущей датой сеанса).Отображается в карточке обработки как дополнительное описание.

3. Функция получения назначений


Функция ПолучитьНазначения()
   МассивНазначений = Новый Массив();
   МассивНазначений.Добавить("Документ.СчетНаОплатуПокупателю");
   Возврат МассивНазначений;
КонецФункции


Возвращает массив строковых идентификаторов объектов метаданных, для которых будет доступна данная печатная форма. В примере она назначается только для документа «Счет на оплату покупателю». При необходимости можно добавить несколько элементов, например: "Документ.РеализацияТоваровУслуг", "Справочник.Контрагенты".

4. Формирование команд печати на основе макетов


Для Каждого СтрокаМакеты Из МетаданныеОбработки.Макеты Цикл
   НоваяКоманда = ПараметрыКоманды(); 
   НоваяКоманда.Представление = СтрокаМакеты.Синоним;
   НоваяКоманда.Идентификатор = СтрокаМакеты.Имя;
   НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();
   НоваяКоманда.ПоказыватьОповещение = Ложь;
   НоваяКоманда.Модификатор = "ПечатьMXL";
   ДобавитьКомандуПечати(ПараметрыРегистрации, НоваяКоманда);
КонецЦикла;


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

  • Представление — название кнопки в меню «Печать» (берётся из синонима макета).
  • Идентификатор — внутреннее имя команды (соответствует имени макета). По этому идентификатору в дальнейшем будет вызываться процедура Печать() или аналогичная в модуле объекта обработки.
  • Использование — указывает, что команда вызывает серверный метод обработки (ТипКомандыВызовСерверногоМетода()).
  • Модификатор — строка "ПечатьMXL" говорит системе, что результат выполнения команды следует интерпретировать как табличный документ для вывода на печать.
  • Вспомогательная функция ДобавитьКомандуПечати добавляет сформированную структуру команды в коллекцию ПараметрыРегистрации.Команды.

5. Вспомогательные функции


Функция ПараметрыКоманды()
   Результат = Новый Структура();
   Результат.Вставить("Представление");
   Результат.Вставить("Идентификатор");
   Результат.Вставить("Использование");
   Результат.Вставить("ПоказыватьОповещение", Ложь);
   Результат.Вставить("Модификатор", "");
   Возврат Результат;
КонецФункции

Создаёт шаблон структуры команды с необходимыми ключами. Такой подход улучшает читаемость кода и уменьшает вероятность опечаток.


Процедура ДобавитьКомандуПечати(ПараметрыРегистрации, ПараметрыКоманды)
   НоваяКоманда = ПараметрыРегистрации.Команды.Добавить();  
   ЗаполнитьЗначенияСвойств(НоваяКоманда, ПараметрыКоманды);
КонецПроцедуры

Добавляет новый элемент в коллекцию команд и копирует в него значения свойств из переданной структуры.

6. Возврат итоговой структуры


Возврат ПараметрыРегистрации;

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

Принцип работы в типовой конфигурации

  1. Пользователь загружает внешнюю обработку через справочник «Дополнительные отчеты и обработки».
  2. Система вызывает функцию СведенияОВнешнейОбработке() и получает параметры регистрации.
  3. На основе этих параметров в форме объекта (например, документа «Счет на оплату») динамически формируется подменю «Печать», содержащее команды, соответствующие каждому макету обработки.
  4. При выборе команды выполняется серверный вызов обработки с идентификатором команды. В модуле объекта обработки разработчик должен реализовать метод, который формирует табличный документ на основании переданных ссылок на объекты и возвращает его.

Важные замечания

  • Имя макета и идентификатор команды должны совпадать с именем экспортной процедуры в модуле объекта обработки, которая будет отвечать за формирование печатной формы. Например, для макета с именем Счет в модуле объекта должна быть объявлена процедура Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт.
  • Модификатор "ПечатьMXL" автоматически запускает стандартный механизм печати табличного документа, возвращённого серверным методом.
  • Если требуется поддержка нескольких типов объектов (документов), достаточно добавить соответствующие строки в массив внутри функции ПолучитьНазначения().

Заключение

Представленный код — это минимально необходимый каркас для создания внешней печатной формы, совместимой с подсистемой «Дополнительные отчеты и обработки» в 1С:Предприятие 8.3. Он демонстрирует правильную регистрацию обработки, автоматическое формирование команд печати на основе имеющихся макетов и назначение обработки конкретному документу. Такой подход позволяет быстро разрабатывать и подключать печатные формы без изменения конфигурации, что особенно ценно при работе с типовыми решениями, находящимися на поддержке.

 

Комментарии

Пока нет комментариев. Будьте первым!

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

Только авторизованные пользователи могут оставлять комментарии. Войдите или зарегистрируйтесь