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

Справочники и Данные · 11 мин

Как очистить реквизит справочника в 1С

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

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

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

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

Что проверить перед очисткой реквизита

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

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

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

Реквизит используется в документахВысокий риск

Проверьте, не нарушится ли заполнение новых документов по этим данным

Реквизит участвует в обменеЗначение вернётся

Очистка бессмысленна, пока источник в другой базе не исправлен

Включено версионированиеМожно откатить

Предыдущие значения восстановимы из истории версий

Реквизит служебныйТолько через код

Стандартная групповая обработка может не показать такие поля

Резервное копирование перед массовыми изменениями

Для файловой базы достаточно скопировать файл 1Cv8.1CD при остановленной работе пользователей или выполнить выгрузку через конфигуратор: «Администрирование» → «Выгрузить информационную базу». Файл .dt позволит восстановить базу целиком.

Если полная копия невозможна из-за размера базы, выгрузите хотя бы сам справочник. Это можно сделать обработкой «Выгрузка и загрузка данных XML» (она входит в стандартные поставки многих конфигураций) или простым отчётом: выведите список элементов с кодом и значением реквизита в табличный документ и сохраните его в Excel. Такая таблица позволит восстановить значения вручную или загрузкой.

Способ 1. Ручная очистка в форме элемента

Для единичных исправлений откройте элемент справочника, очистите поле (клавиша Delete или очистка через контекстное меню поля) и запишите элемент. Это самый безопасный способ: все проверки заполнения и подписки на события отработают штатно, как при обычном редактировании.

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

Способ 2. Групповое изменение реквизитов

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

Порядок действий в групповом изменении реквизитов
  1. 1
    Откройте обработку и выберите нужный справочник
  2. 2
    Настройте отбор: добавьте условие, чтобы затронуть только нужные элементы (например, только помеченные на удаление или определённую группу)
  3. 3
    В списке реквизитов найдите целевой и установите ему пустое значение (оставьте поле незаполненным или выберите вариант очистки)
  4. 4
    Нажмите «Изменить реквизиты» и дождитесь завершения
  5. 5
    Проверьте результат на нескольких элементах из выборки

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

Обработка записывает каждый объект штатно, с отработкой подписок на события. На больших объёмах (десятки тысяч элементов) это занимает заметное время и создаёт нагрузку на базу. В клиент-серверном варианте массовое изменение лучше выполнять в нерабочие часы.

Способ 3. Очистка программным кодом

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

bsl
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ Ссылка ИЗ Справочник.Контрагенты ГДЕ НЕ Ссылка.ЭтоГруппа";
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
    Объект = Выборка.Ссылка.ПолучитьОбъект();
    Объект.Email = "";
    Объект.Записать();
КонецЦикла;

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

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

Сравнение способов очистки

Вручную

Подходит для единичных элементов; безопасно, но неприемлемо медленно при сотнях записей

Групповое изменение реквизитов

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

Программная обработка

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

Особые случаи: табличные части, дополнительные реквизиты, история

Дополнительные реквизиты и сведения

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

Реквизиты с историей и периодические данные

В некоторых конфигурациях значения реквизитов хранятся в периодических регистрах сведений (например, адреса и телефоны в КИ, курсы валют). Очистка поля в карточке фактически создаёт новую запись регистра. Массовую очистку таких данных выполняют через обработку записей регистра, а не через объект справочника.

Проверка результата и восстановление данных

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

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

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

Значение реквизита в карточках
Норма

Поле пустое у всех целевых элементов

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

Часть элементов не обработана — проверьте отбор

Заполненность у нетронутых элементов
Норма

Элементы вне отбора сохранили значения

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

Очистились лишние элементы — восстанавливайте из копии

Работа отчётов и обменов
Норма

Отчёты строятся, обмен проходит без ошибок

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

Ошибки обращения к пустому реквизиту — нужна доработка кода

Журнал регистрации
Норма

Записи об изменении соответствуют вашему сеансу

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

Параллельные изменения других пользователей перезаписали данные

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

Типичные ошибки
01
Очистка без отбора — задеты все элементы справочника, включая те, что должны были сохранить значения
02
Забыта база-корреспондент обмена — при следующей синхронизации значения вернулись обратно
03
Запись с ОбменДанными.Загрузка = Истина без анализа подписок — связанные регистры остались в старом состоянии
04
Отсутствие копии — после ошибочной очистки данные потеряны безвозвратно
05
Очистка обязательного реквизита — новые документы и проведение старых начали выдавать ошибки заполнения

Часто задаваемые вопросы

Можно ли очистить реквизит у помеченных на удаление элементов?

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

Почему групповое изменение реквизитов не показывает нужный реквизит?

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

Как очистить реквизит только у элементов одной группы справочника?

В обработке группового изменения добавьте отбор «Родитель равно [нужная группа]» или «Родитель в иерархии», если нужны и вложенные подгруппы. Программно в запросе используйте условие «Ссылка В ИЕРАРХИИ (&Группа)».

Влияет ли очистка реквизита на уже проведённые документы?

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

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

Варианты ограничены: версии объектов (если включено версионирование в разделе «Администрирование» → «Общие настройки»), данные из базы-корреспондента обмена, резервные копии СУБД для клиент-серверного варианта. Если ничего из этого нет, значения придётся восстанавливать вручную по первичным источникам.

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

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

Итог

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

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