Как поместить внешнюю обработку заполнения в командную панель табличной части документа в 1С

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

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

Рассмотри подробно особенности работы Библиотеки Стандартных Подсистем (БСП) в этой ситуации и разберем практические варианты решения задачи.

Особенности и ограничения подсистемы БСП

Проанализируем ситуацию с точки зрения стандартных механизмов 1С. При регистрации внешней обработки в справочнике «Дополнительные отчеты и обработки» с видом «Заполнение объекта» подсистема БСП автоматически привязывает команду заполнения к документу в целом.

В функции СведенияОВнешнейОбработке модуля объекта внешней обработки не предусмотрен штатный параметр, позволяющий программно указать привязку именно к конкретной табличной части. По умолчанию БСП выводит созданную кнопку в командную панель самой формы документа (в подменю «Заполнить» или меню «Еще» формы).

Однако существуют проверенные способы обойти это ограничение и разместить команду там, где это удобно пользователю.

Способ 1. Интерактивная настройка формы пользователем

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

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

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

Способ 2. Использование расширения конфигурации

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

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

Технические нюансы работы с контекстом формы

Выясним причину, почему при заполнении табличной части важно правильно настраивать режим записи. Если обработка должна заполнять данные непосредственно в открытой форме без обязательного предварительного сохранения документа на диск, при регистрации внешней обработки необходимо корректно указать параметр РежимЗаписи.

Посмотрим на пример формирования структуры команды в функции СведенияОВнешнейОбработке:


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

Благодаря параметру РежимЗаписи = "НеЗаписывать" обработка принимает в параметрах вызова контекст текущей формы (ЭтаФорма). Это позволяет считывать и изменять данные конкретной табличной части документа напрямую в текущем сеансе пользователя без лишней перезаписи объекта на диске.

← На главную