Задвоение номенклатурных позиций в информационных базах 1С — классическая проблема, с которой рано или поздно сталкивается любое торговое предприятие. В старых конфигурациях 1С (например, «Управление производственным предприятием» редакции 1.3) эта задача решалась относительно просто: запускалась стандартная обработка «Поиск и замена дублей», ссылки объединялись, а лишние элементы удалялись. Однако в современных конфигурациях, работающих на платформе 1С:Предприятие 8.3 с управляемым интерфейсом (таких как «Управление торговлей, редакция 11», «Комплексная автоматизация 2» и «1С:ERP»), бездумное автоматическое слияние карточек гарантированно приведет к разрушению базы данных и невозможности корректно рассчитать себестоимость.
В этой статье мы подробно проанализируем техническую суть проблемы, выясним, почему «ломается» финансовый учет при слиянии номенклатуры, и разберем по шагам безопасные методы устранения дублей.
Современные конфигурации 1С используют принципиально иную архитектуру хранения данных в регистрах накопления. Учет товаров, запасов и себестоимости ведется не напрямую по справочнику Справочник.Номенклатура, а через специальный разрез учета — ключи аналитики. В частности, ключевую роль играет служебный справочник Справочник.КлючиАналитикиУчетаНоменклатуры.
Каждая уникальная комбинация параметров (например, номенклатура, склад, характеристика, серия, назначение) создает в системе отдельную запись в этом справочнике. При проведении документов движения (таких как поступления, реализации, перемещения) система делает записи в регистры себестоимости именно в разрезе этих ключей.
Рассмотрим подробнее, что происходит при использовании стандартной обработки «Поиск и замена дублей»:
КлючиАналитикиУчетаНоменклатуры, которые теперь физически ссылаются на одну и ту же карточку номенклатуры.ТоварыОрганизаций или ВыручкаИСебестоимостьПродаж.Таким образом, простое автоматическое объединение элементов без последующего исправления служебных ключей аналитики категорически запрещено.
Если вам необходимо выполнить физическое слияние карточек номенклатуры с автоматическим контролем и исправлением зависимых объектов, стандартных средств администрирования будет недостаточно. Для этих целей программисты используют специализированный комплекс «Инструменты разработчика» (ИР).
В составе этого комплекса есть мощнейший инструмент — обработка «Поиск дублей и замена ссылок». Рассмотрим алгоритм работы с ней:
Управление торговлей.КлючиАналитикиУчетаНоменклатуры. Только после объединения идентичных ключей аналитики базу данных можно считать технически исправной.Что делать, если дублирующие позиции накопили огромную историю движений за прошлые, уже закрытые и сданные налоговые периоды? Любое перепроведение или изменение документов прошлых лет в этом случае недопустимо, так как это изменит себестоимость и финансовый результат прошлых отчетных периодов.
В такой ситуации разберем по шагам стратегию мягкого вывода дублей из текущего торгового оборота:
"НЕ ИСПОЛЬЗОВАТЬ_Лампа настенная".ПересортицаТоваров. Спишем остатки с позиции "НЕ ИСПОЛЬЗОВАТЬ_Лампа настенная" и оприходуем их на правильную карточку "Лампа настенная". Таким образом, на складах зависших остатков по дублям не останется.Для того чтобы менеджеры по продажам или закупкам случайно не выбрали помеченную на удаление или архивную номенклатуру в новые документы, необходимо настроить программное ограничение выбора.
Выясним, как это реализовать на уровне конфигурации. Мы можем использовать подписку на событие или внести изменения в модуль менеджера справочника Номенклатура через механизм расширений. Рассмотрим пример программного кода для переопределения выбора данных:
Процедура ОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка) Экспорт
// Если выбор происходит в документах, наложим фильтр
СтандартнаяОбработка = Ложь;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| Номенклатура.Ссылка КАК Ссылка,
| Номенклатура.Наименование КАК Наименование
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| НЕ Номенклатура.ПометкаУдаления
| И НЕ Номенклатура.ЭтоГруппа
| И НЕ Номенклатура.Наименование ПОДОБНО ""%НЕ ИСПОЛЬЗОВАТЬ%""
| И Номенклатура.Наименование ПОДОБНО &СтрокаПоиска";
Запрос.УстановитьПараметр("СтрокаПоиска", "%" + Параметры.СтрокаПоиска + "%");
ТаблицаРезультата = Запрос.Выполнить().Выгрузить();
СписокВыбора = Новый СписокЗначений;
Для Каждого Строка Из ТаблицаРезультата Цикл
СписокВыбора.Добавить(Строка.Ссылка, Строка.Наименование);
КонецЦикла;
ДанныеВыбора = СписокВыбора;
КонецПроцедуры
Этот код отсекает при интерактивном поиске любые карточки, помеченные на удаление или содержащие в своем наименовании стоп-слова, предотвращая новые ошибки ввода.
Борьба с последствиями малоэффективна, если не настроить жесткие административные и технические барьеры на этапе создания новых карточек. В конфигурации «Управление торговлей 11» предусмотрен отличный встроенный функционал контроля уникальности данных.
Выполним следующие системные настройки в режиме 1С:Предприятие:
Контроль уникальности рабочего наименования номенклатуры и характеристик.Вида номенклатуры настроим уникальные реквизиты. Например, укажем обязательное заполнение полей Артикул и Производитель и включим для них контроль уникальности. При попытке записать карточку с совпадающей комбинацией этих полей система заблокирует запись и покажет предупреждение пользователю.[Бренд] + " " + [Модель] + " " + [Цвет]). В таком случае менеджер физически не сможет написать название «от себя», что полностью исключает человеческий фактор (разное написание слов, опечатки, лишние пробелы).Номенклатура. Назначьте одного или двух ответственных сотрудников (контент-менеджеров или сотрудников службы НСИ), которые будут создавать карточки по строго регламентированным правилам на основе официальных заявок от менеджеров.Сочетание программных ограничений, грамотной настройки контроля уникальности в конфигурации и ответственного администрирования справочников позволит вам полностью очистить базу данных от дублей и сохранить стабильность оперативного и финансового учета предприятия.