Разработка и Конфигурация · 12 мин
Как создавать обработки в 1С
Пошаговая инструкция по созданию внешних обработок в 1С: структура метаданных, формы, модули, типовые задачи, тестирование и типичные ошибки разработчика.
Обработка в 1С — это объект, который выполняет действия над данными: загружает файлы, массово изменяет реквизиты, формирует произвольные отчёты, запускает сервисные операции. В отличие от документов и справочников, обработка сама по себе не хранит данные в базе — она инструмент, который эти данные обрабатывает.
Обработки бывают двух видов: встроенные в конфигурацию (создаются в конфигураторе как объект метаданных) и внешние (файл с расширением .epf, который открывается через «Файл → Открыть» или подключается через механизм дополнительных отчётов и обработок). Для разовых задач и доработок без изменения типовой конфигурации чаще используют внешние обработки — они не требуют снятия конфигурации с поддержки.
Ниже разобран полный цикл: от создания пустой обработки до подключения её в типовую конфигурацию, с примерами кода, проверкой результата и разбором типичных ошибок.
Когда нужна обработка, а когда другой объект
Прежде чем создавать обработку, стоит убедиться, что задача не решается штатными средствами. Групповое изменение реквизитов, универсальный отчёт, поиск и удаление дублей уже есть в большинстве типовых конфигураций в разделе «Администрирование». Обработку пишут, когда логика нестандартная: загрузка данных из файла специфичного формата, интеграция с внешним сервисом, массовое создание документов по особым правилам.
Если результат работы должен храниться и выводиться пользователю в виде таблицы с группировками — правильнее создать отчёт на СКД, а не обработку. Если действие выполняется регулярно по расписанию — логику выносят в регламентное задание, а обработку оставляют как интерфейс ручного запуска и отладки.
Как выбрать действие
Создание внешней обработки: первые шаги
Откройте конфигуратор (не обязательно с загруженной конфигурацией — внешнюю обработку можно создать и в пустой базе). Выполните команду «Файл → Новый» и в списке выберите «Внешняя обработка». Появится окно редактирования объекта с закладками: «Основные», «Данные», «Формы», «Макеты», «Подсистемы».
На закладке «Основные» задайте имя — оно должно быть корректным идентификатором без пробелов (например, ЗагрузкаПрайсаПоставщика). Синоним увидит пользователь, имя используется в коде. Сразу сохраните файл: «Файл → Сохранить как», укажите каталог и имя. Файл получит расширение .epf.
Для обработки, работающей в управляемом приложении, убедитесь, что в свойствах установлен признак «Использовать в управляемом приложении». Если код должен выполняться на сервере (а почти вся работа с данными выполняется именно там), это нужно учесть при проектировании формы и модулей.
- 1Откройте конфигуратор и выполните «Файл → Новый → Внешняя обработка»
- 2Задайте имя и синоним на закладке «Основные»
- 3Добавьте основную форму на закладке «Формы»
- 4Разместите на форме реквизиты, команды и элементы
- 5Напишите код в модуле формы и (при необходимости) в модуле объекта
- 6Сохраните файл .epf и откройте его в режиме 1С:Предприятие
- 7Проверьте работу на копии базы с тестовыми данными
Структура обработки: формы, реквизиты, модули
Форма — это интерфейс обработки. Создаётся на закладке «Формы» кнопкой «Добавить»; первая форма обычно назначается основной. На форму перетаскиваются реквизиты (параметры, которые вводит пользователь: период, организация, путь к файлу) и команды (кнопки действий: «Загрузить», «Выполнить», «Сформировать»).
Код распределяется по трём местам. Модуль формы содержит обработчики событий формы и команд — здесь логика взаимодействия с пользователем. Модуль объекта содержит процедуры и функции, работающие с данными обработки, доступные при программном создании объекта. Макеты (табличные документы, схемы СКД, двоичные данные) хранят шаблоны печатных форм и вложенные файлы.
Ключевой момент для управляемых форм — разделение клиентского и серверного контекста. Обращение к базе данных (запросы, создание документов) возможно только в серверных процедурах, помеченных директивой &НаСервере или &НаСервереБезКонтекста. Работа с файловой системой клиентского компьютера — только на клиенте, причём в тонком и веб-клиенте файловые операции требуют расширения работы с файлами.
Пример: обработка массового изменения реквизита
Типовая учебная задача — обработка, которая у выбранных элементов справочника меняет значение реквизита. На форме разместите реквизиты: «Организация» (или другой отбор) и «НовоеЗначение». Добавьте команду «Выполнить» с обработчиком на клиенте, который вызывает серверную процедуру.
Серверная часть выбирает данные запросом и изменяет их в транзакции. Транзакция обязательна: если при обработке тысячи элементов произойдёт ошибка на середине, база не останется в полуизменённом состоянии.
&НаСервереБезКонтекста
Процедура ВыполнитьНаСервере(Организация, НовоеЗначение)
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ Ссылка ИЗ Справочник.Номенклатура
|ГДЕ Организация = &Организация И НЕ ПометкаУдаления";
Запрос.УстановитьПараметр("Организация", Организация);
Выборка = Запрос.Выполнить().Выбрать();
НачатьТранзакцию();
Попытка
Пока Выборка.Следующий() Цикл
Объект = Выборка.Ссылка.ПолучитьОбъект();
Объект.СтавкаНДС = НовоеЗначение;
Объект.Записать();
КонецЦикла;
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
ВызватьИсключение ОписаниеОшибки();
КонецПопытки;
КонецПроцедуры
Обратите внимание на приём Выборка.Ссылка.ПолучитьОбъект(): изменять элементы через объект, а не через запрос — запросы в 1С только читают данные. Для очень больших объёмов стоит добавить индикацию прогресса и обрабатывать данные порциями, чтобы не держать длинную транзакцию и не блокировать работу других пользователей.
Подключение обработки к типовой конфигурации
Открыть обработку через «Файл → Открыть» может любой пользователь с правами, но удобнее зарегистрировать её в справочнике «Дополнительные отчеты и обработки» (раздел «Администрирование → Печатные формы, отчеты и обработки»). Тогда обработка появится в интерфейсе, получит настройки прав доступа и сможет выполняться по расписанию.
Для регистрации в модуле обработки (в модуле объекта или формы — в зависимости от версии БСП) должны быть экспортные функции: СведенияОВнешнейОбработке(), возвращающая структуру с видом, версией, безопасным режимом и таблицей команд. Вид обработки определяет, где она появится: «ДополнительнаяОбработка» — в общем списке, «ЗаполнениеОбъекта» — в кнопке «Заполнение» документов и справочников, «СозданиеСвязанныхОбъектов» — в меню «Создать на основании».
При публикации обращайте внимание на параметр «Безопасный режим»: в нём обработке запрещены операции с файловой системой сервера и внешние компоненты. Если обработка читает файлы с диска, безопасный режим нужно отключить, но делать это осознанно — код внешних обработок потенциально опасен, поэтому загружать в базу стоит только обработки из доверенных источников.
Перед загрузкой чужой обработки в рабочую базу откройте её в конфигураторе и просмотрите код модуля: обработка с правами администратора может выполнить любые действия, включая выгрузку данных наружу. Это стандартная мера гигиены, а не избыточная подозрительность.
Тестирование и проверка результата
Отладка внешней обработки выполняется стандартно: откройте обработку в конфигураторе, запустите отладку (F5) — конфигуратор запустит предприятие, откройте в нём обработку файлом. Точки останова работают как для встроенных объектов. Если обработка подключена через дополнительные отчёты, отлаживайте её как файл — логика идентична.
Проверяйте обработку в три этапа: на пустом наборе данных (ничего не найдено — обработка не должна падать), на единичной записи (результат соответствует ожиданию) и на объёмной выборке (нет ли падения производительности и блокировок). Для записывающих обработок добавьте режим «только показать, что будет изменено» — флаг «Тестовый режим», при котором транзакция отменяется, а пользователь видит список затронутых объектов.
Как проверить результат
Сообщение «данные не найдены», ошибок нет
Исключение или необработанная ошибка
В списке изменений ровно один ожидаемый объект
Лишние объекты или неверные значения
Обработка отрабатывает без дублей и конфликтов
Создаются дубли документов или записей
Обработка доступна и работает под целевой ролью
Нарушение прав доступа при выполнении
Типичные ошибки и ограничения
Самая частая ошибка новичков — попытка обратиться к базе данных из клиентской процедуры управляемой формы. Платформа выдаст ошибку о недоступности контекста. Решение — перенести логику в серверную процедуру и передавать туда только примитивные параметры и ссылки.
Вторая группа ошибок связана с объёмами. Загрузка файла целиком в память, запрос без отборов по миллионной таблице, запись объектов в цикле без транзакции — всё это работает на демо-базе и умирает на рабочей. Проектируйте обработку сразу под реальный объём: порционная обработка, индикация прогресса, ограничение выборки.
Третья группа — совместимость. Обработка, написанная под конкретную типовую конфигурацию, обращается к конкретным объектам метаданных; на другой конфигурации или после обновления релиза она перестанет компилироваться. По возможности проверяйте наличие объектов через Метаданные.НайтиПоПолномуИмени() и выносите конфигурационно-зависимый код в отдельные процедуры.
Что важно запомнить
Внешняя обработка создаётся в конфигураторе и сохраняется как .epf: форма для интерфейса, серверные процедуры для работы с данными, транзакции для целостности. В типовую базу обработку подключают через «Дополнительные отчеты и обработки», а любые записывающие операции сначала проверяют на копии базы в тестовом режиме.
Частые вопросы
Чем внешняя обработка отличается от встроенной в конфигурацию?
Встроенная обработка — объект метаданных, она изменяет конфигурацию и может потребовать снятия её с поддержки, что усложняет обновления. Внешняя (.epf) хранится отдельным файлом, подключается без изменения конфигурации и легко переносится между базами. Функционально они равнозначны.
Можно ли создать обработку без формы?
Да. Обработка без формы запускается программно — из другого кода или через регламентное задание. Для ручного запуска пользователем форма всё же нужна, иначе открыть обработку в режиме предприятия будет нечего.
Как открыть внешнюю обработку в 1С:Предприятии?
Через меню «Файл → Открыть» и выбор файла .epf. В типовых конфигурациях удобнее зарегистрировать обработку в справочнике «Дополнительные отчеты и обработки» — тогда она появится в штатном интерфейсе с настройкой прав.
Почему обработка работает у администратора и не работает у пользователя?
Обработка выполняется с правами запустившего её пользователя. Если у роли нет прав на чтение или изменение нужных объектов, возникнет ошибка доступа. Проверяйте обработку под той ролью, для которой она предназначена, либо выносите критичные операции в привилегированный режим осознанно.
Как защитить код внешней обработки от просмотра?
Надёжной защиты нет: файл .epf открывается конфигуратором, и код модуля доступен любому, у кого есть файл. Можно поставить пароль на модуль в конфигураторе, но это не считается стойкой защитой. Поэтому никогда не храните в коде пароли, ключи API и другие секреты — выносите их в настройки базы.
Можно ли выполнять обработку по расписанию?
Да, если она подключена через механизм дополнительных отчётов и обработок и содержит команду серверного вызова — в настройках такой обработки доступно расписание. Альтернатива — вынести логику в общий модуль конфигурации и запускать штатным регламентным заданием.