Как в 1С:Управление торговлей 11.4 скрыть неиспользуемые элементы номенклатуры

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

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

Вариант 1. Использование расширения конфигурации и программного отбора

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

Проанализируем шаги реализации:

  1. Создадим новое расширение и добавим в него справочник Номенклатура.
  2. Добавим новый реквизит НеАктуально с типом Булево.
  3. Вынесем этот реквизит на форму элемента номенклатуры, чтобы ответственные сотрудники могли помечать старые товары.
  4. В формах списка (ФормаСписка) и выбора (ФормаВыбора) перехватим событие ПриСозданииНаСервере.

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


&НаСервере
Процедура Расш1_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
    // Проверим, не установлен ли уже такой отбор (чтобы не дублировать)
    УжеЕстьОтбор = Ложь;
    Для Каждого ЭлементОтбора Из Список.КомпоновкаДанных.Отбор.Элементы Цикл
        Если ТипЗнч(ЭлементОтбора) = Тип("ЭлементОтбораКомпоновкиДанных") 
            И ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("НеАктуально") Тогда
            УжеЕстьОтбор = Истина;
            Прервать;
        КонецЕсли;
    КонецЦикла;

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

Важно установить РежимОтображения в значение Недоступный или Быстрый доступ, чтобы пользователь случайно не отключил фильтр, если это не предусмотрено регламентом компании.

Вариант 2. Механизм сегментации номенклатуры

В конфигурации УТ 11.4 существует мощный типовой инструмент — Сегменты номенклатуры. Это позволяет сгруппировать товары по определенным правилам без изменения структуры кода. Проанализируем ситуацию, когда нам нужно скрыть товары, по которым не было движений более года.

Разберем по шагам настройку этого механизма:

  1. Перейдем в раздел CRM и маркетинг — Настройки и справочники — Сегменты номенклатуры.
  2. Создадим новый сегмент, например, «Действующие товары».
  3. Выберем способ формирования Периодически обновлять.
  4. В схеме компоновки данных настроим правила: включить только те товары, у которых остаток на складе больше нуля ИЛИ были продажи за последние 365 дней.
  5. Настроим регламентное задание, которое будет обновлять этот сегмент ночью.

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

Вариант 3. Использование дополнительных реквизитов (без программирования)

Если в штате нет программиста, выясним, как решить задачу стандартными средствами. Проанализируем возможности Дополнительных реквизитов.

Рассмотрим алгоритм действий:

  1. В разделе Администрирование — Общие настройки включим «Дополнительные реквизиты и сведения».
  2. Для справочника номенклатуры создадим доп. реквизит «Статус» со значениями: «Активен» и «Архив».
  3. Для массовой установки этого реквизита воспользуемся обработкой «Групповое изменение реквизитов».
  4. В форме списка номенклатуры нажмем Еще — Настроить список.
  5. На вкладке «Отбор» найдем наш доп. реквизит и установим значение «Активен».

Важный момент: Чтобы эта настройка применилась ко всем пользователям, администратор может скопировать настройки данного окна другим сотрудникам через раздел «Персональные настройки».

Вариант 4. Ограничение доступа на уровне записей (RLS)

Если необходимо, чтобы менеджеры даже через глобальный поиск не могли найти архивные позиции, проанализируем использование RLS (Record Level Security).

Этот метод позволяет жестко ограничить видимость данных на уровне SQL-запроса платформы. Мы можем создать профиль групп доступа, где в ограничении доступа для справочника Номенклатура будет прописано условие (например, по той же группе или реквизиту «Архив»).

Внимание: Использование RLS может существенно снизить производительность системы при формировании отчетов и открытии больших списков, так как к каждому запросу будет добавляться дополнительное условие проверки прав.

Вариант 5. Административный метод «Корзина»

Самый простой, «дедовский» метод — создание в корне справочника группы с названием «_АРХИВ» или «z_Архив». Использование префикса «z» или символа подчеркивания в начале имени позволяет этой папке всегда находиться в самом низу списка при сортировке по алфавиту.

Сотрудники просто перемещают ненужные элементы в эту группу. В настройках поиска (при подборе) можно установить фильтр Номенклатура В иерархии НЕ В ГРУППЕ z_Архив. Это решение не требует ни строчки кода и легко внедряется в любой момент.

Резюме

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

← На главную