Почему в 1C:ERP при частичной отгрузке заказа в реализацию попадают уже отгруженные товары и как это исправить?

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

Ситуация, когда при создании очередной Реализации товаров и услуг на основании частично отгруженного Заказа клиента система «подтягивает» все позиции заказа (включая уже отгруженные), является довольно распространенной в 1C:ERP. На первый взгляд это кажется критическим сбоем регистров, который не лечится обычным перепроведением. Проанализируем причины этого явления и разберем по шагам, как восстановить корректную работу системы.

Причина 1: Нарушение уникальности «Кода строки»

В 1C:ERP связь между строками заказа и документами отгрузки осуществляется не только по ссылке на номенклатуру, но и по служебному реквизиту КодСтроки. Рассмотрим подробнее, как это работает: при добавлении товара в заказ каждой строке присваивается уникальный числовой идентификатор. Регистры накопления, такие как Заказы клиентов и Товары к отгрузке, хранят остатки именно в разрезе этого кода.

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

Для диагностики рекомендуется использовать консоль запросов и проверить содержимое табличной части «Товары» заказа и записи регистра Товары к отгрузке:


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

Если вы обнаружите расхождения в кодах строк, обычное перепроведение не поможет. Потребуется программная корректировка Кода строки в заказе, чтобы он соответствовал движениям в регистрах.

Причина 2: Смещение итогов в платформе 8.3.17

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

Рассмотрим решение через управление итогами:

  1. Перейдем в раздел «Функции для технического специалиста» — «Стандартные» — Управление итогами.
  2. Найдем регистр Товары к отгрузке (и сопутствующий Заказы клиентов).
  3. Выполним полное Пересчитать итоги за период возникновения проблемы. Это действие обновит таблицу итогов на основании реальных записей движений документов.
  4. Если база находится на клиент-серверном варианте, дополнительно стоит проверить отсутствие «фантомных» записей в SQL-таблицах итогов с нулевыми значениями, которые иногда мешают расчету.

Причина 3: Дубли ключей аналитики и фоновые расчеты

В ERP 2.4 и 2.5 активно используются механизмы оффлайн-расчетов. Если включено распределение запасов в фоновом режиме, система может не успеть обновить оперативные остатки между двумя быстро созданными реализациями.

Также разберем ситуацию с ключами аналитики. При перепроведении документов могут возникнуть дубли в справочниках Ключи аналитики учета номенклатуры. Хотя визуально отчеты могут выглядеть правильно, механизмы проведения будут сбоить. Проанализируем состояние базы через регламентную операцию:

Зайдем в раздел НСИ и администрирование — Обслуживание — Корректировка данных — Исправление дублей ключей аналитики. Выполнение этой процедуры часто «лечит» необъяснимые сбои в подтяжке строк в документы.

Причина 4: Статусы документов и схема «Сначала заказы, затем накладные»

Посмотрим на настройки склада. При использовании настройки «Сначала заказы, затем накладные, потом ордера», крайне важна последовательность статусов. Если в цепочке документов Заказ - Реализация - Ордер складской ордер был удален или отменен, но реализация осталась проведенной, регистр Товары к отгрузке может вести себя непредсказуемо, если нарушена жесткая связь Документ-основание.

Пошаговая проверка цепочки:

Рекомендации по предотвращению проблемы

Чтобы в дальнейшем избежать «двоения» позиций при частичных отгрузках, рекомендуем придерживаться следующих правил:

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

Если проблема не решается перепроведением, наиболее эффективным методом является использование документа Корректировка регистров. С его помощью можно вручную закрыть «висящие» остатки в Товары к отгрузке по проблемным кодам строк, что позволит пользователям продолжить работу с заказом без его полной переделки.

← На главную