Как скрыть неиспользуемую номенклатуру в 1С:УТ 11?

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

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

Способ 1. Использование пометки на удаление

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

  1. При вводе по строке в документах помеченные на удаление элементы по умолчанию не предлагаются программой.
  2. Если на списки наложить стандартный отбор (скрыть помеченные), визуальный "мусор" исчезнет менее чем за пару минут.
  3. Защита от случайного использования: даже если пользователь скопирует старый документ, система предупредит об использовании недействительных (помеченных) ссылок.

Единственный минус этого подхода — психологический. У многих пользователей возникает неприязнь к перечеркнутым элементам в базе, а также опасение, что кто-то случайно нажмет кнопку УдалениеПомеченныхОбъектов и нарушит целостность базы (хотя платформа и не даст удалить объекты со ссылками). Для быстрой проверки вхождений позиции во все проведенные и непроведенные документы можно применить отчет для анализа использования номенклатуры.

Способ 2. Перемещение устаревших позиций в папку "Архив"

Другой популярный подход — создать отдельную группу (папку) в справочнике и переместить всю устаревшую номенклатуру туда. Разберем плюсы и минусы этого решения.

Плюсы: Элементы не мозолят глаза в основных рабочих папках, визуально справочник становится чище.

Минусы:

  1. Далеко не везде работа со справочником ведется с учетом иерархии (поиск и отборы могут выдавать элементы из архива).
  2. Нарушается логика построения отчетов за прошлые периоды. Если год назад товар продавался в группе "Холодильники", а сейчас мы перенесли его в "Архив", при сравнении динамики продаж по группам (с учетом иерархии) мы получим искаженные данные. В современной 1С:УТ 11 иерархия реализуется через различные реквизиты, такие как ВидНоменклатуры или ТоварнаяКатегория, но физическое перемещение все равно может сломать пользовательские настройки.

Способ 3. Добавление реквизита и скрытие через расширения

Если пометка на удаление и перенос в папку не подходят, посмотрим на пример других конфигураций. В 1С:УНФ и 1С:Бухгалтерия есть штатные галочки «Недействительна» или «Скрывать в списках». В УТ 11 такого реквизита для номенклатуры по умолчанию нет, так как она считается главной нормативно-справочной информацией.

Проанализируем ситуацию и создадим аналогичный механизм:

  1. Необходимо добавить новый булевый реквизит Недействителен (или использовать типовой механизм дополнительных свойств, например, свойство ВАрхиве).
  2. Чтобы не снимать конфигурацию с поддержки, создадим небольшое Расширение.
  3. В расширении перехватим открытие основных форм списков и форм выбора справочника.
  4. Программно наложим отбор на динамический список, чтобы элементы с флагом скрывались. При этом добавим пользователям кнопку переключатель: "Показывать скрытые товары".

Важное дополнение: Защита от скрытия товаров с остатками. Прежде чем устанавливать признак неактивности, выясним причину и проверим регистры накопления. Если товар числится на остатках в регистре ТоварыНаСкладах, программно запретим его архивацию. Иначе товар физически будет лежать на полке, а менеджеры его просто не увидят в базе. Для выявления неликвидных позиций на складах можно воспользоваться отчетом по анализу товаров, которые не продавались за период, для УТ 11.5.

Способ 4. Физическое удаление (Свертка и очистка ссылок)

Если клиент категорически настаивает именно на удалении объектов из базы (как было заявлено в исходной задаче), просто так удалить номенклатуру не выйдет из-за наличия ссылок. Рассмотрим, как подготовить базу:

  1. Необходимо найти номенклатуру, по которой нет остатков и движений (заказов, продаж) более заданного времени (например, года).
  2. Часто такая номенклатура держится в базе за счет документов УстановкаЦенНоменклатуры, созданных когда-то давно, или ключей аналитики.
  3. Разработаем или используем готовую обработку, которая очистит строки с этой номенклатурой из старых документов установки цен и зачистит служебные регистры.
  4. После очистки ссылок типовой механизм контроля целостности позволит физически удалить элементы из базы данных.

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

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

← На главную