Как удалить склад в 1С:Управление торговлей 11, если он используется в видах номенклатуры

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

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

Выясним причину: где «спрятана» ссылка на склад

Проанализируем структуру справочника Виды номенклатуры. В 1С:УТ 11 связь со складом может быть неявной и находиться не в основном реквизитном составе, а в настройках заполнения данных. Рассмотрим основные места, где система может хранить ссылку на склад:

  1. Настройки создания: В карточке вида номенклатуры существует гиперссылка «Настройки создания». В этом разделе определяются значения, которые будут автоматически подставляться в новые карточки товаров. Параметр «Складская территория» (или просто склад) часто прописывается именно здесь. Даже если вы не видите его на главной форме, ссылка в базе данных остается активной.
  2. Схемы обеспечения: Проанализируем настройки распределения запасов. Склад может быть привязан к виду номенклатуры через механизмы обеспечения потребностей. Если для определенной категории товаров задана жесткая привязка к конкретному складу в схемах обеспечения, система не позволит удалить склад до момента перенастройки этих схем (также может потребоваться заполнение схем обеспечения номенклатуры).
  3. Настройки компоновки данных (СКД): В версиях 11.4.2.109 и выше настройки фильтров и отборов для видов номенклатуры могут храниться в скрытых хранилищах настроек. Если склад когда-либо использовался как фильтр по умолчанию, ссылка на него могла «застрять» во внутреннем XML-описании настроек.

Способ 1: Стандартный поиск и замена ссылок

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

Пошаговый алгоритм действий:

  1. Перейдем в меню «Функции для технического специалиста» (или «Все функции» в более старых редакциях платформы).
  2. Найдем стандартную обработку «Поиск и замена дублей» или воспользуемся контекстным меню в списке складов, выбрав пункт «Найти ссылки на объект».
  3. Проанализируем полученный список. Если в списке фигурирует Вид номенклатуры, откроем его и перейдем в настройки заполнения.
  4. Если объектов слишком много (более 100 000, как упоминалось в обсуждении), ручная правка нецелесообразна. В этом случае используем обработку «Групповое изменение реквизитов».

Способ 2: Групповое изменение реквизитов

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

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

Способ 3: Использование «Инструментов разработчика» (ИР)

Как отмечалось в сообщениях форума, иногда стандартных средств недостаточно из-за глубоких блокировок или скрытых ссылок. В таких случаях профессионалы используют консоль «Инструменты разработчика». Рассмотрим, чем она полезна:

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


// Пример программной очистки ссылки в Виде Номенклатуры
ОбъектВид = ВидНоменклатурыСсылка.ПолучитьОбъект();
Если ОбъектВид.НастройкиСоздания.Склад = СкладДляУдаления Тогда
    ОбъектВид.НастройкиСоздания.Склад = Справочники.Склады.ПустаяСсылка();
    ОбъектВид.Записать();
КонецЕсли;

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

Опасность непосредственного удаления

В сообщениях темы прозвучал совет использовать метод УдалитьЭлементСправочникаНепосредственноУФ. Мы крайне не рекомендуем использовать этот подход без крайней необходимости. Разберем почему:

При непосредственном удалении (физическом стирании записи из таблицы БД) 1С не проверяет целостность данных. В результате во всех объектах, где был указан этот склад (заказы, настройки, виды номенклатуры), появится запись <Объект не найден>. Это приведет к:

Почему помог «Монопольный режим»?

Проанализируем ситуацию, когда автор темы сообщил об успехе при использовании монопольного режима. В 1С:Предприятие 8 при удалении объектов происходит блокировка связанных таблиц. Если в системе работают другие пользователи или выполняются фоновые задания (например, РегламентныеЗадания по расчету себестоимости), попытка удаления может завершиться ошибкой не из-за «наличия ссылок», а из-за блокировки транзакции. Переход в монопольный режим отсекает сторонние процессы, позволяя системе беспрепятственно проверить ссылочную целостность и завершить транзакцию удаления.

Итоги и рекомендации

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

  1. Проверить «Настройки создания» в карточках Виды номенклатуры, на которые указывает система.
  2. Использовать «Групповое изменение реквизитов» для очистки ссылок, если объектов много.
  3. Убедиться, что склад не задействован в схемах обеспечения и настройках распределения запасов.
  4. Запустить процедуру удаления в монопольном режиме, чтобы исключить влияние блокировок от фоновых заданий.
  5. В самом крайнем случае, после физического удаления, обязательно выполнить операцию «Тестирование и исправление» с установленной галочкой «Очищать ссылки при наличии несуществующих объектов» для устранения «битых» записей.

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

← На главную