Работа с кодами и наименованиями в 1С:Предприятие — одна из самых частых задач, с которыми сталкиваются пользователи и администраторы системы.hether вы настраиваете новый справочник, чистите базу от устаревших данных или оптимизируете интерфейс для удобства сотрудников, умение правильно удалять эти реквизиты сэкономит время и предотвратит ошибки в учете. Но здесь кроется подвох: простое удаление через интерфейс не всегда работает, а в некоторых случаях может нарушить целостность данных.
В этой статье мы разберем три основных метода удаления кодов и наименований в 1С — от простых действий в пользовательском режиме до сложных манипуляций через конфигуратор. Особое внимание уделим скрытым зависимостям между объектами метаданных, которые часто становятся причиной сбоев при удалении. Вы узнаете, как безопасно очистить справочники, документы и регистры, не ломая связки между данными, и какие инструменты помогут автоматизировать процесс для крупных баз.
Почему нельзя просто удалить код или наименование через интерфейс
На первый взгляд, удаление кода или наименования в 1С выглядит тривиально: открыл справочник, выбрал элемент, нажал "Удалить". Но на практике этот подход работает только в 20% случаев. Дело в том, что коды и наименования в 1С часто выступают не просто как текстовые поля, а как:
- 🔗 Идентификаторы связей — используются в документах, регистрах и отчетах для привязки данных
- 📊 Ключи поиска — участвуют в индексации и ускорении выборок
- 🔄 Триггеры бизнес-логики — могут запускать обработки при изменении (например, пересчет остатков)
- 🔒 Объекты прав доступа — ограничивают видимость данных для ролей
Если удалить код элемента, который используется в документе "Реализация товаров" как ссылка на номенклатуру, система либо подставит вместо него пустое значение (что исказит отчеты), либо вовсе заблокирует проведение документа с ошибкой "Не найден объект справочника". Аналогично с наименованиями: их удаление может нарушить работу печатных форм, где эти поля выводятся в шаблонах.
Способ 1: Удаление через пользовательский интерфейс (для несвязанных элементов)
Это самый простой метод, который подходит для элементов справочников, не используемых в других объектах. Например, если вы добавили тестовые позиции в справочник Номенклатура и хотите их удалить, не затрагивая реальные данные. Алгоритм действий:
- Откройте нужный справочник (например,
Справочники → Номенклатура). - Найдите элемент через поиск или прокрутку.
- Выделите строку и нажмите
Deleteили кнопку "Удалить" на панели инструментов. - Подтвердите действие в диалоговом окне.
Если система выдает ошибку вида "Элемент используется в документе [Название] от [Дата]", это означает, что прямой удаление невозможно. В таком случае переходите к второму способу.
Создать резервную копию базы|Проверить связность элемента через отчет "Где используется"|Убедиться, что у пользователя есть права на удаление|Закрыть все сеансы других пользователей, работающих с этим справочником-->
⚠️ Внимание: В конфигурациях с включенным режимом управляемого приложения (например, 1С:ERP или 1С:УТ 11) некоторые справочники могут иметь запрет на удаление на уровне ролей. Проверьте права в Администрирование → Настройки пользователей и прав.
Способ 2: Пометка на удаление (для элементов со связями)
Когда элемент справочника используется в других объектах (документах, регистрах, отчетах), система блокирует его прямое удаление. В этом случае применяется механизм пометки на удаление. Он работает так:
- Элемент помечается как "удаленный", но физически остается в базе.
- В интерфейсе он перестает отображаться (если не включен режим показа помеченных объектов).
- Связи с другими объектами сохраняются, но становятся неактивными.
Чтобы пометить элемент на удаление:
1. Откройте справочник и найдите нужный элемент.
2. Нажмите правой кнопкой мыши → "Пометить на удаление" (или комбинацию Ctrl+Shift+Del).
3. Подтвердите действие.
4. Выполните регламентное задание "Удаление помеченных объектов" (Администрирование → Поддержка и обслуживание → Регламентные операции).
Важно: в некоторых конфигурациях (например, 1С:Бухгалтерия 3.0) помеченные объекты удаляются не сразу, а через 24–48 часов после помечения. Это сделано для возможности отмены операции.
Что делать, если элемент не помечается на удаление?
Если кнопка "Пометить на удаление" неактивна, проверьте:
1. Права пользователя — роль должна включать право "Удаление данных".
2. Настройки справочника — в конфигураторе (Объект → Справочник → [Имя] → Редактировать) может стоять галочка "Запретить удаление элементов".
3. Статус элемента — некоторые конфигурации блокируют удаление для элементов с определенными реквизитами (например, "Основной поставщик" в справочнике Контрагенты).
| Метод удаления | Когда применять | Ограничения |
|---|---|---|
| Прямое удаление | Элемент не используется в других объектах | Не работает для связанных данных |
| Пометка на удаление | Элемент имеет связи, но их можно разорвать | Требует запуска регламентного задания |
| Удаление через конфигуратор | Нужно очистить системные справочники или исправить ошибки | Требует прав администратора и знания SQL |
| Обработка "Поиск и замена" | Массовое удаление кодов/наименований по шаблону | Может замедлить работу базы при больших объемах |
Способ 3: Удаление через конфигуратор (для администраторов)
Этот метод предназначен для опытных пользователей и требует доступа к конфигуратору 1С. Он позволяет удалять данные напрямую из таблиц базы, минуя ограничения пользовательского интерфейса. Пошаговая инструкция:
- Закройте все сеансы пользователей в базе.
- Откройте конфигуратор (
1CV8.EXE /Configurator). - Перейдите в
Администрирование → Тестирование и исправление. - Выберите
"Поиск и уничтожение ссылок на объекты". - Укажите тип объекта (например, Справочник.Номенклатура) и критерии поиска (код или наименование).
- Запустите процедуру и дождитесь отчета.
Для массового удаления можно использовать запросы на языке 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. Восстановите удаленный элемент и замените его ссылки на актуальный через обработку "Поиск и замена ссылок".
FAQ: Ответы на частые вопросы
Можно ли удалить код элемента, если он используется в документе?
Нет, прямое удаление заблокировано. Варианты решений:
- Пометить элемент на удаление и дождаться, пока система разорвет связи (может занять до 48 часов).
- Переназначить ссылки на другой элемент через обработку
"Замена ссылок". - Удалить документ, в котором используется элемент (если это возможно по бизнес-логике).
Для критичных справочников (например, Организации или Склады) лучше использовать архивацию вместо удаления.
Как массово удалить пустые наименования в справочнике?
Используйте этот скрипт (работает в 1С 8.3):
Процедура УдалитьПустыеНаименования()
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Справочник.Номенклатура.Ссылка КАК Ссылка
|ИЗ
| Справочник.Номенклатура КАК Справочник.Номенклатура
|ГДЕ
| Справочник.Номенклатура.Наименование = """"";
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
Элемент = Выборка.Ссылка.ПолучитьОбъект();
Элемент.Удалить();
КонецЦикла;
КонецПроцедуры
Для больших справочников (>50 000 элементов) разбейте запрос на пакеты по 5 000 строк, чтобы избежать таймаута.
Почему после удаления кода в справочнике Номенклатура перестали печататься этикетки?
Скорее всего, код номенклатуры использовался в шаблоне печатной формы как часть штрихкода или артикула. Решения:
- Откройте обработку
"Печать этикеток"и проверьте поля, используемые в макете. - Замените удаленный код на актуальный в настройках шаблона (
Дополнительно → Настройки макета). - Если код был частью штрихкода, перегенерируйте штрихкоды для номенклатуры через обработку
"Штрихкоды.epf".
Как восстановить удаленный элемент, если нет резервной копии?
Восстановление без бэкапа возможно только если:
- Элемент был помечен на удаление, но еще не удален физически (используйте отчет
"Помеченные на удаление"и снимите пометку). - В базе ведется журнал регистрации (проверьте в
Администрирование → Журнал регистрации). - Есть логи репликации (для распределенных баз).
Если ничего из этого нет, единственный способ — восстановить данные из логических резервных копий (например, выгрузки в XML или DT), если они делались.
Можно ли отключить обязательность заполнения кода в справочнике?
Да, это настраивается в конфигураторе:
- Откройте конфигуратор и найдите нужный справочник (
Объект → Справочники → [Имя]). - В палитре свойств справочника найдите реквизит
"Код". - Снимите галочку
"Обязательное"в свойствах реквизита. - Обновите конфигурацию базы (
Конфигурация → Обновить конфигурацию базы данных).
После этого код станет необязательным для заполнения, но уже существующие коды останутся. Чтобы их удалить, используйте методы, описанные выше.