СведенияОВнешнейОбработке для обработчика в 1С Предприятие 8.3

Сведения о внешней обработке

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

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


	// заполняем структуру ПараметрыРегистрации


	Возврат ПараметрыРегистрации;
	
КонецФункции

Описание полей возвращаемой структуры можно посмотреть в комментарии к функции ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке(). Там можно получить актуальную информацию для вашей версии БСП.

Опишу основные поля структуры сведений о внешней обработке. При этом буду по минимуму повторять информацию в упомянутом комментарии, а постараюсь дополнить ее.

 

Поле «Вид»

Минимальным условием для регистрации внешнего отчета или обработки является заполненность поля «Вид». То есть, если вы создадите внешнюю обработку и пропишете в ней следующий код, то этого будет достаточно, чтобы добавить ее в справочник Дополнительные отчеты и обработки

Минимальное описание параметров регистрации

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

Возможные значения этого поля «Вид»

Значение поля «Вид» Расположение команды   Расширение

файла

  ПечатнаяФорма   В меню «Печать» на форме объекта или списка   epf
  ЗаполнениеОбъекта   В меню «Заполнить» на форме объекта или списка   epf
  СозданиеСвязанныхОбъектов   В меню «Создать на основании» — «Создание связанных объектов..»
на форме объекта или списка
  epf
  Отчет   В меню «Отчеты» на форме объекта или списка   erf
  ДополнительнаяОбработка   В списке соответствующих подсистем в меню
«Сервис» — «Дополнительные обработки»
  epf
  ДополнительныйОтчет   В списке соответствующих подсистем в меню
«Сервис» — «Дополнительные отчеты»
  erf

Поле «Вид» может принимать одно из значений, возвращаемых функциями ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработки<Вид>(). Например, для вида «ПечатнаяФорма» есть функция ВидОбработкиПечатнаяФорма().

рекомендуется заполнять поле «Вид» таким способом

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

а не вот таким

 

Поле «Назначение»

Содержит массив объектов конфигурации в формате «<Тип>.<Вид>», для которых будет назначен внешний отчет/обработка.

для конкретных видов

ПараметрыРегистрации.Назначение.Добавить("Документ.Счет");

для всех документов

ПараметрыРегистрации.Назначение.Добавить("Документ.*");

Этот параметр игнорируется, если поле «Вид» имеет значение «ДополнительнаяОбработка» или «ДополнительныйОтчет».

 

Поле «Наименование»

Это значение подставляется в наименование элемента справочника Дополнительные отчеты и обработки при создании.

Если не заполнено, то используется синоним внешней обработки/отчета.

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

 

Поле «Команды»

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

Эту табличную часть можно заполнить и вручную.

Каждой строке соответствует один пункт в соответствующих меню, описанных в таблице выше.

Чтобы команда внешней обработки появилась в нужном меню, обязательно нужно добавить хотя бы одну строку в эту таблицу.

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

 

Таблица «Команды», колонка «Использование»

В колонке «Использование» указывается тип вызываемой команды. По сочетанию Вид-Тип команды система определяет какая предопределенная процедура будет вызвана из внешней обработки/отчета, и где она будет объявлена — на клиенте или на сервере.

Наиболее часто используются процедуры Печать() и ВыполнитьКоманду(), а также открытие формы без обращения к методу.

Это поле может принимать одно из значений, возвращаемых функциями ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКоманды<Тип>(), например, ТипКомандыВызовСерверногоМетода(). В каждой из этих функций есть подробный комментарий.

Кроме того различается состав и количество параметров, передаваемых во внешнюю обработку/отчет. Кратко опишу возможные варианты использования в таблице

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

Для типа команды ВызовКлиентскогоМетода необходимо создать форму в обработке, назначить ее основной и объявить экспортную процедуру

 

Полезные процедуры

Рекомендую обратить внимание на следующие процедуры и функции:

ДополнительныеОтчетыИОбработки.ЗарегистрироватьОбработку(ОбъектСправочника, ПараметрыРегистрации)
ДополнительныеОтчетыИОбработки.ПолучитьОбъектВнешнейОбработки(Ссылка)
ДополнительныеОтчетыИОбработки.ВыполнитьКомандуИзФормыВнешнегоОбъекта(ИдентификаторКоманды, ПараметрыКоманды, ЭтаФорма)

Также будет полезно развернуть демо конфигурацию по БСП. В ней есть примеры внешних обработок и отчетов в справочнике внешних обработок.

Источник: https://infostart.ru/1c/articles/558559/

 

Классический вариант:

Функция СведенияОВнешнейОбработке() Экспорт
    ПараметрыРегистрации = Новый Структура;
    ПараметрыРегистрации.Вставить("Вид", "ДополнительнаяОбработка");
    ПараметрыРегистрации.Вставить("Наименование", "Идентификация номенклатуры по коду ЕГАИС");
    ПараметрыРегистрации.Вставить("Версия", "1.0");
    ПараметрыРегистрации.Вставить("БезопасныйРежим", Истина);
    ПараметрыРегистрации.Вставить("Информация", "Идентификация номенклатуры по коду ЕГАИС");
    ТаблицаКоманд = ПолучитьТаблицуКоманд();
    
    ДобавитьКоманду(ТаблицаКоманд,
    "Идентификация номенклатуры по коду ЕГАИС",
    "ИдентификацияНоменклатурыПоКодуЕГАИС",
    "ОткрытиеФормы",
    //<Показывать оповещение>,
    //<Модификатор>
    );
    
    ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);
    Возврат ПараметрыРегистрации;
КонецФункции

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

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

Источник: https://forum.infostart.ru/forum9/topic154498/