К статье
Практический материал

Разработка и Конфигурация · 12 мин

Как сделать свою обработку в 1С: полное руководство

Как создать внешнюю обработку в 1С с нуля: формы, модули, код на встроенном языке, подключение к конфигурации, тестирование и типичные ошибки новичков.

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

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

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

Когда нужна обработка, а когда — доработка конфигурации

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

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

Сравнение вариантов автоматизации

Внешняя обработка (.epf)

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

Расширение конфигурации

Нужно, когда меняется поведение типовых объектов: формы, проведение, печатные формы. Сохраняет поддержку, но требует аккуратности при обновлениях.

Доработка конфигурации

Крайний вариант для глубоких изменений логики. Усложняет обновления и требует опыта сопровождения.

Создание файла обработки в конфигураторе

Откройте конфигуратор той базы, для которой пишется обработка. Выберите меню «Файл → Новый» (или Ctrl+N), в списке типов объектов укажите «Внешняя обработка» и подтвердите. Откроется окно нового объекта с пустой структурой: у обработки есть модуль объекта, формы, макеты и реквизиты.

Сразу задайте имя и синоним: имя используется в коде (латиница, без пробелов), синоним увидит пользователь. Сохраните файл через «Файл → Сохранить как» в рабочую папку — получится файл с расширением .epf. Сохраняйтесь регулярно: конфигуратор не делает автосохранение внешних файлов, и при сбое несохранённый код теряется.

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

Порядок создания заготовки
  1. 1
    Откройте конфигуратор нужной базы (лучше копии, а не рабочей)
  2. 2
    Файл → Новый → Внешняя обработка
  3. 3
    Задайте имя латиницей и понятный синоним
  4. 4
    Добавьте основную форму и назначьте её формой по умолчанию
  5. 5
    Сохраните файл как .epf в рабочую папку
  6. 6
    Откройте обработку в режиме предприятия и убедитесь, что форма отображается

Проектирование формы и интерфейса

Форма — это то, что видит пользователь. В дереве обработки нажмите «Добавить форму», дайте ей имя и установите флажок «Назначить формой по умолчанию». Откроется редактор формы: слева реквизиты и команды, справа дерево элементов.

Типовой минимум для рабочей обработки: реквизиты для ввода параметров (например, «Организация», «ПериодНачало», «ПериодКонец», «ПутьКФайлу»), команда «Выполнить» и кнопка, связанная с этой командой. Для реквизита-ссылки выберите тип через конструктор: например, «СправочникСсылка.Организации» — тогда поле получит стандартный выбор из справочника.

Не перегружайте форму: если параметров больше десятка, группируйте их по страницам или сворачиваемым группам. Для табличных данных (например, загруженных строк из Excel) добавьте реквизит типа «ТаблицаЗначений» с колонками и выведите его на форму как таблицу — пользователь сможет проверить данные до записи в базу.

Написание кода: клиент, сервер и модуль объекта

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

Классическая ошибка новичка — писать всю логику в клиентской процедуре. Работа с базой (запросы, запись объектов) возможна только на сервере, поэтому схема такая: клиентская процедура собирает параметры и вызывает серверную, серверная выполняет работу и возвращает результат, клиентская показывает его пользователю. Ниже минимальный пример серверной процедуры записи элемента справочника:

&НаСервере

Процедура СоздатьНоменклатуруНаСервере()

НовыйЭлемент = Справочники.Номенклатура.СоздатьЭлемент();

НовыйЭлемент.Наименование = Наименование;

НовыйЭлемент.Записать();

КонецПроцедуры

При записи нескольких объектов оборачивайте операцию в транзакцию (НачатьТранзакцию / ЗафиксироватьТранзакцию / ОтменитьТранзакцию): если на сотой записи произойдёт ошибка, база не останется в полузаписанном состоянии. Для массовых операций выводите прогресс через ДлительныеОперации или хотя бы сообщайте пользователю счётчик обработанных строк.

Запуск и подключение к базе пользователей

Самый простой способ запуска — в режиме 1С:Предприятие открыть «Файл → Открыть» и выбрать файл .epf. Это подходит для разработчика и разовых операций, но неудобно для обычных пользователей: им придётся каждый раз искать файл.

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

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

