Как почистить номенклатуру от ненужных и ошибочных характеристик в 1С:Розница

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

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

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

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

---

Способ 1. Метод «двойного реверса» через стандартное удаление объектов (Без программиста)

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

  1. Откроем справочник Номенклатура и перейдем в список характеристик интересующего нас товара (или в общий список характеристик, если учет ведется в разрезе общих характеристик).
  2. Выделим абсолютно все характеристики в списке (это можно сделать комбинацией клавиш Ctrl + A) и установим для них пометку на удаление (клавиша Del или через контекстное меню правой кнопки мыши).
  3. Перейдем в раздел Администрирование (или Обслуживание в зависимости от версии интерфейса) и запустим стандартную обработку Удаление помеченных объектов.
  4. Запустим процедуру автоматического поиска и удаления. Программа начнет сканировать всю базу данных на наличие связей с помеченными элементами.
  5. Анализируем результат: те характеристики, которые хотя бы раз участвовали в движениях по складам, ценообразовании или штрихкодировании, система удалить откажется, выведя список заблокированных объектов. Те же характеристики, которые были заведены ошибочно и не имеют ни одной ссылки в системе, будут безвозвратно удалены.
  6. После завершения процедуры вернемся в список характеристик номенклатуры, снова выделим все оставшиеся элементы и снимем с них пометку на удаление.

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

---

Способ 2. Использование встроенного механизма скрытия («Недействительна»)

Если мы работаем в современных конфигурациях, таких как 1С:Розница 3.0 или 1С:Управление нашей фирмой (УНФ), разработчики платформы уже предусмотрели изящное решение проблемы устаревших данных без их физического удаления. Это механизм использования флага недействительности.

Рассмотрим подробнее, как работает этот инструмент:

---

Способ 3. Пакетная обработка через «Групповое изменение реквизитов»

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

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

  1. Перейдем в раздел НСИ и администрирование -> Обслуживание -> Корректировка данных и откроем обработку Групповое изменение реквизитов.
  2. В поле "Выбирать элементы типа" выберем объект Характеристики номенклатуры.
  3. Нажмем ссылку Все элементы, чтобы настроить параметры отбора. Мы можем отфильтровать характеристики по конкретному владельцу (номенклатуре), по дате создания (если такой реквизит присутствует), по вхождению в определенную ценовую группу или по наименованию (например, отобрать все характеристики, содержащие слово "ошибка").
  4. В табличной части доступных реквизитов найдем строку Пометка удаления и установим значение Да (или найдем реквизит Недействительна и также установим его в значение Истина).
  5. Нажмем кнопку Изменить реквизиты. Программа в фоновом режиме обработает весь массив данных за несколько секунд.

---

Способ 4. Программный метод очистки (Для баз большого объема)

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

Проанализируем пример логики построения такого запроса на встроенном языке 1С. Нам необходимо выбрать все характеристики из справочника и соединить их левым соединением с оборотами регистра накопления (например, Закупки.Обороты или Продажи.Обороты) за весь период существования базы данных. Там, где связь не сопоставится (значение будет равно NULL), характеристику можно смело помечать на удаление.

Пример программного кода для автоматизации этого процесса:


Запрос = Новый Запрос;
Запрос.Текст = 
    "ВЫБРАТЬ
    |	Характеристики.Ссылка КАК Ссылка
    |ИЗ
    |	Справочник.ХарактеристикиНоменклатуры КАК Характеристики
    |		ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Закупки.Обороты(,, Авто,,) КАК ЗакупкиОбороты
    |		ПО Характеристики.Ссылка = ЗакупкиОбороты.Характеристика
    |ГДЕ
    |	ЗакупкиОбороты.Характеристика ЕСТЬ NULL";

Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
    ОбъектХарактеристики = Выборка.Ссылка.ПолучитьОбъект();
    ОбъектХарактеристики.УстановитьПометкуУдаления(Истина);
КонецЦикла;

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

---

Нюанс: Почему характеристика не удаляется, если по ней не было движений?

Бывают ситуации, когда пользователь точно знает, что товар по данной характеристике никогда не закупался и не продавался, но стандартное "Удаление помеченных объектов" все равно блокирует операцию. Проанализируем, какие скрытые связи могут мешать очистке системы:

---

Правильная очередность наведения порядка в базе

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

Соблюдайте следующий алгоритм действий:

  1. Шаг 1. Поиск и слияние дублей номенклатуры. Сначала найдите все одинаковые товары (например, с помощью встроенной обработки "Поиск и удаление дублей"). Объедините их, перенаправив все ссылки на правильные карточки товаров.
  2. Шаг 2. Очистка характеристик. Только после того, как все товары заняли свои законные места, приступайте к чистке характеристик. Обратный порядок действий приведет к возникновению "битых" связей, когда характеристика будет ссылаться на несуществующего или помеченного на удаление владельца, что вызовет лавину системных ошибок.

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

← На главную