В конфигурации 1С:Управление производственным предприятием (УПП) 1.3 стандартный отчет «Валовая прибыль» строится по регистрам накопления Продажи и ПродажиСебестоимость. Однако на практике часто возникает задача сверить эти данные с бухгалтерской отчетностью или построить отчет строго по данным счетов 90 «Продажи» и 91 «Прочие доходы и расходы». Проблема заключается в том, что управленческий и бухгалтерский учет в УПП могут расходиться из-за особенностей отражения документов или специфики регламентных операций.
В рамках этой статьи мы разберем, как реализовать отчет по валовой прибыли, который будет брать данные из плана счетов хозрасчетный, проанализируем технические сложности и предложим варианты решения через систему компоновки данных (СКД).
Прежде чем приступать к написанию запроса, проанализируем структуру данных бухгалтерского учета в УПП. Мы столкнемся с двумя критическими проблемами:
НоменклатурныеГруппы. Конкретные позиции номенклатуры там не хранятся.РасчетСебестоимостиВыпуска (РСВ). При этом РСВ часто делает сводные проводки по номенклатурным группам, что затрудняет детализацию отчета до конкретного товара.Разберем пути решения этих проблем.
Чтобы вытащить номенклатуру из бухгалтерских проводок, мы можем использовать виртуальную таблицу ОборотыДтКт регистра хозрасчетный. Посмотрим на логику:
РеализацияТоваровУслуг) или из регистра накопления с аналогичным видом учета.Рассмотрим пример запроса, который собирает себестоимость в разрезе номенклатуры из регистра хозрасчетный:
ВЫБРАТЬ
ХозрасчетныйОборотыДтКт.СубконтоКт1 КАК Номенклатура,
ХозрасчетныйОборотыДтКт.Организация,
ХозрасчетныйОборотыДтКт.КоличествоОборотКт КАК Количество,
ХозрасчетныйОборотыДтКт.СуммаОборот КАК Себестоимость,
ХозрасчетныйОборотыДтКт.Регистратор
ИЗ
РегистрБухгалтерии.Хозрасчетный.ОборотыДтКт(&ДатаНачала, &ДатаОкончания, Регистратор, СчетДт = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.Продажи_Себестоимость), , СчетКт В (&СчетаТМЦ), , ) КАК ХозрасчетныйОборотыДтКт
В УПП существует параллельный учет в регистрах накопления. Для бухгалтерских целей используются регистры с постфиксом «Бухгалтерский учет». Это наиболее оптимальный путь, так как в этих регистрах сохраняется аналитика по номенклатуре, и при этом суммы соответствуют проводкам.
Для построения отчета нам понадобятся следующие источники:
ПартииТоваровНаСкладахБухгалтерскийУчет — для получения данных о себестоимости списанных товаров.Продажи — этот регистр является универсальным, но в нем есть реквизит Организация, позволяющий фильтровать данные. Однако для полной точности «по бухгалтерии» лучше использовать данные из первичных документов, проверенных на наличие проводок.ВыпускПродукцииБухгалтерскийУчет — если компания оказывает услуги, себестоимость которых отражается через АктОбОказанииПроизводственныхУслуг.Рассмотрим структуру комплексного запроса, предложенного для решения задачи в СКД. Мы будем объединять данные по выручке и себестоимости, используя Регистратор и Номенклатуру как ключи связи.
ВЫБРАТЬ
Продажи.Номенклатура КАК Номенклатура,
Продажи.Контрагент КАК Контрагент,
Продажи.Количество КАК Количество,
Продажи.Стоимость КАК ВыручкаСНДС,
Продажи.НДС КАК СуммаНДС,
Продажи.Стоимость - Продажи.НДС КАК ВыручкаБезНДС,
0 КАК Себестоимость,
Продажи.Регистратор
ПОМЕСТИТЬ ВТ_Данные
ИЗ
РегистрНакопления.Продажи КАК Продажи
ГДЕ
Продажи.Период МЕЖДУ &НачалоПериода И &КонецПериода
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
Партии.Номенклатура,
ВЫРАЗИТЬ(Партии.Регистратор КАК Документ.РеализацияТоваровУслуг).Контрагент,
0,
0,
0,
0,
Партии.Стоимость,
Партии.Регистратор
ИЗ
РегистрНакопления.ПартииТоваровНаСкладахБухгалтерскийУчет КАК Партии
ГДЕ
Партии.Период МЕЖДУ &НачалоПериода И &КонецПериода
И Партии.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход)
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
Т.Номенклатура,
Т.Контрагент,
СУММА(Т.Количество) КАК Количество,
СУММА(Т.ВыручкаБезНДС) КАК Выручка,
СУММА(Т.Себестоимость) КАК Себестоимость,
СУММА(Т.ВыручкаБезНДС - Т.Себестоимость) КАК ВаловаяПрибыль,
ВЫБОР
КОГДА СУММА(Т.ВыручкаБезНДС) <> 0
ТОГДА СУММА(Т.ВыручкаБезНДС - Т.Себестоимость) / СУММА(Т.ВыручкаБезНДС) * 100
ИНАЧЕ 0
КОНЕЦ КАК Рентабельность
ИЗ
ВТ_Данные КАК Т
СГРУППИРОВАТЬ ПО
Т.Номенклатура,
Т.Контрагент
Проанализируем ситуацию, когда при соединении таблиц выручки и себестоимости по регистратору суммы начинают «удваиваться» или «утраиваться». Это происходит, если в одном документе несколько строк с одной и той же номенклатурой или если соединение идет только по документу без учета номенклатуры.
Чтобы избежать этой ошибки, придерживаемся следующих правил:
Регистратор и Номенклатура перед тем, как выполнять ЛЕВОЕ СОЕДИНЕНИЕ.Субконто) обязательно используйте оператор ВЫРАЗИТЬ(Субконто1 КАК Справочник.Номенклатура). Это исключит проблемы с неопределенными типами данных и ускорит работу запроса.Зачастую реализация материалов или основных средств проходит по счету 91.01. В этом случае данные не попадают в регистр Продажи. Для охвата этих операций проанализируем следующие шаги:
РеализацияТоваровУслуг с видом операции «реализация материалов» или ПродажаИмущества).РегистраБухгалтерии.Хозрасчетный.Обороты.Проанализируем пример получения выручки со счета 91:
ВЫБРАТЬ
ХозрасчетныйОбороты.Субконто1 КАК ПрочиеДоходыРасходы,
ХозрасчетныйОбороты.СуммаОборотКт КАК СуммаВыручки,
ХозрасчетныйОбороты.Регистратор
ИЗ
РегистрБухгалтерии.Хозрасчетный.Обороты(&ДатаНачала, &ДатаОкончания, Регистратор, Счет = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ПрочиеДоходы), , , , ) КАК ХозрасчетныйОбороты
Для создания полноценного отчета, который удовлетворит требования бухгалтерии, выполним следующие настройки в схеме компоновки данных:
НачалоПериода(Период, "Месяц")).Артикул номенклатуры. Для этого в наборе данных просто выберем поле Номенклатура.Артикул.Построение такого отчета — трудоемкий процесс, требующий понимания того, как УПП транслирует первичные документы в проводки. Однако использование комбинации регистров накопления с бухгалтерским видом учета и данных регистра хозрасчетный позволяет получить максимально точный результат, который будет совпадать с оборотно-сальдовой ведомостью.