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