Разработка и Конфигурация · 13 мин
Как создать внешнюю обработку в 1С: пошаговое руководство
Как создать внешнюю обработку в 1С: конфигуратор, модуль объекта, форма, подключение через дополнительные отчеты и обработки, отладка и типовые ошибки.
Внешняя обработка — это файл с расширением .epf, который 1С запускает без изменения конфигурации базы. Такой инструмент позволяет добавить собственные отчеты, пакетные операции, загрузки данных и сервисные функции, не снимая конфигурацию с поддержки и не рискуя при обновлении. Создать обработку можно в конфигураторе за несколько минут, а дальнейшая работа сводится к написанию кода на встроенном языке и настройке формы.
Внешние обработки применяются в двух сценариях. Первый — простое открытие файла через меню «Файл → Открыть» в режиме 1С:Предприятие: это подходит для разовых операций и отладки. Второй — регистрация в подсистеме «Дополнительные отчеты и обработки» (БСП), когда обработка становится доступной пользователям прямо из интерфейса прикладного решения. Второй вариант требует реализации специальных функций в модуле объекта.
Ниже разобран полный цикл: от создания пустого файла до подключения обработки в типовую конфигурацию, с примерами кода и проверкой результата. Материал ориентирован на управляемые формы и платформу 8.3, как наиболее распространённую среду.
Что понадобится перед началом работы
Для создания обработки нужен конфигуратор 1С и доступ к базе, в которой будет вестись разработка. Подойдёт как файловая, так и серверная база — для разработки удобнее файловая копия, чтобы не мешать работе пользователей. Права разработчика (роль с правом «Администрирование» или полные права) обязательны для входа в конфигуратор.
Если обработка будет подключаться к типовой конфигурации (Бухгалтерия предприятия, Управление торговлей, ERP и т.п.), убедитесь, что в ней включена подсистема «Дополнительные отчеты и обработки». Обычно она находится в разделе «Администрирование → Печатные формы, отчеты и обработки». Без этой подсистемы обработку можно запускать только вручную через открытие файла.
Также заранее определите назначение обработки: от этого зависит вид, который вы укажете при регистрации. Вид определяет, где обработка появится в интерфейсе и какие команды ей доступны — заполнение табличной части, печатная форма, создание связанных объектов или просто отчёт.
Создание новой внешней обработки в конфигураторе
Откройте конфигуратор и выберите «Файл → Новый» (Ctrl+N). В списке типов документов укажите «Внешняя обработка» и подтвердите выбор. Появится окно новой обработки с пустой структурой: у неё есть имя, синоним, модуль объекта, а также возможность добавить формы, макеты и реквизиты.
Задайте имя обработки латиницей без пробелов — например, ЗагрузкаНоменклатуры. Синоним укажите на русском языке: именно его увидит пользователь. Сразу сохраните файл через «Файл → Сохранить как», выбрав понятное имя файла, например ЗагрузкаНоменклатуры.epf.
Обратите внимание: имя файла и имя обработки в метаданных могут отличаться, но удобнее держать их одинаковыми — так проще ориентироваться при обновлении версий. Храните рабочие копии обработок в отдельном каталоге с номерами версий, чтобы можно было откатиться к предыдущей редакции.
- 1Откройте конфигуратор и выполните «Файл → Новый → Внешняя обработка»
- 2Задайте имя латиницей и русский синоним
- 3Добавьте форму через вкладку «Формы» → «Добавить»
- 4Напишите код в модуле формы и модуле объекта
- 5Сохраните файл .epf и проверьте синтаксис через «Конфигурация → Проверка конфигурации» или F7 в модуле
Добавление формы и элементов интерфейса
Большинству обработок нужна форма — окно, в котором пользователь вводит параметры и запускает действие. В дереве обработки перейдите на вкладку «Формы» и нажмите «Добавить». Конструктор предложит создать основную форму обработки; соглашайтесь с настройками по умолчанию.
На форму перетащите реквизиты (например, «Период», «Организация», «ПутьКФайлу») и добавьте команду с кнопкой «Выполнить». Для команды создайте обработчик на клиенте и, если требуется работа с базой, серверную процедуру. Помните про директивы компиляции: &НаКлиенте выполняется на компьютере пользователя, &НаСервере — на сервере или в файловой базе в контексте приложения.
Типичная ошибка новичка — попытка обратиться к данным базы (запросы, документы) из клиентской процедуры. В тонком и веб-клиенте это приведёт к ошибке компиляции. Всю работу с данными выносите в серверные процедуры, а клиентскую часть оставляйте для диалогов выбора файла и оповещений.
// Модуль формы
&НаКлиенте
Процедура ВыполнитьЗагрузку(Команда)
ВыполнитьЗагрузкуНаСервере();
ПоказатьОповещениеПользователя("Загрузка завершена");
КонецПроцедуры
&НаСервере
Процедура ВыполнитьЗагрузкуНаСервере()
Запрос = Новый Запрос("ВЫБРАТЬ Ссылка ИЗ Справочник.Номенклатура");
// ... обработка результата запроса
КонецПроцедуры
Модуль объекта: где писать основную логику
Модуль объекта обработки открывается из дерева метаданных кнопкой «Открыть модуль объекта» или через контекстное меню. Здесь размещают процедуры и функции, которые работают независимо от формы: общие алгоритмы, экспортные функции для вызова извне и служебные процедуры.
Ключевой элемент для подключения к типовым конфигурациям — экспортная функция СведенияОВнешнейОбработке(). Она возвращает структуру с описанием обработки: вид, версия, назначение, команды. Без этой функции механизм «Дополнительные отчеты и обработки» откажется регистрировать файл.
Функция СведенияОВнешнейОбработке() Экспорт
ПараметрыРегистрации = Новый Структура;
ПараметрыРегистрации.Вставить("Вид", "ДополнительнаяОбработка");
ПараметрыРегистрации.Вставить("Версия", "1.0");
ПараметрыРегистрации.Вставить("БезопасныйРежим", Истина);
ПараметрыРегистрации.Вставить("Информация", "Загрузка номенклатуры из файла");
Команды = Новый ТаблицаЗначений;
Команды.Колонки.Добавить("Представление");
Команды.Колонки.Добавить("Идентификатор");
Команды.Колонки.Добавить("Использование");
Команды.Колонки.Добавить("ПоказыватьОповещение");
Команда = Команды.Добавить();
Команда.Представление = "Загрузка номенклатуры";
Команда.Идентификатор = "ЗагрузкаНоменклатуры";
Команда.Использование = "ОткрытиеФормы";
Команда.ПоказыватьОповещение = Ложь;
ПараметрыРегистрации.Вставить("Команды", Команды);
Возврат ПараметрыРегистрации;
КонецФункции
Подключение обработки к типовой конфигурации
Откройте базу в режиме 1С:Предприятие под пользователем с правами администратора. Перейдите в «Администрирование → Печатные формы, отчеты и обработки» и включите флажок «Дополнительные отчеты и обработки», если он ещё не установлен. Затем перейдите по появившейся ссылке «Дополнительные отчеты и обработки».
В открывшемся списке нажмите «Добавить из файла» и выберите ваш .epf-файл. Программа прочитает функцию СведенияОВнешнейОбработке() и покажет карточку регистрации: вид, версию, размещение в разделах интерфейса. Укажите, в каких разделах обработка будет видна, и нажмите «Записать и закрыть».
После регистрации обработка появится у пользователей в выбранных разделах через «Дополнительные обработки». Проверьте запуск под учётной записью обычного пользователя, а не только администратора: у пользователя должны быть права на объекты, к которым обращается код обработки, иначе получите ошибку доступа.
Отладка и проверка результата
Перед передачей обработки пользователям прогоните её в отладчике. Откройте обработку в конфигураторе, запустите отладку (F5), откройте файл обработки в режиме предприятия и поставьте точки останова в ключевых местах кода. Так вы увидите значения переменных и поймаете ошибки логики, которые не выявляет синтаксическая проверка.
Проверьте обработку на граничных случаях: пустой период, незаполненные реквизиты, файл большого объёма, отсутствие данных по запросу. Каждая такая ситуация должна завершаться понятным сообщением пользователю, а не падением с технической ошибкой платформы. Используйте конструкцию Попытка ... Исключение ... КонецПопытки вокруг потенциально сбойных операций с выводом текста ошибки через ОписаниеОшибки().
Для обработок, меняющих данные, добавьте режим «тестового прогона»: флажок, при котором код считает и показывает, что будет изменено, но не выполняет запись. Это стандартная практика, которая защищает и от ошибок в коде, и от неверно заданных пользователем параметров.
Как проверить результат
Форма обработки открывается без ошибок
Ошибка компиляции или «объект не обнаружен»
Карточка заполнена, вид и команды определены
Сообщение о невозможности загрузить сведения
Обработка выполняется и выдаёт результат
Ошибка доступа или пустой результат
Частые ошибки при создании внешних обработок
Самая распространённая проблема — отказ регистрации в типовой конфигурации с сообщением о невозможности получить сведения. Причина почти всегда в отсутствии или ошибке функции СведенияОВнешнейОбработке(): она должна быть экспортной, располагаться в модуле объекта и возвращать структуру с корректным видом обработки из допустимого списка.
Вторая группа ошибок связана с клиент-серверным взаимодействием: вызов серверных методов из клиентского контекста, передача несериализуемых типов между клиентом и сервером, обращение к модальным диалогам в режиме отказа от модальности. Платформа сообщает об этом на этапе компиляции модуля, поэтому всегда выполняйте проверку синтаксиса перед сохранением.
Третья типичная ошибка — жёсткая привязка к конкретной конфигурации без проверок. Если обработка обращается к документу, которого нет в базе, она упадёт. Перед обращением к метаданным используйте проверку Метаданные.НайтиПоПолномуИмени("Документ.ЗаказКлиента") — это сделает обработку переносимой между конфигурациями.
Внешняя обработка или расширение конфигурации
Внешняя обработка — не единственный способ добавить функциональность без изменения конфигурации. Альтернатива — расширение конфигурации (.cfe), которое встраивается в базу и может изменять формы, модули и роли существующих объектов. Выбор зависит от задачи.
Обработка предпочтительнее, когда нужен отдельный инструмент, запускаемый по требованию: загрузка данных, пакетная операция, специализированный отчёт, печатная форма. Расширение нужно, когда требуется изменить поведение типовых объектов: добавить реквизит на форму документа, переопределить обработчик проведения, доработать типовой отчёт.
Сравнение вариантов
Подходит для отдельных инструментов и печатных форм. Не может менять типовые объекты и формы, запускается только вручную или по команде
Подходит для доработки типовых форм, модулей и ролей. Требует контроля совместимости при обновлении конфигурации
Подходит для отчётов на СКД без сложного интерфейса. Регистрируется в БСП аналогично обработке
Что важно запомнить
Внешняя обработка создаётся в конфигураторе за несколько шагов: новый файл, форма, код в модуле объекта. Для типовых конфигураций обязательна экспортная функция СведенияОВнешнейОбработке и регистрация через «Дополнительные отчеты и обработки». Тестируйте изменяющие данные обработки только на копии базы и проверяйте работу под правами обычного пользователя.
Частые вопросы
Можно ли создать внешнюю обработку без конфигуратора?
Нет, полноценная разработка ведётся только в конфигураторе (или в EDT). В режиме 1С:Предприятие обработку можно открывать и запускать, но не редактировать. Для обучения подойдёт учебная версия платформы, которая распространяется бесплатно.
Почему обработка открывается через «Файл → Открыть», но не регистрируется в дополнительных обработках?
Регистрация требует экспортной функции СведенияОВнешнейОбработке() в модуле объекта с корректной структурой возврата. Проверьте, что функция экспортная, вид указан из допустимого списка («ДополнительнаяОбработка», «ДополнительныйОтчет», «ЗаполнениеОбъекта», «ПечатнаяФорма» и др.), а таблица команд содержит обязательные колонки.
Чем внешняя обработка отличается от внешнего отчёта?
Технически это разные типы файлов: .epf и .erf. Отчёт строится на системе компоновки данных и ориентирован на вывод табличного результата, обработка — на выполнение действий и произвольный интерфейс. Подключаются оба типа через один механизм «Дополнительные отчеты и обработки».
Будет ли работать обработка после обновления конфигурации?
Да, если она обращается только к объектам, которые сохранились после обновления, и использует стандартный программный интерфейс БСП. Риски возникают, когда обработка завязана на переименованные реквизиты или устаревшие функции БСП — после каждого крупного обновления прогоняйте обработку на тестовой копии.
Как передать обработку пользователю другой базы?
Достаточно передать файл .epf — он самодостаточен. Получатель либо открывает его через «Файл → Открыть», либо регистрирует в своей базе через дополнительные обработки. Учтите, что обработка должна соответствовать конфигурации получателя: обращения к объектам, которых у него нет, вызовут ошибку.
Как ограничить доступ к обработке для части пользователей?
В карточке дополнительной обработки в типовой конфигурации доступна настройка быстрого доступа: можно указать, каким пользователям или группам команда видна в разделах. Дополнительно внутри кода проверяйте роли через РольДоступна() или Пользователи.ЭтоПолноправныйПользователь() из БСП.