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

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

Как создать обработку в 1С: пошаговая инструкция

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

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

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

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

Выберите тип обработки под задачу

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

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

Маршрут решения

Как выбрать действие

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

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

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

Задайте имя обработки латиницей без пробелов — например, ЗагрузкаНоменклатурыИзExcel. Синоним заполните на русском языке: именно его увидят пользователи в списке дополнительных обработок. Сразу сохраните файл через «Файл — Сохранить как», указав понятное имя и папку проекта.

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

Настройте форму и разместите элементы

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

Добавьте реквизиты формы для входных данных: например, строку ПутьКФайлу для загрузки или ссылку Организация для отбора. Перетащите реквизит из правой панели в дерево элементов — на форме появится поле ввода. Для выбора файла в свойствах поля установите кнопку выбора и обработайте событие НачалоВыбора с диалогом ДиалогВыбораФайла.

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

Напишите код в модуле формы

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

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

bsl
&НаКлиенте
Процедура ВыполнитьЗагрузку(Команда)
	Если ПустаяСтрока(ПутьКФайлу) Тогда
		ПоказатьПредупреждение(, "Укажите файл для загрузки");
		Возврат;
	КонецЕсли;
	КоличествоЗаписей = ЗагрузитьНаСервере(ПутьКФайлу);
	ПоказатьПредупреждение(, "Загружено записей: " + КоличествоЗаписей);
КонецПроцедуры

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

Протестируйте обработку перед запуском

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

Для поиска ошибок используйте отладчик конфигуратора: запустите отладку (F5), откройте обработку в режиме предприятия, поставьте точку останова в обработчике кнопки и пройдите код по шагам (F10/F11), наблюдая значения переменных в табло. Это быстрее, чем расставлять сообщения по коду.

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

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

Запуск с пустыми полями
Норма

Понятное предупреждение пользователю

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

Ошибка платформы или аварийное закрытие формы

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

Данные обновляются, дублей нет

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

Создаются повторные элементы справочников или документов

Ошибка в середине загрузки
Норма

Транзакция откатилась, база не изменилась

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

Часть данных записана, часть потеряна

Подключите обработку к типовой конфигурации

В типовых конфигурациях на Библиотеке стандартных подсистем (УТ, КА, ERP, Бухгалтерия) внешние обработки подключаются через раздел «Администрирование — Печатные формы, отчеты и обработки — Дополнительные отчеты и обработки». Предварительно включите сам механизм флажком «Дополнительные отчеты и обработки» в том же разделе.

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

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

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

Частые ошибки и ограничения

Самая распространённая проблема новичков — путаница между клиентским и серверным контекстом. Признак: обработка работает в файловой базе на толстом клиенте, но падает в тонком клиенте или на сервере. Лечится явным разделением процедур по директивам и передачей данных между ними через параметры и временное хранилище.

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

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

Итог

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

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

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

Нужно ли снимать конфигурацию с поддержки, чтобы добавить обработку?

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

Чем обработка отличается от расширения конфигурации?

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

Почему обработка работает на одном компьютере и не работает на другом?

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

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

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

Как передать обработку коллеге на другую базу?

Достаточно отправить файл .epf — обработка не привязана к конкретной базе. Но учтите, что код должен обращаться к объектам, существующим в конфигурации коллеги: если обработка написана под «Управление торговлей», в «Бухгалтерии» она не запустится из-за отсутствия нужных справочников и документов.

Что делать, если обработка уже испортила данные в базе?

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