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

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

Почему нельзя просто удалить код или наименование через интерфейс

На первый взгляд, удаление кода или наименования в 1С выглядит тривиально: открыл справочник, выбрал элемент, нажал "Удалить". Но на практике этот подход работает только в 20% случаев. Дело в том, что коды и наименования в 1С часто выступают не просто как текстовые поля, а как:

  • 🔗 Идентификаторы связей — используются в документах, регистрах и отчетах для привязки данных
  • 📊 Ключи поиска — участвуют в индексации и ускорении выборок
  • 🔄 Триггеры бизнес-логики — могут запускать обработки при изменении (например, пересчет остатков)
  • 🔒 Объекты прав доступа — ограничивают видимость данных для ролей

Если удалить код элемента, который используется в документе "Реализация товаров" как ссылка на номенклатуру, система либо подставит вместо него пустое значение (что исказит отчеты), либо вовсе заблокирует проведение документа с ошибкой "Не найден объект справочника". Аналогично с наименованиями: их удаление может нарушить работу печатных форм, где эти поля выводятся в шаблонах.

📊 Как часто вы сталкиваетесь с необходимостью чистить коды/наименования в 1С?
Еженедельно
Ежемесячно
Реже, но регулярно
Первый раз

Способ 1: Удаление через пользовательский интерфейс (для несвязанных элементов)

Это самый простой метод, который подходит для элементов справочников, не используемых в других объектах. Например, если вы добавили тестовые позиции в справочник Номенклатура и хотите их удалить, не затрагивая реальные данные. Алгоритм действий:

  1. Откройте нужный справочник (например, Справочники → Номенклатура).
  2. Найдите элемент через поиск или прокрутку.
  3. Выделите строку и нажмите Delete или кнопку "Удалить" на панели инструментов.
  4. Подтвердите действие в диалоговом окне.

Если система выдает ошибку вида "Элемент используется в документе [Название] от [Дата]", это означает, что прямой удаление невозможно. В таком случае переходите к второму способу.

Создать резервную копию базы|Проверить связность элемента через отчет "Где используется"|Убедиться, что у пользователя есть права на удаление|Закрыть все сеансы других пользователей, работающих с этим справочником-->

⚠️ Внимание: В конфигурациях с включенным режимом управляемого приложения (например, 1С:ERP или 1С:УТ 11) некоторые справочники могут иметь запрет на удаление на уровне ролей. Проверьте права в Администрирование → Настройки пользователей и прав.

Способ 2: Пометка на удаление (для элементов со связями)

Когда элемент справочника используется в других объектах (документах, регистрах, отчетах), система блокирует его прямое удаление. В этом случае применяется механизм пометки на удаление. Он работает так:

  1. Элемент помечается как "удаленный", но физически остается в базе.
  2. В интерфейсе он перестает отображаться (если не включен режим показа помеченных объектов).
  3. Связи с другими объектами сохраняются, но становятся неактивными.

Чтобы пометить элемент на удаление:

1. Откройте справочник и найдите нужный элемент.

2. Нажмите правой кнопкой мыши → "Пометить на удаление" (или комбинацию Ctrl+Shift+Del).

3. Подтвердите действие.

4. Выполните регламентное задание "Удаление помеченных объектов" (Администрирование → Поддержка и обслуживание → Регламентные операции).

Важно: в некоторых конфигурациях (например, 1С:Бухгалтерия 3.0) помеченные объекты удаляются не сразу, а через 24–48 часов после помечения. Это сделано для возможности отмены операции.

Что делать, если элемент не помечается на удаление?

Если кнопка "Пометить на удаление" неактивна, проверьте:

1. Права пользователя — роль должна включать право "Удаление данных".

2. Настройки справочника — в конфигураторе (Объект → Справочник → [Имя] → Редактировать) может стоять галочка "Запретить удаление элементов".

3. Статус элемента — некоторые конфигурации блокируют удаление для элементов с определенными реквизитами (например, "Основной поставщик" в справочнике Контрагенты).

Метод удаления Когда применять Ограничения
Прямое удаление Элемент не используется в других объектах Не работает для связанных данных
Пометка на удаление Элемент имеет связи, но их можно разорвать Требует запуска регламентного задания
Удаление через конфигуратор Нужно очистить системные справочники или исправить ошибки Требует прав администратора и знания SQL
Обработка "Поиск и замена" Массовое удаление кодов/наименований по шаблону Может замедлить работу базы при больших объемах

