Каждый начинающий специалист или пользователь программы 1С:УНФ (Управление нашей фирмой) рано или поздно сталкивается с методологическими вопросами учета. Один из самых частых вопросов: почему показатели в отчете по выручке не совпадают с фактически поступившими в кассу или на расчетный счет деньгами?
В этой статье мы подробно разберем, как формируется показатель «Выручка» в стандартном отчете «Валовая прибыль по номенклатуре», почему классическое понимание выручки в 1С отличается от «кассового метода» и каким образом можно решить задачу руководства, если требуется видеть продажи только по оплаченным товарам.
Прежде чем переходить к настройке отчетов, давайте проанализируем базовые понятия управленческого и бухгалтерского учета. В системе 1С большинство стандартных торговых отчетов (включая «Валовую прибыль») работают по методу начисления.
Это означает следующее:
Расходная накладная или Акт выполненных работ (а в рознице — Отчет о розничных продажах).Приходная накладная с видом операции «Возврат от покупателя») уменьшают эту выручку в текущем периоде.Таким образом, колонка «Выручка» в отчете «Валовая прибыль по номенклатуре» — это сумма, на которую была произведена отгрузка товаров (минус возвраты) за выбранный период, независимо от факта оплаты.
Часто руководство ставит задачу: «Мне нужен отчет по видам номенклатуры, но учитывать мы должны только фактически оплаченный товар!»
Давайте посмотрим на ситуацию глазами программиста и логики базы данных. Представим пример:
Клиент оформляет заказ на 5 позиций общей стоимостью 100 000 рублей:
Клиент производит частичную оплату (аванс) в размере 40 000 рублей. Позже мы отгружаем ему все товары одной накладной. Возникает вопрос: какой именно товар из трех оплачен этими сорока тысячами рублей?
Без четко заданных правил распределения программа не может угадать, за что именно пришли деньги — за дорогой Товар А или за Товар Б и Товар В вместе взятые. Именно поэтому в простых учетных системах, таких как 1С:УНФ, штатный отчет по оплаченным товарам в разрезе номенклатуры отсутствует «из коробки».
Выясним, как обстоят дела с решением этой задачи в семействе программных продуктов 1С.
В крупных ERP-системах (таких как 1С:Управление торговлей 11, 1С:Комплексная автоматизация или 1С:ERP) присутствует штатный отчет «Продажи по оплате». В этих конфигурациях на уровне регистров накопления реализован сложный механизм партионного учета и расчетов с клиентами, который в фоновом режиме распределяет каждый платеж до конкретной номенклатурной позиции в закрываемой накладной.
В программе 1С:Управление нашей фирмой (УНФ) такого глубокого распределения расчетов до уровня строк накладной по умолчанию нет. Взаиморасчеты ведутся в разрезе договоров и заказов покупателей.
Если вам крайне необходим подобный функционал в 1С:УНФ, рассмотрим основные пути решения этой задачи.
В 1С:УНФ можно включить ведение доходов и расходов по кассовому методу (по оплате). Для этого необходимо выполнить следующие действия:
Важное ограничение: данный отчет строится по направлениям деятельности и статьям движения денежных средств (ДДС), но он не даст вам детализацию до конкретной номенклатуры товара.
Если вы программист 1С, перед вами стоит задача написать отчет с помощью Системы компоновки данных (СКД). Посмотрим на алгоритм, который обычно закладывается в основу такого отчета:
КоэффициентОплаты = СуммаОплаты / СуммаДокумента.ОплаченоНоменклатуры = СуммаНоменклатурыВДокументе * КоэффициентОплаты.Рассмотрим пример реализации такого запроса на СКД. Нам потребуется связать таблицу оборотов продаж и таблицу расчетов:
ВЫБРАТЬ
ПродажиОбороты.ДокументПродажи КАК ДокументПродажи,
ПродажиОбороты.Номенклатура КАК Номенклатура,
ПродажиОбороты.СуммаОбороты КАК СуммаОтгрузки,
ЕСТЬNULL(Взаиморасчеты.СуммаОплаты, 0) КАК ОбщаяСуммаОплатыПоДокументу,
ЕСТЬNULL(Взаиморасчеты.СуммаДокумента, 0) КАК ОбщаяСуммаДокумента
ПОМЕСТИТЬ ВременнаяТаблица
ИЗ
РегистрНакопления.Продажи.Обороты(&НачалоПериода, &КонецПериода) КАК ПродажиОбороты
// Здесь настраивается левое соединение с таблицей оплат по документу расчетов
;
ВЫБРАТЬ
ВТ.ДокументПродажи,
ВТ.Номенклатура,
ВТ.СуммаОтгрузки,
ВЫБОР
КОГДА ВТ.ОбщаяСуммаДокумента = 0 ТОГДА 0
ИНАЧЕ ВТ.СуммаОтгрузки * (ВТ.ОбщаяСуммаОплатыПоДокументу / ВТ.ОбщаяСуммаДокумента)
КОНЕЦ КАК СуммаОплачено
ИЗ
ВременнаяТаблица КАК ВТ
Этот способ является наиболее справедливым при частичных оплатах, так как распределяет поступившие средства равномерно между всеми позициями в накладной.
Другой вариант разработки — когда пришедшая оплата закрывает строки накладной последовательно сверху вниз. То есть, если оплатили половину накладной, то первые две позиции считаются полностью оплаченными, третья — частично, а остальные — неоплаченными.
Этот способ сложнее в реализации программного кода, так как требует написания циклов или сложных оконных функций в запросах для расчета нарастающего итога по строкам спецификации накладной.
Если у вас нет ресурсов на самостоятельную разработку сложного алгоритма распределения оплат, наиболее разумным решением будет приобретение готового внешнего отчета или расширения для 1С:УНФ на специализированных порталах (например, Инфостарт). Такие решения используют готовые механизмы распределения оплат по ФИФО или пропорционально и не требуют изменения типовой конфигурации, что сохранит вашу базу на поддержке.
Мы выяснили, что стандартная «Выручка» в отчете «Валовая прибыль» отражает объем продаж по методу начисления и не привязана к фактическому получению денег. Требование руководства видеть продажи «по оплате» в разрезе номенклатуры в 1С:УНФ — это не каприз, а стандартная задача управленческого учета, которая, однако, требует привлечения программиста 1С или использования готовых внешних разработок для реализации корректного алгоритма распределения платежей.