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