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

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

Как делать обработки в 1С: практическое руководство для разработчика

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

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

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

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

Виды обработок и когда какую выбирать

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

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

Сравнение вариантов

Встроенная обработка

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

Внешний файл .epf

Для разовых задач и типовых баз; запуск вручную, нет управления правами.

Дополнительная обработка БСП

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

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

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

Откройте конфигуратор, зайдите в меню «Конфигурация — Открыть конфигурацию». В дереве объектов найдите ветку «Обработки», нажмите правой кнопкой и выберите «Добавить». Задайте имя латиницей без пробелов, например ЗагрузкаПрайсовИзExcel, и понятный синоним — он будет виден пользователям.

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

Порядок создания обработки
  1. 1
    Откройте конфигуратор и дерево конфигурации
  2. 2
    Добавьте новый объект в ветке «Обработки», задайте имя и синоним
  3. 3
    Создайте основную форму и разместите на ней реквизиты и команды
  4. 4
    Напишите код обработчиков команд и серверных процедур
  5. 5
    Сохраните конфигурацию и протестируйте обработку на копии базы
  6. 6
    При необходимости выгрузите обработку во внешний файл .epf

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

Написание кода: структура и пример

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

Типичный скелет обработки массового изменения реквизита выглядит так:

&НаСервере

Процедура УстановитьЦенуНаСервере()

Запрос = Новый Запрос;

Запрос.Текст =

"ВЫБРАТЬ

| Номенклатура.Ссылка КАК Ссылка

|ИЗ

| Справочник.Номенклатура КАК Номенклатура

|ГДЕ

| НЕ Номенклатура.ПометкаУдаления";

Выборка = Запрос.Выполнить().Выбрать();

Пока Выборка.Следующий() Цикл

Объект = Выборка.Ссылка.ПолучитьОбъект();

// изменение реквизитов объекта

Объект.Записать();

КонецЦикла;

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

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

Типовые сценарии применения

Загрузка данных из табличных файлов

Частая задача — импорт данных из Excel или CSV: прайсы, остатки, контрагенты. Для чтения xlsx используют объект ТабличныйДокумент с методом Прочитать() либо COM-подключение к Excel (только на клиенте с установленным Office). CSV читают построчно через ЧтениеТекста с разбором разделителей.

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

Массовая обработка документов

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

Сервисные операции

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

Тестирование и проверка результата

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

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

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

Отбор данных
Норма

Запрос возвращает именно те объекты, что ожидались по условию

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

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

Запись объектов
Норма

Каждый объект записывается без ошибок, количество совпадает с выборкой

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

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

Права доступа
Норма

Обработка работает под целевым пользователем

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

Ошибки «Нарушение прав доступа» при запуске

Производительность
Норма

Обработка типового объёма завершается за приемлемое время

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

Обработка «висит» минутами, блокирует других пользователей

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

Подключение внешней обработки к базе

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

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

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

Как выбрать способ подключения

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

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

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

Типичные ошибки
01
Изменение объектов в цикле без проверки отбора — при пустом параметре обрабатывается вся таблица; всегда проверяйте параметры перед запуском
02
Клиент-серверные вызовы внутри цикла — каждая итерация идёт на сервер, обработка работает в десятки раз медленнее; выносите цикл в серверную процедуру
03
Отсутствие обработки исключений — первая же ошибка записи прерывает всю обработку; оборачивайте запись в Попытка/Исключение и собирайте протокол
04
Запуск на рабочей базе без копии — невозможность откатить массовые изменения
05
Игнорирование прав доступа — обработка работает у администратора и падает у рядового пользователя

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

Итог

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

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

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

Чем обработка отличается от отчёта в 1С?

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

Можно ли создать обработку без доступа к конфигуратору?

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

Почему обработка работает медленно на больших объёмах?

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

Как защитить код обработки от просмотра?

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

Что делать, если обработка изменила данные ошибочно?

Если резервная копия делалась перед запуском — восстановите базу из неё либо выгрузите затронутые объекты из копии. Без копии вариантов мало: можно попытаться написать обратную обработку, если старые значения где-то зафиксированы (например, в журнале регистрации видно, кто и что менял, но не прежние значения). Именно поэтому копия перед запуском — обязательное правило, а не рекомендация.

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

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