Встраиваем файл .epf в конфигурацию: дерево метаданных, команды, роли

· 9 мин

Содержание

Чтобы добавить внешнюю обработку в конфигураторе 1С, создайте в ветке Обработки новый объект, щёлкните по нему правой кнопкой и выберите Заменить на внешнюю обработку, отчет..., затем укажите файл .epf. Платформа перенесёт в объект реквизиты, табличные части, формы, макеты и модуль. Останется включить обработку в подсистему, дать права в ролях и выполнить Конфигурация → Обновить конфигурацию базы данных (F7).

Для внешнего отчёта (.erf) порядок тот же, только объект создаётся в ветке Отчеты. В типовой конфигурации на поддержке сначала решите, куда встраивать: в основную конфигурацию или в расширение. От этого зависит, как пройдут будущие обновления.

Что проверить в файле обработки до подключения

Встраивание переносит в конфигурацию всё содержимое файла, включая ошибки. Поэтому сначала откройте обработку отдельно: в конфигураторе Файл → Открыть, выберите .epf. Обработка откроется в своём окне с деревом объекта, не затрагивая базу.

Что посмотреть:

  • 🔤 Имя объекта. Оно не должно совпадать с именем уже существующей обработки конфигурации. Если совпадает — переименуйте внешнюю обработку заранее.
  • 🧩 Ссылки на метаданные. Реквизиты типа СправочникСсылка.Номенклатура или ДокументСсылка.РеализацияТоваровУслуг будут работать, только если такие объекты есть в вашей конфигурации. Обработка, написанная под другую конфигурацию, после встраивания выдаст ошибки компиляции.
  • 📝 Модуль объекта. Найдите экспортную функцию СведенияОВнешнейОбработке(). Если она есть, файл подготовлен для механизма дополнительных обработок БСП. При встраивании в конфигурацию эта функция не нужна: её можно оставить, но регистрацию через неё платформа выполнять не будет.
  • 🪟 Тип форм. Управляемые формы работают в интерфейсе «Такси». Обычные формы откроются только в толстом клиенте, если это разрешено свойствами конфигурации.
  • ⏳ Модальные вызовы. Если в конфигурации свойство Режим использования модальности равно «Не использовать», а в коде обработки есть Вопрос() или Предупреждение() без асинхронных аналогов, проверка модулей покажет ошибку.

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

Перед изменением конфигурации сделайте копию базы: Администрирование → Выгрузить информационную базу в конфигураторе. Файл .dt позволит откатиться, если встраивание пойдёт не так.

Выбор способа: конфигурация, расширение или дополнительная обработка

Встраивать обработку прямо в основную конфигурацию — не единственный вариант. Для типовых решений на поддержке он даже не лучший.

Какой у вас случай?

Сравнение по главным параметрам:

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

Как добавить обработку в дерево метаданных конфигурации

Порядок для основной конфигурации.

Шаг 1. Откройте конфигурацию на редактирование

Запустите конфигуратор и выполните Конфигурация → Открыть конфигурацию. Если конфигурация типовая и стоит на замке, добавить новый объект не получится. Включите изменения: Конфигурация → Поддержка → Настройка поддержки, кнопка Включить возможность изменения. Для корня конфигурации выберите правило «Объект поставщика редактируется с сохранением поддержки».

После включения изменений обновление типовой конфигурации пойдёт через сравнение и объединение — это дольше и требует внимания. Если такого не хочется, используйте расширение (см. ниже).

Шаг 2. Создайте пустой объект

  1. В дереве метаданных найдите ветку Обработки (она идёт после документов и журналов).
  2. Щёлкните по ней правой кнопкой и выберите Добавить.
  3. Задайте имя, по возможности такое же, как у внешней обработки. Окно свойств можно пока закрыть.

Шаг 3. Загрузите содержимое из файла

  1. В дереве щёлкните правой кнопкой по только что созданной обработке.
  2. Выберите Заменить на внешнюю обработку, отчет....
  3. Укажите файл .epf и подтвердите замену.

Платформа заменит содержимое объекта: реквизиты, табличные части, формы, макеты, модуль объекта. После замены откройте свойства и проверьте имя, синоним и основную форму — именно они видны пользователю.

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

Вариант для расширения

В типовой конфигурации на поддержке надёжнее работать через расширение:

  1. Конфигурация → Расширения конфигурации, кнопка Добавить — создайте расширение с понятным именем и префиксом, например Доп_.
  2. Откройте дерево расширения и добавьте в ветке Обработки новый объект.
  3. Перенесите в него содержимое файла той же командой замены из контекстного меню объекта.
  4. Обновите конфигурацию базы данных для расширения (F7 в его окне).

Расширения появились в платформе 8.3.6. Обработка в расширении живёт отдельно от типовой конфигурации и переживает её обновление.

Свойства объекта, которые стоит заполнить

Окно свойств открывается двойным щелчком по объекту или клавишей Alt+Enter. Проверьте четыре вещи:

  • 🏷 Синоним. Это название, которое пользователь увидит в меню. «ЗагрузкаЦенИзExcel» в интерфейсе выглядит плохо, «Загрузка цен из Excel» — нормально.
  • 🪟 Основная форма. Если в обработке несколько форм, укажите ту, что должна открываться по команде. Без основной формы обработку нельзя открыть интерактивно.
  • 💬 Пояснение (комментарий). Короткая подсказка рядом с командой в интерфейсе. Полезно, если обработок много.
  • 📋 Использовать стандартные команды. Флажок отвечает за то, чтобы платформа сама создала команду открытия обработки для панели действий подсистемы.

