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

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

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

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

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

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

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

Очистка реквизита в форме объекта

Самый простой случай — нужно очистить значение у одного элемента справочника или одного документа. Откройте объект, установите курсор в поле реквизита и удалите содержимое клавишей Delete или Backspace, затем запишите объект кнопкой «Записать» или «Записать и закрыть».

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

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

Массовая очистка через обработку «Групповое изменение реквизитов»

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

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

Порядок действий в групповой обработке
  1. 1
    Откройте «Администрирование» → «Обслуживание» → «Групповое изменение реквизитов»
  2. 2
    Выберите вид объектов и задайте отбор по условиям
  3. 3
    Проверьте количество отобранных элементов — оно показывается в обработке
  4. 4
    Найдите нужный реквизит и установите пустое значение
  5. 5
    Запустите изменение и дождитесь отчёта о результате
  6. 6
    Откройте несколько элементов и убедитесь, что реквизит очищен

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

Очистка реквизита табличной части

Групповая обработка умеет работать и с реквизитами табличных частей: в списке реквизитов они отображаются отдельной группой. Очистка применится ко всем строкам табличной части каждого отобранного объекта. Например, можно очистить колонку «Серия» в табличной части «Товары» у всех документов поступления за период.

Если нужно очистить реквизит не во всех строках, а только в тех, что удовлетворяют условию, штатная обработка не справится — потребуется код. Также помните, что изменение документов через обработку записывает их без проведения; если документ проведён и реквизит влияет на движения, понадобится перепроведение.

Очистка реквизита кодом на встроенном языке

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

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

Для реквизитов разных типов пустое значение задаётся по-разному: строка — пустая строка "", число — 0, дата — '00010101', ссылочный тип — Неопределено или пустая ссылка конкретного типа. Присваивать значение нужно строго соответствующего типа, иначе получите ошибку при записи.

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

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

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

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

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

Проверка результата и типичные ошибки

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

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

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

Значение реквизита в форме объекта
Норма

Поле пустое и объект записывается без ошибок

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

Значение вернулось после записи — есть автозаполнение

Запрос по базе с условием «реквизит заполнен»
Норма

Выборка пустая

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

Остались элементы со старым значением — отбор был неполным

Движения проведённых документов
Норма

Движения соответствуют очищенным данным

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

Движения содержат старые значения — требуется перепроведение

Типичные ошибки
01
Очистка без резервной копии — при ошибочном отборе данные теряются безвозвратно
02
Отбор «все элементы» вместо нужной группы — очищаются лишние объекты
03
Очистка реквизита в проведённых документах без перепроведения — движения расходятся с данными документа
04
Присвоение значения неподходящего типа в коде — ошибка записи или неявное преобразование
05
Игнорирование обменов данными — очищенный реквизит возвращается после синхронизации

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

Итог

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

Единичный реквизит очищайте в форме объекта, массово — обработкой «Групповое изменение реквизитов», сложные условия — кодом. Перед массовой очисткой делайте копию базы и проверяйте отбор. После — контролируйте результат запросом и не забывайте про перепроведение документов и обмены данными.

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

Можно ли отменить групповое изменение реквизитов?

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

Почему поле нельзя очистить — программа требует заполнения?

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

Как очистить реквизит сразу у нескольких видов объектов?

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

Чем очистка реквизита отличается от удаления реквизита?

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

Очистил реквизит, а после обмена значения вернулись. Что делать?

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

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

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