Как удалить предопределенный элемент справочника в 1С:УНФ?

Программист 1С v8.3 (Управляемые формы) 1С:Управление нашей фирмой Управленческий учет Торговля и дистрибуция
← На главную

В процессе эксплуатации 1С:Управление нашей фирмой (УНФ) пользователи и администраторы часто сталкиваются с ситуацией, когда предопределенный элемент справочника (например, конкретный склад, касса или статья движения денежных средств) становится ненужным. Однако стандартная пометка на удаление для таких объектов часто недоступна или заблокирована платформой. В этой статье мы подробно разберем, как справиться с этой задачей, начиная от самых безопасных методов и заканчивая программными инструментами.

Что такое предопределенный элемент и почему он не удаляется?

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

Проанализируем основные причины, по которым удаление затруднено:

  1. Связь с конфигурацией: У элемента заполнено внутреннее поле ИмяПредопределенныхДанных.
  2. Наличие ссылок: Если по элементу (например, складу) были движения в регистрах, накоплены остатки или он указан в закрытых документах, платформа не позволит его удалить до полной очистки всех упоминаний.

Решение 1: Безопасный метод «Архивация»

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

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

  1. Откроем карточку элемента и переименуем его, добавив префикс, например, «Z_НЕ ИСПОЛЬЗОВАТЬ» или «Архив». Это переместит его в конец списка при сортировке по алфавиту.
  2. Если конфигурация поддерживает признак Недействителен, установим соответствующую галочку. В 1С:УНФ это скроет элемент из большинства списков подбора.
  3. Переместим все остатки на актуальный склад с помощью документа «Перемещение запасов».

Этот метод хорош тем, что сохраняет историю движений и не ломает логику программы, где данный склад может быть прописан как «основной» в настройках пользователя.

Решение 2: Использование обработки «Групповое изменение реквизитов»

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

  1. Перейдем в раздел Компания — Администрирование — Обслуживание — Корректировка данных и выберем Групповое изменение реквизитов.
  2. В поле «Изменять» выберем нужный справочник (например, Склады).
  3. Нажмем кнопку Дополнительные параметры и установим флажок Показывать служебные реквизиты. Это ключевой момент, без которого нужные поля будут скрыты.
  4. В списке реквизитов найдем поле Имя предопределенных данных.
  5. Установим для него пустое значение (очистим строку).
  6. Выберем конкретный элемент через «Все элементы» — «Добавить условие» (например, по ссылке или наименованию), чтобы не испортить остальные данные.
  7. Нажмем Изменить реквизиты.

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

Решение 3: Программное «отвязывание» элемента

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

Проанализируем пример кода:


// Получаем ссылку на наш склад
СкладОбъект = Справочники.Склады.НайтиПоНаименованию("Старый склад").ПолучитьОбъект();

// Очищаем имя предопределенных данных
СкладОбъект.ИмяПредопределенныхДанных = "";

// Записываем объект
Попытка
    СкладОбъект.Записать();
    Сообщить("Элемент успешно отвязан от конфигурации");
Исключение
    Сообщить("Ошибка при записи: " + ОписаниеОшибки());
КонецПопытки;

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

Решение 4: Борьба с дублями при синхронизации

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

Рассмотрим порядок действий:

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

Чтобы ситуация не повторилась, в правилах синхронизации (EnterpriseData) или в «Пульте управления сопоставлением данных» необходимо вручную связать эти объекты по УИД (GUID) или по полю Имя предопределенных данных до начала обмена.

Решение 5: Тестирование и исправление базы

Иногда возникают «фантомные» предопределенные элементы, которые видны в списке, но отсутствуют в Конфигураторе (или наоборот). Это признак повреждения таблиц базы данных. В такой ситуации мы рекомендуем выполнить следующие действия в режиме Конфигуратора: для регулярного создания архивов и тестирования баз можно использовать программу для автоматического обслуживания 1С.

  1. Создать резервную копию базы данных.
  2. Зайти в меню Администрирование — Тестирование и исправление.
  3. Выбрать пункты:
    • Реструктуризация таблиц информационной базы;
    • Проверка логической целостности;
    • Очистка ссылок на несуществующие объекты.
  4. Нажать «Выполнить».

Резюме: Удаление предопределенного элемента — это крайняя мера. Если на элементе завязаны движения документов, лучше всего использовать метод переименования или инструмент «Поиск и удаление дублей». Если же удаление необходимо, используйте Групповое изменение реквизитов с включенными служебными полями, предварительно убедившись, что на данный объект нет жестких ссылок в программном коде 1С:УНФ.

← На главную