Модуль менеджера у встроенной обработки пустой — у внешней его не было. Если нужна серверная логика, доступная другим объектам, её можно вынести туда или в общий модуль.

Как вывести обработку в интерфейс и панели команд

Обработка в дереве метаданных ещё не видна пользователю. Нужно включить её в подсистему.

Через подсистему

  1. Откройте свойства обработки, вкладка или раздел Подсистемы.
  2. Отметьте флажком нужный раздел, например «Склад» или «Администрирование».
  3. Откройте эту подсистему и вызовите её командный интерфейс (кнопка Командный интерфейс в окне подсистемы).
  4. Найдите команду обработки в группе Панель действий → Сервис и проверьте видимость для нужных ролей.

После обновления базы обработка появится в разделе в группе «Сервис».

Через собственную команду

Если обработку нужно вызывать из формы документа или справочника, создайте у неё команду: ветка Команды внутри объекта, Добавить. В свойствах команды задайте группу (например, панель командной формы документа) и тип параметра — ДокументСсылка.ИмяДокумента. В модуле команды откройте форму и передайте ей ссылку:

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

В форме обработки параметр Документ нужно создать в ветке параметров формы, иначе значение не дойдёт.

Отдельно про печатные формы

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

Поэтому для печатной формы в типовой базе почти всегда проще оставить её дополнительной обработкой: в режиме 1С:Предприятие Администрирование → Печатные формы, отчеты и обработки → Дополнительные отчеты и обработки, кнопка Добавить из файла....

Права доступа: роли вместо разрешений на файлы

Главный плюс встраивания — не нужно давать пользователям право открывать произвольные внешние файлы. Это право потенциально опасное: через внешнюю обработку можно выполнить любой код в базе.

Что сделать после встраивания:

  1. Откройте ветку Общие → Роли.
  2. Выберите роль, которой должна быть доступна обработка, или создайте свою, например ИспользованиеЗагрузкиЦен.
  3. В окне прав найдите обработку и отметьте права Использование и Просмотр.
  4. Назначьте роль пользователям. В типовых конфигурациях на БСП роли назначаются через профили групп доступа в режиме 1С:Предприятие; новую роль из основной конфигурации туда добавляют в карточке профиля.

Какие права касаются внешних файлов, если обработку всё же запускают из .epf:

Право (уровень конфигурации)За что отвечает
Интерактивное открытие внешних обработокОткрыть .epf через меню «Файл»
Интерактивное открытие внешних отчетовОткрыть .erf через меню «Файл»

В платформе 8.3 есть ещё механизм защиты от опасных действий: при открытии внешнего файла пользователь видит предупреждение. Он настраивается в свойствах пользователя (флажок защиты от опасных действий). Встроенная обработка этого предупреждения не вызывает — она часть конфигурации.

Не снимайте защиту от опасных действий массово ради удобства. Лучше встроить нужную обработку и дать роль только тем, кому она нужна.

Отладка встроенной обработки

Перед выпуском в рабочую базу проверьте обработку на копии.

  1. Выполните Конфигурация → Проверка конфигурации. Отметьте проверку логической целостности и поиск ссылок на несуществующие объекты. Ошибки в модуле обработки появятся в окне сообщений с номером строки.
  2. Обновите конфигурацию базы данных (F7). Обработка не создаёт таблиц, поэтому реструктуризации данных не будет. Если в базе работают пользователи, платформа может предложить динамическое обновление — тогда они увидят обработку только после перезапуска сеанса.
  3. Запустите отладку: Отладка → Начать отладку → Тонкий клиент или F5.
  4. Поставьте точки останова (F9) в модуле формы и модуле объекта. Проверьте, что серверный код (&НаСервере) выполняется под ролью обычного пользователя, а не администратора.
  5. Зайдите под тестовым пользователем без полных прав. Если команда не видна или вылетает ошибка нарушения прав — вернитесь к ролям.

💡 Удобный приём: держите в отладчике окно Табло и следите за значениями реквизитов обработки по шагам. Так быстрее найти место, где данные теряются после переноса из файла.

Ошибки при подключении и их устранение

Диагностика: выберите симптом

Ещё одна неочевидная ситуация. Встроили обработку, потом получили от разработчика исправленный .epf — и повторили замену из файла. Замена перезапишет объект целиком, включая правки, которые вы сделали уже в конфигурации: команды, подсистемы в свойствах могут остаться, но модуль и формы будут из файла. Перед повторной заменой выгрузите текущий объект командой Сохранить как внешнюю обработку, отчет..., чтобы было с чем сравнить.

Частые вопросы

Можно ли подключить внешнюю обработку без конфигуратора?
Да. В конфигурациях на БСП её добавляют в справочник дополнительных отчетов и обработок в режиме 1С:Предприятие. Конфигурацию при этом менять не нужно.
Слетит ли встроенная обработка при обновлении типовой конфигурации?
Если она в основной конфигурации, при обновлении через сравнение и объединение ваш объект сохранится, но обновление станет сложнее. В расширении обработка обновлением не затрагивается.
Нужен ли монопольный режим, чтобы добавить обработку?
Обработка не меняет структуру таблиц, поэтому обновление обычно проходит без реструктуризации. Пользователям, которые работают в базе, придётся перезапустить сеанс, чтобы увидеть изменения.
Как вернуть встроенную обработку обратно в файл?
Щёлкните по объекту правой кнопкой в дереве метаданных и выберите «Сохранить как внешнюю обработку, отчет…». Получится обычный файл .epf.
Работает ли этот способ для внешних отчётов?
Да. Создайте объект в ветке «Отчеты» и замените его на файл .erf той же командой. Права настраиваются аналогично.