Почему не появляется кнопка «Заполнить» во внешней обработке в 1С:Управление торговлей 11?

Программист 1С v8.3 (Управляемые формы) 1С:Управление торговлей IT и автоматизация бизнеса
← На главную

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

Рассмотрим подробно структуру регистрации такой обработки, разберем корректный программный код и проанализируем основные технические причины, по которым команда заполнения может скрываться в интерфейсе «1С:Управление торговлей 11».

Программный код регистрации обработки в БСП

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

Разберем стандартную реализацию формирования сведений об обработке заполнения объекта:


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

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

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

Почему команда не отображается в форме: причины и решение

Если код регистрации написан без ошибок, но кнопка в форме не появилась, необходимо проверить следующие важные моменты:

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

Проанализировав эти факторы и проверив соответствие справочников назначения в УТ 11, вы сможете успешно вывести команду заполнения в форму нужного объекта.

← На главную