Как получить информацию о поставщике в запросе по продажам в 1С:Комплексная автоматизация?

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

При попытке построить отчет по продажам с детализацией до поставщика в 1С:Комплексная автоматизация 2 многие разработчики сталкиваются с тем, что регистры накопления, такие как ВыручкаИСебестоимостьПродаж, не содержат прямой связи с документом поступления. Разберем детально, почему это происходит и как подходить к решению данной задачи.

Понимание архитектуры учета

Первое, что нужно уяснить — архитектура 1С:КА 2 и 1С:ERP принципиально отличается от старых версий (например, УПП 1.3). Система спроектирована таким образом, что данные о себестоимости и движениях партий отделены от факта продажи. Рассмотрим основные причины, по которым поставщик не «привязан» к строке реализации напрямую:

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

Анализ данных: почему поиск через запросы не дает результата

Когда мы пишем запрос к ВыручкаИСебестоимостьПродаж, мы работаем с агрегированными данными. Чтобы увидеть поставщика, недостаточно просто добавить поле в запрос — необходимо понимать, что данные должны быть предварительно «распределены» системой.

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

Как правильно искать поставщика

Разберем возможные пути решения задачи, если бизнес-требование «увидеть поставщика в продаже» является критичным:

1. Проверка настроек и регламентов

Прежде чем приступать к написанию сложных отчетов, убедитесь, что:

2. Анализ регистра ДетализацияПартийТоваровДляНДСИУСН

Этот регистр — наиболее вероятное место, где можно найти связь продажи с поступлением. Однако помните, что он заполняется регламентным заданием. Если вы разрабатываете отчет, учитывайте, что он будет корректно работать только за закрытые периоды.

3. Использование механизма «Номенклатура поставщика»

Если задача стоит в анализе закупок, а не в прослеживаемости конкретного списания товара, используйте справочник НоменклатураПартнеров. Это позволит вам связывать ваши внутренние товары с наименованиями поставщиков, что упростит отчетность по закупкам.

4. Обособленный учет под заказ

Если необходимо на 100% знать, от кого пришел товар, который ушел в продажу, единственным архитектурно верным способом является обособление под заказ. Если товар закупается под конкретный Заказ клиента, связь между поставкой и продажей становится «жесткой», и система будет точно знать источник поступления.

Практический совет по построению отчета

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

Пример логики соединения в СКД:


// Псевдокод логики соединения
ВЫБРАТЬ
    Продажи.Номенклатура,
    Продажи.Количество,
    Партии.ДокументПоступления.Контрагент КАК Поставщик
ИЗ
    РегистрНакопления.ВыручкаИСебестоимостьПродаж.Обороты КАК Продажи
ЛЕВОЕ СОЕДИНЕНИЕ
    РегистрНакопления.ДетализацияПартийТоваровДляНДСИУСН КАК Партии
    ПО Продажи.АналитикаУчетаНоменклатуры = Партии.АналитикаУчетаНоменклатуры

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

← На главную