При работе в 1С:Управление торговлей 11.4 (а также в КА 2 и ERP) пользователи часто сталкиваются с неприятной ситуацией: при заполнении документа Пересчет товаров по отбору «Есть остатки», система начинает дублировать позиции номенклатуры. Вместо одной строки с общим остатком в табличную часть попадает две, четыре или даже восемь одинаковых строк. Это делает проведение инвентаризации невозможным без длительной ручной корректировки.
Рассмотрим подробно причины возникновения этой ошибки и разберем пошаговые алгоритмы ее устранения, опираясь на технический анализ структуры метаданных и практический опыт решения подобных кейсов.
Проанализируем механизм заполнения документа. Когда мы нажимаем кнопку заполнения, система выполняет сложный запрос, объединяющий остатки товаров на складах с настройками видов номенклатуры. Одной из ключевых точек соприкосновения является табличная часть ПолитикиУчетаСерий справочника ВидыНоменклатуры.
Выясним причину дублирования: в процессе обновлений, некорректных переносов данных из УТ 10.3 или сбоев при синхронизации, в этой табличной части могут появиться несколько строк для одного и того же склада. Самое коварное здесь то, что если на складе не включен серийный учет, в интерфейсе программы эти строки остаются невидимыми. Однако для SQL-запроса, который формирует документ Пересчет товаров, происходит обычное ЛЕВОЕ СОЕДИНЕНИЕ (LEFT JOIN). Если для одного склада в справочнике прописано три политики (даже пустых), система выведет три строки для каждой позиции номенклатуры этого вида.
Как исправить эту ситуацию:
Виды номенклатуры.ПолитикиУчетаСерий.Пример кода для проверки наличия таких дублей через запрос:
ВЫБРАТЬ
ВидыНоменклатурыПолитикиУчетаСерий.Ссылка КАК ВидНоменклатуры,
ВидыНоменклатурыПолитикиУчетаСерий.Склад КАК Склад,
КОЛИЧЕСТВО(ВидыНоменклатурыПолитикиУчетаСерий.НомерСтроки) КАК КоличествоСтрок
ИЗ
Справочник.ВидыНоменклатуры.ПолитикиУчетаСерий КАК ВидыНоменклатурыПолитикиУчетаСерий
СГРУППИРОВАТЬ ПО
ВидыНоменклатурыПолитикиУчетаСерий.Ссылка,
ВидыНоменклатурыПолитикиУчетаСерий.Склад
ИМЕЮЩИЕ
КОЛИЧЕСТВО(ВидыНоменклатурыПолитикиУчетаСерий.НомерСтроки) > 1
Разберем вторую по частоте причину — проблемы с регистрами. В архитектуре УТ 11 остатки хранятся в разрезе справочника КлючиАналитикиУчетаНоменклатуры. Этот справочник объединяет в себе ссылку на номенклатуру, характеристику, серию и склад.
Если в базе произошел сбой (например, из-за некорректной работы модуля обмена с Bitrix или разрывов в РИБ), может возникнуть ситуация, когда для одной и той же физической связки «Товар + Склад» создается два разных элемента в справочнике ключей аналитики. В отчетах по остаткам вы можете видеть одну строку (если они группируются только по номенклатуре), но документ пересчета, работающий на более низком уровне, увидит разные ключи и выведет их отдельными строками.
Для диагностики этой проблемы выполним следующие действия:
ТоварыНаСкладах с помощью консоли запросов.АналитикаУчетаНоменклатуры.Решением здесь будет использование инструментов разработчика (ИР) для поиска и замены дублей. Посмотрим на алгоритм: нужно найти дублирующиеся элементы в справочнике Ключи аналитики учета номенклатуры, выбрать «правильный» элемент и выполнить замену ссылок во всех регистрах. После этого обязательно следует запустить «Тестирование и исправление» с галкой «Пересчет итогов». Для этой задачи можно использовать инструмент для поиска дублей и безопасной замены ссылок.
Проанализируем ситуацию, упомянутую в обсуждении: наличие дублей магазинов и складов, поставленных на удаление. При активном обмене с внешними системами часто создаются «фантомные» объекты. Если товар числится на остатках по складу, который помечен на удаление, но фактически является дублем текущего склада, алгоритм заполнения может подтягивать данные из обоих источников.
Рассмотрим шаги по очистке базы в этом случае:
СоответствияОбъектовИнформационныхБаз. Иногда в нем хранятся старые привязки к удаленным складам, которые провоцируют некорректную работу запросов при заполнении документов.Если на вашем складе используется адресное хранение (ячейки), дублирование может возникать из-за остатков в так называемой «нулевой ячейке» или расхождений между регистром ТоварыНаСкладах и ТоварыВЯчейках.
Выясним, как это проверить. Если при заполнении пересчета система видит остаток товара в конкретной ячейке и одновременно остаток без указания ячейки (или в предопределенной ячейке для приемки/отгрузки), она создаст две строки. Проанализируем настройки склада: если включено использование упаковок, проверьте, не числится ли один и тот же товар в разных упаковках. Система может дробить строки, если в настройках пересчета не указана конкретная единица измерения для инвентаризации.
Чтобы быстро определить, в какую сторону двигаться, рекомендуем выполнить следующий проверочный скрипт в консоли запросов. Он покажет, что именно «видит» система перед тем, как вывести строки в документ:
ВЫБРАТЬ
ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура,
ТоварыНаСкладахОстатки.Характеристика КАК Характеристика,
ТоварыНаСкладахОстатки.ВНаличииОстаток КАК Остаток,
ВидыНоменклатурыПолитикиУчетаСерий.ПолитикаУчетаСерий КАК Политика,
ВидыНоменклатурыПолитикиУчетаСерий.Склад КАК СкладПолитики
ИЗ
РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВидыНоменклатуры.ПолитикиУчетаСерий КАК ВидыНоменклатурыПолитикиУчетаСерий
ПО ТоварыНаСкладахОстатки.Номенклатура.ВидНоменклатуры = ВидыНоменклатурыПолитикиУчетаСерий.Ссылка
И ТоварыНаСкладахОстатки.Склад = ВидыНоменклатурыПолитикиУчетаСерий.Склад
ГДЕ
ТоварыНаСкладахОстатки.Склад = &НужныйСклад
Если в результате выполнения этого запроса вы увидите, что на одну позицию номенклатуры приходится несколько строк с разными (или одинаковыми) политиками, значит, проблема в справочнике Виды номенклатуры. Если строк много, но поля политики пусты — ищите дубли в ключах аналитики.
Подведем итог: наиболее эффективным и проверенным решением для версии 1С:УТ 11.4 является очистка скрытых дублей в табличной части политик серий. Для этого не обязательно удалять склады или обнулять остатки — достаточно точечного исправления данных в справочнике видов номенклатуры с помощью программных инструментов или консоли запросов. Для такого действия подойдёт редактор табличных частей и реквизитов ссылочных объектов.