IT-КУБиК-Сервис • Форум 1С
Абстрактный тёмно-синий фон с мягкими геометрическими линиями и оранжевыми акцентами, создающий технологичную атмосферу

Агрегатор публикаций с Инфостарта по 1С:Предприятие — обработки, расширения, конфигурации, интеграции и администрирование. Сообщество специалистов 1С.

Массовое изменение реквизитов справочников через внешнюю обработку

В крупных базах 1С регулярно возникает задача привести в порядок реквизиты сотен или тысяч элементов справочников, не прибегая к ручной правке. Обработки, открывающие по одному элементу и сохраняющие изменения, занимают слишком много времени у администратора.

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

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

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

Зачем нужна отдельная обработка

Штатный механизм «Групповое изменение реквизитов» работает в пределах одного справочника и не поддерживает сложные условия отбора. Когда нужно связать изменения с данными других таблиц или выполнить вычисления, штатных средств не хватает.

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

Код хранится в системе контроля версий, проходит ревью и поставляется на тестовые стенды. Это снижает риск случайных правок и упрощает аудит изменений.

Сравнение подходов к групповому изменению

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

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

Подход Гибкость условий Снятие с поддержки Время запуска Аудит
Групповое изменение реквизитов низкая нет минуты ограниченный
Внешняя обработка .epf высокая нет минуты-часы настраиваемый
Изменение через конфигуратор максимальная да часы расширенный
Регламентное задание средняя нет автоматически зависит от реализации

Структура объекта метаданных

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

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

Список доступных справочников заполняется программно через метаданные. Это сокращает объём ручных настроек и снижает вероятность ошибок при выборе объекта.

Алгоритм перебора элементов

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

Полученную выборку обрабатывают порциями, передавая в метод «Записать()» только элементы, удовлетворяющие условиям. Между итерациями вставляют вызовы обработки ожидания, чтобы избежать блокировок.

При работе с подчинёнными справочниками учитывают иерархию и владельцев, иначе изменение может затронуть не те позиции.

Транзакции и контроль ошибок

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

При ошибке выполняют «ОтменитьТранзакцию()» и записывают подробности в журнал регистрации. Сценарий предусматривает прерывание обработки по команде администратора.

Перед записью проверяют заполненность обязательных полей и корректность ссылочных типов, чтобы исключить появление «битых» ссылок.

Интерфейс и параметры формы

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

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

Команды, изменяющие данные, доступны только пользователям с ролью администратора. Дополнительная проверка через «РольДоступна()» защищает от случайного запуска с недостаточными правами.

Отладка и тестирование

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

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

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

Практические рекомендации

Готовый набор советов помогает избежать типичных ошибок и ускорить внедрение обработки на реальных данных.

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