Почему дублируются строки при заполнении документа «Пересчет товаров» в 1С:КА 2 и ERP 2

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

При работе в конфигурациях 1С:Комплексная автоматизация 2 и 1С:ERP Управление предприятием пользователи часто сталкиваются с неприятной ситуацией: при автоматическом заполнении документа Пересчет товаров (инвентаризация) табличная часть заполняется дублями. Одна и та же номенклатурная позиция может повториться 5, 10 или более раз, даже если по ней нет фактических остатков или серии отключены. Давайте разберем причины этой проблемы и найдем способы её решения.

Проанализируем влияние функциональной опции «Серии номенклатуры»

Одной из самых частых причин дублирования строк является некорректное отключение серийного учета. Если в начале работы с базой серии были включены и по ним велись записи, а затем функциональная опция была отключена, данные в регистрах могут остаться в «подвешенном» состоянии. Рассмотрим, как это влияет на заполнение документа.

Система компоновки данных (СКД), которая отвечает за формирование списка товаров в пересчете, обращается к таблицам остатков. Если в регистре накопления ТоварыНаСкладах или СвободныеОстатки остались записи с заполненными измерениями Серия, запрос выберет каждую такую запись отдельно. Поскольку в интерфейсе колонка «Серия» при выключенной опции скрыта, пользователю кажется, что строки абсолютно идентичны.

Для исправления ситуации выполним следующие шаги:

  1. Временно включим использование серий в настройках системы (НСИ и администрирование — Номенклатура — Разрезы учета).
  2. Проверим документы Ввод остатков. Если в них были указаны серии, необходимо очистить эти данные в табличных частях и перепровести документы.
  3. Проанализируем регистры через консоль запросов или стандартную форму списка регистра (меню «Все функции» или «Функции для технического специалиста»).

Исследуем состояние регистра «Складские итоги»

В современных версиях КА 2 и ERP данные для отчетов и документов часто берутся из агрегированных таблиц (итогов). Если произошел технический сбой или некорректное обновление конфигурации, регистр сведений Складские итоги может содержать избыточные записи. Запрос заполнения пересчета, соединяясь с этим регистром, будет множить номенклатуру на количество ошибочных записей в итогах.

Разберем, как восстановить корректность данных:

Проанализируем запрос в схеме компоновки данных (СКД)

Заполнение документа Пересчет товаров реализовано через механизм СКД. Текст запроса находится в макете ЗаполнениеПересчетаТоваров. Ошибка может крыться в самом алгоритме соединения таблиц. Рассмотрим упрощенный пример того, как некорректное соединение (JOIN) вызывает дубли:


ВЫБРАТЬ
    Остатки.Номенклатура,
    Остатки.Характеристика,
    Упаковки.Ссылка КАК Упаковка
ИЗ
    РегистрНакопления.ТоварыНаСкладах.Остатки(&Период, Склад = &Склад) КАК Остатки
    ЛЕВОЕ СОЕДИНЕНИЕ Справочник.УпаковкиЕдиницыИзмерения КАК Упаковки
        ПО Остатки.Номенклатура = Упаковки.Владелец

Если в справочнике УпаковкиЕдиницыИзмерения для одной номенклатуры заведено 5 упаковок, то при ЛЕВОМ СОЕДИНЕНИИ без фильтра по конкретной упаковке или без группировки СГРУППИРОВАТЬ ПО, система выведет 5 строк. В типовых конфигурациях 1С:КА 2.4.10 встречались ошибки, когда запрос «цеплял» лишние записи из-за отсутствия жестких условий по типам запасов или складским ячейкам.

Выясним причину дублей с помощью метода «Поиска ссылок»:

  1. Выберем товар, который дублируется в пересчете ровно 5 раз.
  2. Вызовем стандартную функцию «Найти ссылки на объект».
  3. Внимательно изучим список ссылок. Часто там можно обнаружить старые записи в регистрах сведений Штрихкоды номенклатуры или Настройки адресного хранения, которые «размножают» результат запроса.

Влияние упаковок и типов запасов

Система может дублировать строки, если на складе числятся остатки одного и того же товара, но с разными типами запасов (например, «Собственный товар» и «Товар на комиссии»). В документе Пересчет товаров колонка с типом запаса может быть не выведена, что создает иллюзию ошибки. Проанализируем регистр Товары организации, чтобы убедиться, что товар не разделен по разным налогообложениям или владельцам.

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

Рекомендации по исправлению ситуации

Если вы убедились, что данные в базе чисты, а итоги пересчитаны, но проблема сохраняется, выполните следующие действия:

  1. Проверьте наличие патчей: Зайдите в раздел Администрирование — Обслуживание — Обновление программы — Установленные исправления. Для версии 2.4.10 выпускались специальные патчи (например, EF_0013xxxx), исправляющие алгоритмы заполнения складских документов.
  2. Использование консоли запросов: Извлеките запрос из СКД документа, подставьте параметры (Склад, Период) и выполните его. Посмотрите, какие именно скрытые поля отличаются в дублирующихся строках. Это самый быстрый способ понять, какое измерение (Серия, Склад, Назначение или Упаковка) дает размножение строк.
  3. Обновление конфигурации: Если проблема вызвана внутренней ошибкой релиза, единственным надежным способом будет переход на более актуальную версию ветки 2.4 или переход на 2.5, где механизмы заполнения были значительно переработаны.

Таким образом, мы выяснили, что дублирование в пересчете товаров — это комплексная проблема, требующая анализа как настроек системы (серии, упаковки), так и технического состояния итогов регистров.

← На главную