В процессе работы с крупными базами данных на платформе 1С:Предприятие 8.3 часто возникает ситуация, когда в справочнике Номенклатура появляются дубли или позиции, которые более не актуальны для текущей деятельности. Простое удаление таких объектов невозможно, так как по ним уже зафиксированы движения в прошлых периодах. Даже пометка на удаление не всегда решает проблему: такие позиции продолжают отображаться в поиске и формах подбора, сбивая с толку пользователей. Для поиска и корректного объединения повторяющихся позиций с заменой ссылок можно использовать инструмент для поиска и удаления дублей номенклатуры.
Проанализируем ситуацию, когда необходимо «спрятать» лишние карточки товаров, сохранив при этом исторические данные для отчетности. Рассмотрим основные методы — от простых административных хитростей до программных доработок через расширения.
В современных редакциях конфигураций 1С:ERP и Управление торговлей 11 (начиная с версий 2.5/11.5) реализован штатный механизм управления жизненным циклом товара. Разберем, как им пользоваться:
При установке этого статуса система автоматически начинает блокировать выбор данной позиции в новых документах закупки и продажи. Несмотря на то, что карточка физически видна в справочнике, пользователь получит предупреждение или запрет при попытке добавить её в табличную часть документа. Это самый безопасный метод, не требующий написания кода. Для массовой установки статусов или изменения реквизитов по внешнему списку позиций подойдёт расширение для группового изменения реквизитов номенклатуры.
Если нам нужно, чтобы неактуальная номенклатура вообще не появлялась в выпадающих списках при вводе по строке (быстрый поиск), необходимо вмешаться в логику работы модуля менеджера справочника. Для этого лучше всего использовать механизм расширений, чтобы не снимать конфигурацию с поддержки.
Выясним причину, по которой стандартный поиск выдает все результаты: по умолчанию запрос платформы не учитывает пометку на удаление. Нам нужно перехватить событие ОбработкаПолученияДанныхВыбора. Рассмотрим пример кода, который добавит фильтр:
&Вместо("ОбработкаПолученияДанныхВыбора")
Процедура Расш_ОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка)
// Добавляем условие, чтобы не выбирать помеченные на удаление
Параметры.Отбор.Вставить("ПометкаУдаления", Ложь);
// Если в конфигурации используется статус номенклатуры, можно добавить и его
// Параметры.Отбор.Вставить("Статус", Перечисления.СтатусыНоменклатуры.Активна);
КонецПроцедуры
Этот метод эффективно убирает «мусорные» записи из быстрого подбора, который чаще всего используют менеджеры при заполнении документов.
Проанализируем ситуацию с точки зрения прав доступа. Если в организации настроен механизм RLS, мы можем ограничить видимость определенных групп или видов номенклатуры для конкретных ролей. Посмотрим на алгоритм действий:
Важный нюанс: использование RLS может снизить производительность системы, если в базе работают сотни пользователей и справочник номенклатуры насчитывает сотни тысяч позиций. Однако это гарантированный способ «спрятать» объекты даже из стандартных списков выбора.
Часто пользователи жалуются: «Мы переименовали товар, добавив в начало Z-Z-Z, но при поиске он всё равно вылетает первым!». Это происходит из-за того, что данные сохранены в индексе полнотекстового поиска (ППС). Разберем, как навести порядок:
После этой процедуры поисковый движок актуализирует свои данные, и переименованные позиции перестанут выпадать по старым ключевым словам.
Если бюджет на доработку ограничен, можно воспользоваться проверенными временем «хитростями»:
UID объекта или набор случайных символов. Это исключит случайное нахождение товара по смысловому поиску. Чтобы не потерять связь, старое название можно вынести в Дополнительные сведения.Проанализируем техническую сторону вопроса, упомянутую в обсуждении. Если у дублей были разные Группы финансового учета (ГФУ), это означает, что они отражались на разных счетах бухгалтерского учета. Перед тем как «прятать» номенклатуру, убедитесь в следующем:
Товары на складах и Товары в ячейках обнулены (перенесены на правильную позицию документом Пересортица товаров или Корректировка остатков).Таким образом, для качественного сокрытия неиспользуемых позиций в 1С:УТ 11 или ERP рекомендуется комбинировать установку статуса Закрыта с программным фильтром в ОбработкаПолученияДанныхВыбора через расширение. Это обеспечит чистоту справочников и удобство работы пользователей без риска нарушения целостности исторических данных.