Разработка и Конфигурация · 11 мин
1С: подключение внешнего заполнения табличной части
Пошаговая инструкция: как создать и подключить внешнюю обработку заполнения табличной части в 1С через механизм дополнительных отчетов и обработок БСП.
Внешнее заполнение табличной части — это обработка (файл .epf), которая добавляет в документ или справочник кнопку «Заполнить» с собственной логикой: подбором товаров по остаткам, загрузкой данных из файла, расчётом строк по формуле. Механизм работает без изменения конфигурации, поэтому не снимает её с поддержки и не ломается при обновлении.
Подключение выполняется через подсистему «Дополнительные отчеты и обработки» библиотеки стандартных подсистем (БСП), которая входит в состав большинства типовых решений: «Управление торговлей», «ERP», «Комплексная автоматизация», «Бухгалтерия предприятия». Обработка регистрируется в базе, привязывается к конкретным объектам и появляется у пользователей в интерфейсе документа.
Ниже — полный цикл: требования к коду обработки, подключение в режиме предприятия, настройка команд, проверка результата и типовые ошибки. Материал ориентирован на управляемые формы и типовые конфигурации с БСП; для самописных конфигураций без БСП алгоритм отличается и описан отдельно.
Требования к обработке: что должно быть в коде
Чтобы БСП приняла файл, обработка должна соответствовать программному интерфейсу. В модуле объекта обязательна экспортная функция СведенияОВнешнейОбработке(), возвращающая структуру с параметрами регистрации: вид обработки, версия, безопасный режим, таблица команд. Для заполнения табличных частей используется вид "ЗаполнениеОбъекта".
Каждая команда в таблице описывает кнопку: идентификатор, представление, способ вызова. Для заполнения табличной части указывают ВызовСерверногоМетода (если не нужен диалог с пользователем) или ВызовКлиентскогоМетода (если требуется открыть форму настроек или выбрать файл). В модуле объекта должна быть процедура ВыполнитьКоманду(ИмяКоманды, ОбъектыНазначения) для серверного варианта.
Функция СведенияОВнешнейОбработке() Экспорт
ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.3.1.1");
ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиЗаполнениеОбъекта();
ПараметрыРегистрации.Версия = "1.0";
НоваяКоманда = ПараметрыРегистрации.Команды.Добавить();
НоваяКоманда.Представление = НСтр("ru = 'Заполнить по остаткам'");
НоваяКоманда.Идентификатор = "ЗаполнитьПоОстаткам";
НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();
Возврат ПараметрыРегистрации;
КонецФункцииОбратите внимание: функция СведенияОВнешнейОбработке() вызывается в безопасном режиме при регистрации, поэтому в ней нельзя обращаться к данным базы — только формировать структуру описания. Вся рабочая логика размещается в ВыполнитьКоманду.
Включение механизма дополнительных обработок
Перед подключением проверьте, что функциональная опция включена: «Администрирование → Печатные формы, отчеты и обработки → Дополнительные отчеты и обработки». Без этого флага раздел регистрации в интерфейсе не отображается. В некоторых конфигурациях рядом есть опция открытия внешних файлов — она влияет только на отладку через «Файл → Открыть», на работу зарегистрированных обработок не влияет.
Для включения и регистрации нужны права администратора или роль «Добавление и изменение дополнительных отчетов и обработок». Обычному пользователю, который будет нажимать кнопку заполнения, достаточно права использования конкретной обработки — оно настраивается в карточке обработки на закладке «Быстрый доступ».
Пошаговое подключение обработки
Откройте «Администрирование → Печатные формы, отчеты и обработки → Дополнительные отчеты и обработки» и нажмите «Создать» или кнопку добавления из файла (значок загрузки). Выберите файл .epf — система вызовет СведенияОВнешнейОбработке() и покажет карточку с заполненными сведениями. Если вместо карточки появилось сообщение об ошибке, чаще всего причина в отсутствии обязательной функции или неверном виде обработки.
В карточке обработки задайте размещение — список объектов, в которых появится кнопка. Откройте таблицу «Размещение» и добавьте нужные документы или справочники, например «Реализация товаров и услуг». Без заполненного размещения команда нигде не отобразится, хотя обработка будет зарегистрирована.
На закладке «Быстрый доступ» перенесите в правую часть пользователей или группы, которым доступна команда. Затем запишите карточку. После этого у выбранных пользователей в форме документа в меню «Заполнить» табличной части появится новый пункт.
- 1Включите опцию «Дополнительные отчеты и обработки» в разделе «Администрирование»
- 2Откройте список дополнительных обработок и загрузите файл .epf
- 3Проверьте, что вид определился как «Заполнение объекта», а команды отобразились в карточке
- 4Заполните таблицу «Размещение» — укажите документы, где нужна кнопка
- 5Настройте «Быстрый доступ» для пользователей и запишите карточку
- 6Откройте документ и проверьте появление команды в меню «Заполнить» табличной части
Как работает заполнение: клиентский и серверный вызов
При вызове серверного метода БСП передаёт в ВыполнитьКоманду массив ссылок на объекты. Обработка получает объект по ссылке методом ПолучитьОбъект(), заполняет табличную часть и записывает объект. Важно: если документ открыт у пользователя, запись объекта из обработки приведёт к конфликту версий при последующем сохранении из формы — пользователь увидит сообщение «данные были изменены». Поэтому серверный вариант удобнее для списков, где документ не открыт.
При вызове клиентского метода БСП передаёт в экспортную процедуру формы обработки параметры со ссылками, и вы сами управляете логикой: открываете диалог настроек, затем через ВладелецФормы или повторный вызов сервера изменяете объект. Этот вариант предпочтительнее, когда перед заполнением нужно выбрать склад, период или файл.
Способы вызова команды
Подходит для массового заполнения из списка документов без диалогов. Ограничение: конфликт версий, если документ открыт в форме.
Подходит, когда нужен выбор параметров или файла перед заполнением. Требует формы обработки и аккуратной работы с открытым объектом.
Открывает форму обработки без привязки к команде заполнения; для табличных частей используется редко, чаще для отчётов.
Проверка результата после подключения
Откройте документ из списка размещения и убедитесь, что в меню «Заполнить» (или «Ещё → Заполнить») табличной части появилась ваша команда. Выполните её на тестовом документе и проверьте: строки добавились, суммы и количество соответствуют ожиданиям, документ записался без ошибок.
Если кнопка есть, но ничего не происходит, откройте журнал регистрации («Администрирование → Обслуживание → Журнал регистрации») — ошибки выполнения внешних обработок фиксируются там с указанием строки модуля. Типичная причина «молчаливого» сбоя — исключение внутри ВыполнитьКоманду, которое БСП перехватывает и показывает пользователю только краткое сообщение.
Как проверить результат
Пункт с заданным представлением виден в форме документа
Команды нет — проверьте размещение и быстрый доступ
Табличная часть заполняется ожидаемыми данными, документ проводится
Строки не добавляются или объект не записывается — смотрите журнал регистрации
Кнопка доступна под рабочей учётной записью
Кнопка видна только администратору — не настроен быстрый доступ
Типичные ошибки и ограничения
Самая частая ошибка — обработка зарегистрирована, но кнопка не появляется. Причины по убыванию частоты: не заполнено размещение, пользователь не добавлен в быстрый доступ, кэш команд устарел (помогает перезапуск сеанса), конфигурация не содержит БСП или её версия несовместима с кодом сведений об обработке.
Вторая группа проблем — конфликт записи. Если обработка записывает объект, который открыт в форме, пользователь получит ошибку версии данных. Решения: вызывать команду из списка, а не из открытого документа; либо в клиентском варианте работать с данными формы через ВладелецФормы.Объект и не записывать объект самостоятельно.
Учтите ограничение безопасного режима: в файловых базах и при включённых профилях безопасности внешняя обработка может быть лишена доступа к файловой системе, COM-объектам и интернету. Если логика требует чтения Excel или обращения к внешнему сервису, проверьте настройки безопасного режима в карточке обработки и права на сервере 1С.
Альтернативы: когда внешняя обработка не подходит
Если конфигурация самописная и не содержит БСП, механизм «Дополнительные отчеты и обработки» недоступен. В этом случае варианты такие: добавить кнопку заполнения расширением конфигурации (механизм расширений поддерживает изменение форм без снятия с поддержки), либо использовать универсальную обработку «Групповое изменение реквизитов» для простых сценариев заполнения.
Расширение конфигурации — предпочтительный путь, когда заполнение должно работать как штатная кнопка с тонкой интеграцией в форму, а внешняя обработка — когда нужна быстрая доработка без доступа к конфигуратору и с возможностью обновлять логику простой заменой файла в карточке.
Что важно запомнить
Подключение сводится к трём условиям: корректная функция СведенияОВнешнейОбработке() с видом «ЗаполнениеОбъекта», заполненное размещение и быстрый доступ в карточке обработки, аккуратная работа с записью объекта, чтобы не конфликтовать с открытой формой. Проверяйте результат на копии базы и читайте журнал регистрации при сбоях.
Частые вопросы
Можно ли подключить обработку заполнения без прав администратора?
Регистрация обработки требует права на добавление дополнительных отчетов и обработок — обычно это роль администратора или отдельная роль БСП. Пользоваться уже подключённой командой могут обычные пользователи, если их добавили в быстрый доступ карточки обработки.
Почему команда появилась в списке документов, но не в открытой форме?
Чаще всего это устаревший кэш команд дополнительных обработок в сеансе. Закройте форму и откройте заново или перезапустите сеанс. Если не помогло — проверьте, что в размещении указан именно тот вид документа, и что команда не отключена в карточке обработки.
Как обновить обработку до новой версии?
Откройте карточку обработки в списке дополнительных отчетов и обработок и загрузите новый файл .epf кнопкой «Заменить из файла». Версия из СведенияОВнешнейОбработке должна отличаться — это упрощает контроль. Размещение и быстрый доступ при замене сохраняются.
Работает ли механизм в обычных формах (толстый клиент)?
Да, БСП поддерживает обычные формы, но интерфейс сведений об обработке и вызов команд отличается — используется старый вариант с функцией СведенияОВнешнейОбработке() без структуры БСП 3.x. Для современных типовых конфигураций на управляемых формах ориентируйтесь на интерфейс, показанный в статье.
Можно ли одной обработкой заполнять табличные части разных документов?
Да. В размещении укажите несколько видов документов, а в ВыполнитьКоманду определяйте тип объекта через ТипЗнч() и ветвите логику. Учтите, что состав и имена табличных частей у разных документов отличаются — обращайтесь к ним по именам, проверяя наличие через метаданные объекта.
Что делать, если конфигурация без БСП и расширения недоступны?
Остаётся доработка конфигурации в конфигураторе: добавление команды заполнения в форму документа и процедуры в модуль. Это снимает объект с полной поддержки, поэтому заранее оцените трудозатраты на обновления и зафиксируйте изменения в документации проекта.