Администрирование · 11 мин
Как очистить дополнительные реквизиты в 1С
Как очистить дополнительные реквизиты в 1С: ручное удаление, групповая обработка, внешние обработки и код. Проверка результата, риски и частые ошибки.
Дополнительные реквизиты в 1С накапливаются со временем: внедрение добавляет десятки свойств к справочникам и документам, часть из них перестаёт использоваться, а значения остаются в базе мёртвым грузом. Они замедляют открытие форм, засоряют отчёты и мешают пользователям быстро находить нужные поля. Очистить их можно несколькими способами — от ручного удаления до программной обработки, и выбор зависит от объёма данных и от того, нужно ли убрать только значения или сами реквизиты целиком.
Прежде чем что-либо удалять, важно различать две задачи. Первая — очистить значения дополнительного реквизита у объектов (например, убрать заполненное свойство «Цвет» у всех товаров). Вторая — удалить сам реквизит из настройки, чтобы он исчез из форм и списков. Это разные операции с разными последствиями: значения хранятся в табличных частях объектов и регистрах сведений, а описание реквизита — в плане видов характеристик «Дополнительные реквизиты и сведения».
Любая массовая очистка в 1С — операция с необратимыми последствиями при отсутствии резервной копии. Поэтому порядок всегда одинаков: сначала архивная копия базы, затем тестовый прогон на копии или на небольшой выборке, и только потом полноценная обработка рабочей базы.
Где хранятся дополнительные реквизиты и их значения
В конфигурациях на управляемых формах (Управление торговлей, ERP, Комплексная автоматизация, УНФ и другие на БСП) механизм дополнительных реквизитов устроен единообразно. Сами описания реквизитов хранятся в плане видов характеристик «Дополнительные реквизиты и сведения», а наборы реквизитов привязаны к видам объектов — например, к виду номенклатуры или группе контрагентов.
Значения реквизитов записываются в табличную часть «Дополнительные реквизиты» конкретного объекта: у каждого товара, контрагента или документа свой набор строк со ссылками на свойство и значением. Дополнительные сведения (похожий, но отдельный механизм) хранятся в регистре сведений «Дополнительные сведения». Это важно, потому что очистка реквизитов и сведений выполняется по-разному.
Как очистить значения реквизита вручную и через групповую обработку
Если объектов немного — десятки позиций — проще всего очистить значения вручную. Откройте карточку объекта, перейдите на вкладку или группу «Дополнительно» (в некоторых конфигурациях — «Дополнительные реквизиты»), очистите поле и запишите объект. Такой способ безопасен, но не подходит для тысяч позиций.
Для массовой очистки в типовых конфигурациях есть штатный инструмент «Групповое изменение реквизитов». Он находится в разделе «Администрирование → Обслуживание → Корректировка данных» (в некоторых версиях — «НСИ и администрирование → Поддержка и обслуживание»). Обработка позволяет выбрать вид объектов, задать отбор и изменить реквизиты, включая дополнительные.
- 1Сделайте резервную копию базы или убедитесь, что актуальная копия существует
- 2Откройте «Администрирование → Обслуживание → Корректировка данных → Групповое изменение реквизитов»
- 3Выберите вид объектов, например «Номенклатура»
- 4Настройте отбор: все элементы или конкретная группа — лучше сначала ограничить выборку
- 5В списке реквизитов найдите нужный дополнительный реквизит, установите режим изменения и оставьте новое значение пустым (или выберите «Очистить», если вариант доступен)
- 6Нажмите «Изменить реквизиты» и дождитесь завершения
- 7Откройте несколько карточек и проверьте, что поле очищено
Обратите внимание: в некоторых версиях библиотеки стандартных подсистем дополнительные реквизиты в групповой обработке доступны не всегда или требуют включения специального режима. Если нужного реквизита нет в списке, используйте внешние обработки или программный способ, описанные ниже.
Очистка через обработку «Поиск и удаление дублей» и универсальные подборы
Ещё один штатный инструмент — обработка «Универсальный подбор и обработка объектов», которая входит в состав диска ИТС и широко распространена среди специалистов 1С. Она позволяет отобрать объекты по произвольному условию и выполнить над ними произвольный код, в том числе очистку табличной части «Дополнительные реквизиты».
Типовой сценарий: в обработке выбирается тип объекта, задаётся отбор (например, все элементы справочника «Номенклатура»), затем на закладке произвольного алгоритма пишется код, который удаляет строки с нужным свойством из табличной части и записывает объект. Перед запуском на всех объектах обязательно протестируйте алгоритм на одном-двух элементах.
Программная очистка значений через код
Самый гибкий способ — написать небольшой фрагмент кода во внешней обработке или в консоли кода. Он подходит, когда нужна сложная логика: очистить реквизит только у части объектов, удалить строки по нескольким свойствам сразу или обработать сотни тысяч записей с контролем транзакций.
Пример кода для очистки значений конкретного дополнительного реквизита у всех элементов справочника:
Свойство = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Цвет");
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ Ссылка ИЗ Справочник.Номенклатура ГДЕ НЕ ПометкаУдаления";
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Объект = Выборка.Ссылка.ПолучитьОбъект();
Индекс = Объект.ДополнительныеРеквизиты.Количество() - 1;
Пока Индекс >= 0 Цикл
Если Объект.ДополнительныеРеквизиты[Индекс].Свойство = Свойство Тогда
Объект.ДополнительныеРеквизиты.Удалить(Индекс);
КонецЕсли;
Индекс = Индекс - 1;
КонецЦикла;
Объект.Записать();
КонецЦикла;Несколько практических замечаний по этому коду. Удалять строки табличной части нужно с конца (по убыванию индекса), иначе индексы сместятся и часть строк будет пропущена. На больших объёмах имеет смысл оборачивать запись порциями в транзакции и выводить прогресс, чтобы понимать, что процесс не завис. Если объекты изменяются пользователями параллельно, возможны конфликты блокировок — лучше выполнять обработку в нерабочее время.
Для дополнительных сведений код другой: значения хранятся в регистре сведений «Дополнительные сведения», и очистка выполняется через набор записей регистра с отбором по свойству, а не через объекты справочников.
Как удалить сам дополнительный реквизит из настройки
Если реквизит больше не нужен совсем, недостаточно очистить значения — следует удалить его описание. Для этого перейдите в «Администрирование → Общие настройки → Дополнительные реквизиты и сведения → Дополнительные реквизиты». Откроется список наборов реквизитов по видам объектов. Найдите нужный набор, в нём — реквизит, и удалите его из списка.
При удалении реквизита из набора система обычно предупреждает, что значения, введённые пользователями, будут очищены. Это штатное поведение: платформа удаляет соответствующие строки из табличных частей объектов. Однако на больших базах эта операция может занять заметное время, поэтому выполняйте её при минимальной нагрузке.
Если реквизит используется в нескольких наборах (например, общий реквизит для всех видов номенклатуры), удалить его нужно из каждого набора либо удалить сам элемент плана видов характеристик. Перед удалением элемента ПВХ убедитесь, что на него не ссылаются настройки отчётов, сегменты, правила обмена и внешние обработки.
Как выбрать способ очистки
Проверка результата и типичные ошибки
После очистки обязательно проверьте результат несколькими способами. Откройте карточки объектов из обработанной выборки и убедитесь, что поле пустое. Сформируйте отчёт или список с отбором по заполненному значению реквизита — если очистка прошла успешно, отбор не должен ничего находить. Для программной проверки выполните запрос к табличной части и посчитайте строки с нужным свойством.
Как проверить результат
Поле дополнительного реквизита пустое, объект записывается без ошибок
Старое значение на месте или ошибка при записи
Отбор по заполненному значению ничего не находит
Часть объектов всё ещё содержит значения
Количество строк с очищаемым свойством равно нулю
Строки остались — обработка отработала не полностью
Отчёты формируются, обмены проходят без ошибок
Ошибки в отчётах, сбои обмена — реквизит где-то использовался
Отдельная ошибка — очистка значений только в текущем наборе данных, когда в базе есть архивные или помеченные на удаление объекты, которые потом восстанавливают. Если задача — убрать реквизит полностью, обрабатывайте все объекты, включая помеченные, либо удаляйте сам реквизит из набора.
Частые вопросы
Можно ли восстановить очищенные значения дополнительных реквизитов?
Только из резервной копии базы. Штатной функции отмены массовой очистки в 1С нет, журнал регистрации фиксирует факт изменения, но не старые значения. Поэтому копия перед обработкой обязательна.
Чем отличается очистка дополнительных реквизитов от очистки дополнительных сведений?
Реквизиты хранятся в табличной части самого объекта и очищаются записью объекта. Сведения хранятся в отдельном регистре сведений «Дополнительные сведения» и удаляются через набор записей регистра с отбором по объекту и свойству.
Почему дополнительный реквизит не отображается в групповом изменении реквизитов?
В некоторых версиях БСП дополнительные реквизиты недоступны в этой обработке или требуют включения режима изменения через «Все действия». Если реквизита нет в списке, используйте универсальную обработку подбора объектов или программный код.
Удалится ли реквизит из уже созданных объектов, если убрать его из набора?
Да, при удалении реквизита из набора система предупреждает, что введённые значения будут очищены, и удаляет соответствующие строки из табличных частей объектов. На больших базах это может занять продолжительное время.
Как очистить реквизит только у части товаров, например одной группы?
Задайте отбор в обработке «Групповое изменение реквизитов» по группе номенклатуры или добавьте условие в запрос программной обработки. Всегда сначала проверяйте отбор на малом количестве элементов.
Опасно ли очищать реквизиты, если настроен обмен с сайтом?
Да, если реквизит участвует в выгрузке. После очистки или удаления на сайт уйдут пустые значения, а удаление самого свойства может вызвать ошибки обмена. Перед очисткой проверьте настройки узла обмена и согласуйте изменения с ответственным за сайт.
Что важно запомнить
Очистка дополнительных реквизитов в 1С выполняется на двух уровнях: значения убираются групповой обработкой или кодом, а сам реквизит удаляется из набора в настройках. Перед любой массовой операцией делайте резервную копию, тестируйте на малой выборке и проверяйте, не используется ли реквизит в отчётах и обменах.