bsl
Функция СведенияОВнешнейОбработке() Экспорт
    Параметры = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке();
    Параметры.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительнаяОбработка();
    Параметры.Версия = "1.0";
    Возврат Параметры;
КонецФункции

Проверка результата и отладка

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

Проверяйте результат не только по сообщению «Готово», но и по данным: откройте созданные документы, сверьте количество записей с исходным файлом, проверьте движения по регистрам. Для обработок заполнения полезно сначала выполнять «холостой прогон» — режим, в котором обработка только показывает, что она собирается записать, без фактической записи.

Контрольные точки

Как проверить результат

Количество записей
Норма

Совпадает с количеством строк в исходных данных

Тревожный признак

Записей меньше или больше — часть строк пропущена или задублирована

Проведение документов
Норма

Все созданные документы проведены без ошибок

Тревожный признак

Документы записаны, но не проведены — не хватило реквизитов

Повторный запуск
Норма

Обработка распознаёт уже записанные данные и не создаёт дублей

Тревожный признак

Каждый запуск создаёт новые объекты — нет поиска существующих

Права пользователя
Норма

Обработка работает под учётной записью целевого пользователя

Тревожный признак

Работает только у администратора — не проверены права на объекты

Типичные ошибки и ограничения

Чаще всего обработки ломаются не из-за сложной логики, а из-за мелочей: несовпадения имён реквизитов в разных конфигурациях, отсутствия проверки на пустые значения, игнорирования того, что у пользователя нет прав на нужный справочник. Обработка, написанная под Бухгалтерию, почти наверняка не заработает в ERP без адаптации — состав объектов и реквизитов различается.

Второй класс проблем — производительность. Запрос в цикле по тысяче строк превращает секундную операцию в многочасовую: выносите выборку данных в один запрос и обходите результат. Третий — отсутствие защиты от повторного запуска. Любая обработка записи должна сначала искать существующий объект (по коду, наименованию, GUID или комбинации полей) и обновлять его, а не создавать дубликат.

Типичные ошибки
01
Отладка на рабочей базе — массовая запись без резервной копии приводит к потере данных без возможности отката
02
Вся логика в клиентской процедуре — обращение к базе с клиента вызывает ошибку вызова сервера или не работает вовсе
03
Запрос внутри цикла — обработка тысячи строк занимает часы вместо секунд
04
Нет поиска существующих объектов — повторный запуск создаёт дубли справочников и документов
05
Жёсткая привязка к реквизитам одной конфигурации — обработка не переносится между базами и ломается после обновления
06
Отсутствие транзакции при пакетной записи — при сбое база остаётся в несогласованном состоянии

FAQ: частые вопросы о создании обработок

Можно ли написать обработку без знания программирования?

Простейшую — да, если использовать готовые шаблоны и конструкторы: например, конструктор запроса собирает текст запроса визуально. Но для записи данных, обработки ошибок и транзакций базовое понимание встроенного языка всё же потребуется. Начните с обработок «только чтение» — выгрузок и отчётов — они безопасны для данных.

Чем обработка отличается от внешнего отчёта?

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

Почему обработка не подключается в «Дополнительные отчеты и обработки»?

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

Как защитить обработку от запуска не теми пользователями?

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

Обработка работает в файловой базе, но не в клиент-серверной. Почему?

Типичные причины — использование локальных путей к файлам (на сервере другой диск и права), модальные вызовы, запрещённые в веб-клиенте, и код, рассчитанный на контекст клиента. Проверяйте файловые операции через начало транзакции чтения файла на клиенте с передачей на сервер и избегайте синхронных модальных методов.

Можно ли обновлять обработку у всех пользователей сразу?

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

Итог

Что важно запомнить

Обработка создаётся в конфигураторе как внешний объект .epf с формой и кодом, логика записи выполняется на сервере и в транзакции, а проверяется результат всегда на копии базы. Для постоянного использования подключайте обработку через «Дополнительные отчеты и обработки» и защищайте данные поиском дублей и контролем прав.