Почему при создании реализации на основании заказа покупателя объединяются строки с разной ценой в 1С:УПП?

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

В процессе работы в конфигурации «1С:Управление производственным предприятием 1.3» пользователи могут столкнуться с ситуацией, когда в документе Заказ покупателя одна и та же номенклатура внесена несколькими строками по разным ценам (например, при продаже остатков или обрезков), но при формировании документа Реализация товаров и услуг на основании этого заказа строки схлопываются в одну с пересчетом стоимости по средней цене или первой попавшейся строке. Разберем, как устроен этот механизм в типовом решении, почему возникает объединение и как вернуть корректное поведение программы.

Типовое поведение 1С:УПП при вводе документов на основании

Проанализируем стандартную логику работы связки документов цепочки продаж и закупок:

  1. Заказ покупателя → Реализация товаров и услуг: В типовой конфигурации строки документа переносятся раздельно с сохранением индивидуальных цен и скидок из заказа. Если одна номенклатура указана по разным ценам, в документе реализации останется ровно столько же строк, сколько было в заказе.
  2. Заказ покупателя → Заказ поставщику: При формировании потребности поставщику одинаковая номенклатура типовым образом суммируется по количеству, так как цена закупки не зависит от цен продажи клиенту.
  3. Заказ поставщика → Поступление товаров и услуг: Документ поступления заполняется по строкам заказа поставщику.

Если в документе реализации происходит автоматическое объединение строк с разными ценами, это свидетельствует о наличии нетиповых доработок в конфигурации или некорректно настроенных обработках заполнения.

Причины нежелательного объединения строк

Рассмотрим подробнее программные и архитектурные причины возникновения этой проблемы:

  1. Некорректная программная свертка таблицы значений: В нетиповом коде процедуры ОбработкаЗаполнения модуля объекта документа РеализацияТоваровУслуг или в обработчиках формы документа выполняется метод Свернуть(). Если при этом программист указал в группировочных полях только номенклатуру без учета цены, строки объединяются с искажением итоговой стоимости.
  2. Заполнение по остаткам без связи с заказом: Если разработчик переписал алгоритм заполнения реализации так, что данные берутся из остатков регистра накопления Заказы покупателей без сопоставления с табличной частью исходного заказа, система выдает сгруппированное количество.
  3. Наличие нетиповых реквизитов и вкладок: Добавление нестандартных элементов (например, вкладки «Получено» или признака «Факт проверен» в документах закупки) нередко сопровождается кастомными алгоритмами передачи состава строк между связанными документами.
  4. Нетиповые подписки на события: Модификация табличной части документа может вызываться в подписке на событие ОбработкаЗаполнения или ПередЗаписью.

Диагностика и локализация проблемы

Выполним пошаговый поиск причин объединения строк:

  1. Сравним рабочую конфигурацию с типовой конфигурацией поставщика через меню Конфигурация — Сравнить, объединить с конфигурацией поставщика.
  2. Проверим наличие изменений в модулях объектов документов РеализацияТоваровУслуг, ЗаказПокупателя, ЗаказПоставщику, а также в общих модулях ЗаполнениеДокументов и ОбработкаТабличныхЧастей.
  3. Установим точку останова в процедуре ОбработкаЗаполнения модуля объекта документа РеализацияТоваровУслуг и в процедуре ПриОткрытии модуля формы реализации, чтобы отследить момент схлопывания строк таблицы Товары.
  4. Проверим справочник Дополнительные внешние обработки на наличие подключенных обработок заполнения табличных частей.

Способы устранения ошибки

Разберем варианты решения задачи в зависимости от требований бизнес-процесса:

  1. Восстановление типового кода: Если доработка устарела или работает некорректно, вернем типовой алгоритм процедуры ОбработкаЗаполнения, в котором строки табличной части заполняются поэлементно из заказа без свертки по ценам.
  2. Корректировка группировки в коде: Если объединение строк требуется по другим критериям, необходимо обязательно включить колонку Цена и скидки в список полей группировки:
    
    // Пример корректной свертки с сохранением цен
    ТаблицаТоваров.Свернуть("Номенклатура, ХарактеристикаНоменклатуры, Цена, СтавкаНДС", "Количество, Сумма, СуммаНДС");
    
  3. Использование штатных механизмов градации качества и характеристик: Чтобы избежать разночтений в ценах на одну и ту же номенклатуру (например, для деловых отходов, брака или обрезков), рекомендуется вести учет с использованием справочника Характеристики номенклатуры либо реквизита табличной части Качество. В этом случае позиции четко разделяются в складском и торговом учете.
← На главную