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