При разработке отчетов в системе 1С начинающие программисты часто сталкиваются с проблемой: данные по количеству товара найти легко, а вот поле с суммой списания либо отсутствует, либо возвращает пустые значения. Типичная ошибка — попытка получить эти данные из Регистров сведений. Давайте подробно разберем, почему это не работает и где на самом деле хранятся стоимостные показатели списанных активов.
Первым делом проанализируем ситуацию, описанную автором темы. Попытка взять данные из Регистра сведений (тем более через виртуальную таблицу СрезПоследних) для отчета по списанию методически неверна. Регистры сведений в 1С предназначены для хранения характеристик, которые являются актуальными на определенный момент времени (цены, курсы валют, спецификации). Они не хранят историю движений «приход-расход».
Для учета товародвижения и их стоимости в 1С используются Регистры накопления (для управленческого учета) или Регистры бухгалтерии (для регламентированного учета). Именно в них фиксируется каждое изменение остатка товара и его себестоимости в момент проведения документа.
Прежде чем открывать Конструктор запроса, выясним, в какой таблице лежат нужные нам суммы. Названия регистров зависят от того, в какой программе вы работаете:
Хозрасчетный. Сумма списания — это оборот по кредиту счета 41 (Товары) или 10 (Материалы).Себестоимость товаров. Также данные могут быть в регистре Выручка и себестоимость продаж, если речь идет о реализации.Партии товаров на складах.Рассмотрим, как правильно вытащить сумму в Конструкторе запроса. Никогда не используйте основную таблицу регистра для получения итогов за период. Для этого существуют виртуальные таблицы.
Для отчета по списанию нам понадобится таблица Обороты. Разберем по шагам процесс настройки:
РегистрНакопления.ИмяВашегоРегистра.Обороты.Номенклатура.КоличествоРасход и СтоимостьРасход (или СуммаРасход). Именно поле Стоимость (или Сумма) в колонке «Расход» покажет вам сумму списания.Пример того, как должен выглядеть текст запроса, сформированный конструктором для бухгалтерского регистра:
ВЫБРАТЬ
ХозрасчетныйОбороты.Счет КАК Счет,
ХозрасчетныйОбороты.Субконто1 КАК Номенклатура,
ХозрасчетныйОбороты.КоличествоОборотКт КАК КоличествоСписания,
ХозрасчетныйОбороты.СуммаОборотКт КАК СуммаСписания
ИЗ
РегистрБухгалтерии.Хозрасчетный.Обороты(&НачалоПериода, &КонецПериода, , Счет В ИЕРАРХИИ (&Счет41), , , , ) КАК ХозрасчетныйОбороты
Проанализируем ситуацию, когда запрос настроен верно, но колонка с суммой в отчете все равно пустая. В современных конфигурациях 1С (ERP, УТ 11, КА) расчет себестоимости происходит не в момент проведения документа списания, а при выполнении регламентной операции «Закрытие месяца».
Важные моменты:
Себестоимость товаров будут только количественные движения.Часто в отчет должны попадать не все расходы товара (продажи, перемещения), а только конкретные списания (например, по результатам инвентаризации). Для этого в Конструкторе запроса на закладке «Условия» или прямо в параметрах виртуальной таблицы нужно установить фильтр по Регистратору или по Хозяйственной операции.
Рассмотрим пример ограничения по типу документа:
ВЫБРАТЬ
ТоварыНаСкладахОбороты.Номенклатура,
ТоварыНаСкладахОбороты.КоличествоРасход КАК Количество,
ТоварыНаСкладахОбороты.Регистратор
ИЗ
РегистрНакопления.ТоварыНаСкладах.Обороты(,, Регистратор,) КАК ТоварыНаСкладахОбороты
ГДЕ
ТоварыНаСкладахОбороты.Регистратор ССЫЛКА Документ.СписаниеТоваров
Обратите внимание: если мы используем периодичность Регистратор, мы сможем детализировать отчет до конкретного первичного документа. Однако помните, что в некоторых регистрах (например, в регистрах остатков) стоимость хранится отдельно от оперативных остатков на складах.
Выясним причину, по которой автор темы пытался использовать «Сумму поступления». Это частая логическая ловушка. Сумма последнего поступления — это цена, по которой товар пришел на склад последний раз. Но товар мог списываться из старых партий (по методу FIFO) или по средней цене. Поэтому правильная сумма списания — это всегда та сумма, которая была рассчитана системой исходя из учетной политики предприятия и зафиксирована в ресурсах регистра накопления в момент (или после) списания.
Подведем итог:
Регистры сведений для финансовых отчетов по товарам.Регистры накопления (например, Себестоимость товаров) или Регистр бухгалтерии.Обороты в Конструкторе запроса.Закрытие месяца было выполнено, иначе стоимостных данных в регистрах просто не будет.Используя этот структурный подход, вы всегда сможете корректно выводить финансовые показатели в своих отчетах на СКД.