Откуда брать сумму списанного товара в Конструкторе запроса 1С

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

При разработке отчетов в системе 1С начинающие программисты часто сталкиваются с проблемой: данные по количеству товара найти легко, а вот поле с суммой списания либо отсутствует, либо возвращает пустые значения. Типичная ошибка — попытка получить эти данные из Регистров сведений. Давайте подробно разберем, почему это не работает и где на самом деле хранятся стоимостные показатели списанных активов.

Разбираем архитектурную ошибку: Регистр сведений vs Регистр накопления

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

Для учета товародвижения и их стоимости в 1С используются Регистры накопления (для управленческого учета) или Регистры бухгалтерии (для регламентированного учета). Именно в них фиксируется каждое изменение остатка товара и его себестоимости в момент проведения документа.

Шаг 1: Определяем нужный регистр в зависимости от конфигурации

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

  1. 1С:Бухгалтерия предприятия (БП 3.0): Все стоимостные данные хранятся в регистре бухгалтерии Хозрасчетный. Сумма списания — это оборот по кредиту счета 41 (Товары) или 10 (Материалы).
  2. 1С:Управление торговлей (УТ 11), ERP или Комплексная автоматизация: Здесь используется сложная система учета себестоимости. Основной регистр — Себестоимость товаров. Также данные могут быть в регистре Выручка и себестоимость продаж, если речь идет о реализации.
  3. Старые версии (УТ 10.3, УПП): Ищите регистры накопления с названием Партии товаров на складах.

Шаг 2: Работа с Конструктором запроса и виртуальными таблицами

Рассмотрим, как правильно вытащить сумму в Конструкторе запроса. Никогда не используйте основную таблицу регистра для получения итогов за период. Для этого существуют виртуальные таблицы.

Для отчета по списанию нам понадобится таблица Обороты. Разберем по шагам процесс настройки:

  1. В Конструкторе запроса выберите таблицу РегистрНакопления.ИмяВашегоРегистра.Обороты.
  2. Нажмите кнопку «Параметры виртуальной таблицы». Здесь важно указать начало и конец периода, а также (при необходимости) условие по номенклатуре.
  3. В поле «Измерения» выберите Номенклатура.
  4. В поле «Ресурсы» выберите КоличествоРасход и СтоимостьРасход (или СуммаРасход). Именно поле Стоимость (или Сумма) в колонке «Расход» покажет вам сумму списания.

Пример того, как должен выглядеть текст запроса, сформированный конструктором для бухгалтерского регистра:


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

Шаг 3: Почему сумма может быть пустой?

Проанализируем ситуацию, когда запрос настроен верно, но колонка с суммой в отчете все равно пустая. В современных конфигурациях 1С (ERP, УТ 11, КА) расчет себестоимости происходит не в момент проведения документа списания, а при выполнении регламентной операции «Закрытие месяца».

Важные моменты:

Шаг 4: Отбор конкретных документов списания

Часто в отчет должны попадать не все расходы товара (продажи, перемещения), а только конкретные списания (например, по результатам инвентаризации). Для этого в Конструкторе запроса на закладке «Условия» или прямо в параметрах виртуальной таблицы нужно установить фильтр по Регистратору или по Хозяйственной операции.

Рассмотрим пример ограничения по типу документа:


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

Обратите внимание: если мы используем периодичность Регистратор, мы сможем детализировать отчет до конкретного первичного документа. Однако помните, что в некоторых регистрах (например, в регистрах остатков) стоимость хранится отдельно от оперативных остатков на складах.

Различие между «Суммой» и «Себестоимостью»

Выясним причину, по которой автор темы пытался использовать «Сумму поступления». Это частая логическая ловушка. Сумма последнего поступления — это цена, по которой товар пришел на склад последний раз. Но товар мог списываться из старых партий (по методу FIFO) или по средней цене. Поэтому правильная сумма списания — это всегда та сумма, которая была рассчитана системой исходя из учетной политики предприятия и зафиксирована в ресурсах регистра накопления в момент (или после) списания.

Подведем итог:

  1. Забудьте про Регистры сведений для финансовых отчетов по товарам.
  2. Используйте Регистры накопления (например, Себестоимость товаров) или Регистр бухгалтерии.
  3. Всегда выбирайте виртуальную таблицу Обороты в Конструкторе запроса.
  4. Следите за тем, чтобы Закрытие месяца было выполнено, иначе стоимостных данных в регистрах просто не будет.

Используя этот структурный подход, вы всегда сможете корректно выводить финансовые показатели в своих отчетах на СКД.

← На главную