В процессе эксплуатации баз данных «1С:Управление торговлей 11» (а также «1С:ERP» и «1С:Комплексная автоматизация 2») часто возникает ситуация, когда пользователи по ошибке заводят несколько дублирующих карточек номенклатуры. Товар приходовался, продавался, перемещался по разным позициям, и в итоге учет запутался. Нам необходимо навести порядок и сделать так, чтобы вместо нескольких разных карточек в базе осталась одна-единственная правильная позиция.
Разберем детально три основных сценария решения этой задачи, проанализируем потенциальные риски для себестоимости и обменов, а также изучим технические механизмы платформы, которые помогут нам выполнить эту операцию корректно и безболезненно для системы.
Это самый радикальный метод, который полностью заменяет ссылки на удаляемые карточки во всех существующих документах базы данных (как в текущем периоде, так и в закрытых прошлых периодах). Рассмотрим пошагово, как выполнить эту процедуру правильно.
Для начала откроем встроенный инструмент. Перейдем в раздел НСИ и администрирование — Обслуживание — Корректировка данных — Поиск и замена дублей. Если данный пункт отсутствует, убедимся, что у нашей учетной записи достаточно прав (требуется роль «Администратор системы»). При необходимости можно воспользоваться расширенным инструментом для поиска и безопасной замены дублей с поддержкой нечеткого сравнения.
Выполним следующие шаги:
Номенклатура.Артикул для всех четырех карточек, после чего настроим поиск дублей по совпадению артикула.Внимание! Обычная замена ссылок — это лишь верхушка айсберга. В современных конфигурациях ERP-класса этот процесс влечет за собой серьезные технические проблемы, которые мы обязаны разобрать далее.
Проанализируем архитектуру хранения данных в «1С:Управлении торговлей 11». В отличие от старых версий (УТ 10.3), в регистрах накопления (таких как ВыручкаИСебестоимостьПродаж, ТоварыОрганизаций, ДетализацияСебестоимостиТоваров) отсутствует прямое измерение Номенклатура. Вместо него используется измерение, ссылающееся на служебный справочник КлючиАналитикиУчетаНоменклатуры.
Когда мы заменяем одну номенклатуру на другую в документах, стандартная обработка автоматически заменяет ссылки в реквизитах самого ключа аналитики. Однако сами элементы справочника КлючиАналитикиУчетаНоменклатуры при этом не сливаются автоматически! В результате в базе данных образуется несколько разных ключей аналитики, указывающих на один и тот же склад и одну и ту же оставшуюся номенклатуру.
Это приводит к следующим критическим ошибкам:
Чтобы решить эту проблему, после объединения дублей номенклатуры нам необходимо выполнить слияние дублей ключей аналитики. Перейдем через меню «Функции для технического специалиста» (ранее — «Все функции») в справочник Ключи аналитики учета номенклатуры. В форме списка этого справочника нажмем кнопку Еще — Заменить дубли ключей аналитики. Система проанализирует записи и схлопнет дублирующиеся ключи в один, пересчитав движения регистров. Для этой задачи можно использовать инструмент для исправления ключей аналитики учета в проведенных документах.
Если наша база УТ 11 синхронизирована с 1С:Бухгалтерией, прямое слияние дублей в УТ нанесет серьезный удар по бухгалтерскому учету:
СоответствиеОбъектовИнформационныхБаз хранятся уникальные идентификаторы (GUID) сопоставления объектов между базами. При удалении карточек в УТ их связи в БП разорвутся, что может привести к повторному созданию дублей при обратной синхронизации.Правило: Перед удалением дублей в УТ необходимо произвести аналогичную замену в базе БП. Важно вручную скорректировать записи в регистре сопоставления объектов, чтобы оставшаяся карточка в УТ корректно синхронизировалась с оставшейся карточкой в БП. Для контроля изменений в закрытых периодах и быстрого поиска расхождений в проводках после обмена измененными документами применяется инструмент автоматической сверки проводок МС:Автовыверка.
Если мы дорожим историей документов, а прошлые периоды жестко закрыты от изменений и перепроведения, мы не можем использовать стандартный поиск и замену дублей. В этом случае мы применим метод переноса остатков и последующей архивации ненужных карточек.
Рассмотрим этот алгоритм по шагам:
Пересортица товаров (раздел Склад и доставка — Излишки, нехватки, порча — Пересортица товаров). В качестве списываемого товара укажем наши дубли, а в качестве приходуемого — основную карточку. Это позволит нам в текущем периоде обнулить остатки по дублям и перенести их на правильную позицию с сохранением себестоимости.Разрешить закупки и Разрешить продажи (или переведем статус номенклатуры в значение «Архив», если этот функционал включен в настройках системы). Дополнительно можно переименовать их, добавив префикс «НЕ ИСПОЛЬЗОВАТЬ_», и переместить в специальную архивную папку справочника.Этот метод абсолютно безопасен для закрытых периодов и не нарушает цепочки распределения себестоимости прошлых месяцев.
Иногда перед нами стоит задача не физически объединить карточки, а лишь вывести данные по ним в отчетах (например, по продажам или остаткам) в виде одной общей позиции. Это необходимо, когда руководство хочет видеть консолидированную аналитику, но бухгалтерия требует раздельного ведения карточек из-за разных ГТД или партий.
Выясним, как реализовать такую схему без изменения складских документов:
Создадим дополнительный реквизит для справочника Номенклатура. Для этого перейдем в НСИ и администрирование — Общие настройки — Дополнительные реквизиты и сведения — Дополнительные реквизиты. Выберем набор «Номенклатура» и добавим новый реквизит с наименованием Представитель в отчете и типом значения СправочникСсылка.Номенклатура.
Заполним этот реквизит в наших четырех карточках номенклатуры: укажем в качестве представителя одну и ту же основную карточку. Для остальных позиций в базе этот реквизит оставим пустым.
Теперь при формировании любого отчета на базе СКД (Системы компоновки данных), например, «Продажи», мы можем настроить группировку не по полю Номенклатура, а по нашему новому свойству. Проанализируем пример запроса, который система выполняет под капотом при такой настройке:
ВЫБРАТЬ
ВЫБОР
КОГДА ЕСТЬNULL(ВыручкаИСебестоимостьПродаж.Номенклатура.ПредставительВОтчете, ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)) <> ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)
ТОГДА ВыручкаИСебестоимостьПродаж.Номенклатура.ПредставительВОтчете
ИНАЧЕ ВыручкаИСебестоимостьПродаж.Номенклатура
КОНЕЦ КАК НоменклатураДляОтчета,
ВыручкаИСебестоимостьПродаж.КоличествоОборот КАК Количество,
ВыручкаИСебестоимостьПродаж.СуммаВыручкиОборот КАК СуммаВыручки
ИЗ
РегистрНакопления.ВыручкаИСебестоимостьПродаж.Обороты КАК ВыручкаИСебестоимостьПродаж
Используя такую логику в настройках панели отчетов (через изменение варианта отчета и добавление пользовательских полей), мы получим группировку всех четырех позиций в одну строку, при этом физически в базе данных документы останутся нетронутыми.
Если хотя бы одна из объединяемых карточек номенклатуры относится к категории подконтрольных товаров (маркированная продукция «Честный Знак», алкоголь в ЕГАИС или ветеринарные грузы в ВетИС/Меркурий), **прямое слияние дублей через удаление категорически запрещено**.
Каждая карточка в 1С привязана к конкретным кодам GTIN (для маркировки) или кодам алкогольной продукции в регистрах ЕГАИС. При «схлопывании» карточек уникальные идентификаторы госсистем перезапишутся или удалятся, что приведет к полной невозможности списать остатки, передать коды маркировки при продаже или сопоставить новые накладные из систем мониторинга. Такие карточки можно объединять только через вывод из оборота старых позиций (Сценарий 2) и постепенный переход на новую карточку.
Перед тем как приступить к объединению номенклатуры, всегда задавайте себе вопрос: «Какова цель этой операции и закрыты ли периоды?». Если периоды открыты и товар не подконтролен госсистемам, используйте Сценарий 1, не забывая про слияние ключей аналитики. Если периоды закрыты или товар маркирован — используйте безопасный Сценарий 2 с пересортицей и архивацией. Если изменения вносить нельзя совсем — используйте Сценарий 3 с виртуальной группировкой.