Способ 3: Удаление через конфигуратор (для администраторов)

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

  1. Закройте все сеансы пользователей в базе.
  2. Откройте конфигуратор (1CV8.EXE /Configurator).
  3. Перейдите в Администрирование → Тестирование и исправление.
  4. Выберите "Поиск и уничтожение ссылок на объекты".
  5. Укажите тип объекта (например, Справочник.Номенклатура) и критерии поиска (код или наименование).
  6. Запустите процедуру и дождитесь отчета.

Для массового удаления можно использовать запросы на языке 1С. Пример запроса для удаления элементов справочника Номенклатура с пустыми наименованиями:

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

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

"ВЫБРАТЬ

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

|ИЗ

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

|ГДЕ

| Номенклатура.Наименование = """"";

Результат = Запрос.Выполнить();

Выборка = Результат.Выбрать();

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

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

Объект.УстановитьПометкуУдаления(Истина);

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

КонецЦикла;

⚠️ Внимание: Неправильно составленный запрос может нарушить целостность базы. Перед выполнением всегда делайте резервную копию и тестируйте запрос на копии рабочей базы. Особенно осторожно работайте с системными справочниками (Пользователи, Роли, Планы обмена).
💡

Перед массовым удалением экспортируйте данные в .xlsx через обработку "Выгрузка данных". Это поможет восстановить информацию, если что-то пойдет не так. Используйте стандартную обработку "ВыгрузкаЗагрузкаДанныхXML.epf" (доступна в поставке 1С).

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

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

1С:Бухгалтерия 3.0

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

  • 🔍 Проверьте использование статьи в документах "Поступление товаров" и "Реализация".
  • 📋 Используйте отчет "Анализ субконто" для поиска связей.

1С:Управление торговлей 11

Здесь коды номенклатуры могут быть часть штрихкодов или серийных номеров. Удаление кода приведет к ошибкам при сканировании товара. Решение:

  • 🏷️ Предварительно переназначьте штрихкоды на другие элементы через обработку "Печать этикеток".
  • 🔄 Используйте механизм "Замена номенклатуры" для переноса истории по старым кодам на новые.

1С:Зарплата и Управление Персоналом

В кадровых конфигурациях наименования элементов справочника Сотрудники могут быть часть трудовых договоров или графиков работы. Удаление наименования сотрудника приведет к ошибкам в расчете зарплаты. Альтернатива:

  • 👤 Вместо удаления переименуйте элемент, добавив префикс "Архив: ".
  • 📅 Перенесите данные в справочник "Уволенные сотрудники" (если он предусмотрен конфигурацией).
💡

В типовых конфигурациях 1С никогда не удаляйте элементы справочников, которые используются в регламентированных отчетах (например, НДФЛ, 6-НДФЛ, РСВ). Это может привести к ошибкам при сдаче отчетности в ФНС.

Автоматизация удаления: обработки и внешние инструменты

Для крупных баз с тысячами элементов ручное удаление неэффективно. В таких случаях используют:

1. Стандартные обработки 1С

В комплекте поставки многих конфигураций есть обработки для массового удаления. Например:

  • 📂 "Поиск и замена значений.epf" — позволяет заменить или удалить коды/наименования по маске.
  • 🗑️ "Удаление помеченных объектов.epf" — ускоряет очистку базы от помеченных элементов.

2. Внешние утилиты

Для сложных задач подойдут сторонние инструменты:

  • 🛠️ 1С:Анализ данных — находит скрытые связи между объектами.
  • 🔧 Vanessa-ADD — автоматизирует тестирование и очистку данных.
  • 📊 SQL-скрипты — для прямых манипуляций с базой (требует знания T-SQL для MS SQL Server или PostgreSQL).

Пример использования Vanessa-ADD для удаления дублей в справочнике Контрагенты:

Сценарий УдалитьДублиКонтрагентов

Перем ТаблицаРезультатов;

// Поиск дублей по наименованию

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

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

"ВЫБРАТЬ

| Наименование,

| КОЛИЧЕСТВО(*) КАК Количество

|ИЗ

| Справочник.Контрагенты

|СГРУППИРОВАТЬ ПО

| Наименование

|ИМЕЮЩИЕ

| КОЛИЧЕСТВО(*) > 1";

ТаблицаРезультатов = Запрос.Выполнить().Выгрузить();

// Пометка дублей на удаление

Для Каждого Строка Из ТаблицаРезультатов Цикл

Выборка = Справочники.Контрагенты.НайтиПоНаименованию(Строка.Наименование);

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

Если НЕ Выборка.ЭтоГруппа Тогда

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

Объект.УстановитьПометкуУдаления(Истина);

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

КонецЕсли;

КонецЦикла;

КонецЦикла;

КонецСценария

⚠️ Внимание: Автоматизированные инструменты могут игнорировать бизнес-логику конфигурации. Например, обработка удалит коды номенклатуры, не проверяя их использование в заказах покупателей. Всегда тестируйте сценарии на копии базы.

Частые ошибки и как их избежать

Даже опытные администраторы 1С допускают ошибки при удалении кодов и наименований. Вот самые распространенные:

Ошибка Причина Как исправить
"Объект используется в документе" Прямые ссылки в проводках или табличных частях Используйте отчет "Где используется" для поиска связей
Зависание при пометке на удаление Слишком много связанных объектов (более 10 000) Разбейте операцию на части по 1 000–2 000 элементов
"Недостаточно прав" Роль пользователя не включает право "Удаление данных" Настройте права в Администрирование → Настройки пользователей
Искажение отчетов после удаления Удален элемент, использовавшийся в расчетах (например, статья ДДС) Восстановите элемент из резервной копии и перенастройте связи

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

  1. Проверьте структуру справочника через отчет "Иерархия элементов".
  2. Перенесите вложенные элементы в другую группу перед удалением.
  3. Используйте флаг "Помечать подчиненные элементы" в настройках удаления.
Что делать, если после удаления перестали работать отчеты?

Если отчеты (например, Оборотно-сальдовая ведомость) выдают ошибку после удаления кодов:

1. Проверьте параметры отчета — возможно, в настройках указан удаленный элемент как фильтр.

2. Обновите конфигурацию базы (если используете типовой отчет).

3. Восстановите удаленный элемент и замените его ссылки на актуальный через обработку "Поиск и замена ссылок".

FAQ: Ответы на частые вопросы

Можно ли удалить код элемента, если он используется в документе?

Нет, прямое удаление заблокировано. Варианты решений:

  • Пометить элемент на удаление и дождаться, пока система разорвет связи (может занять до 48 часов).
  • Переназначить ссылки на другой элемент через обработку "Замена ссылок".
  • Удалить документ, в котором используется элемент (если это возможно по бизнес-логике).

Для критичных справочников (например, Организации или Склады) лучше использовать архивацию вместо удаления.

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

Используйте этот скрипт (работает в 1С 8.3):

Процедура УдалитьПустыеНаименования()

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

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

"ВЫБРАТЬ

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

|ИЗ

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

|ГДЕ

| Справочник.Номенклатура.Наименование = """"";

Результат = Запрос.Выполнить();

Выборка = Результат.Выбрать();

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

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

Элемент.Удалить();

КонецЦикла;

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

Для больших справочников (>50 000 элементов) разбейте запрос на пакеты по 5 000 строк, чтобы избежать таймаута.

Почему после удаления кода в справочнике Номенклатура перестали печататься этикетки?

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

  1. Откройте обработку "Печать этикеток" и проверьте поля, используемые в макете.
  2. Замените удаленный код на актуальный в настройках шаблона (Дополнительно → Настройки макета).
  3. Если код был частью штрихкода, перегенерируйте штрихкоды для номенклатуры через обработку "Штрихкоды.epf".
Как восстановить удаленный элемент, если нет резервной копии?

Восстановление без бэкапа возможно только если:

  • Элемент был помечен на удаление, но еще не удален физически (используйте отчет "Помеченные на удаление" и снимите пометку).
  • В базе ведется журнал регистрации (проверьте в Администрирование → Журнал регистрации).
  • Есть логи репликации (для распределенных баз).

Если ничего из этого нет, единственный способ — восстановить данные из логических резервных копий (например, выгрузки в XML или DT), если они делались.

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

Да, это настраивается в конфигураторе:

  1. Откройте конфигуратор и найдите нужный справочник (Объект → Справочники → [Имя]).
  2. В палитре свойств справочника найдите реквизит "Код".
  3. Снимите галочку "Обязательное" в свойствах реквизита.
  4. Обновите конфигурацию базы (Конфигурация → Обновить конфигурацию базы данных).

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