Часто в практике автоматизации торговли возникает задача: необходимо получить точную себестоимость товара в момент проведения документа реализации или при формировании сложных цепочек документов (например, при передачах между собственными организациями). Разберем ситуацию, когда данные берутся по закупочной цене из карточки товара, но бизнес требует видеть реальную себестоимость онлайн. Проанализируем, почему в 1С:Управление торговлей 11 это сделать не так просто, и рассмотрим все доступные технические и методические способы решения этой задачи.
Архитектура современных конфигураций, таких как 1С:УТ 11, 1С:КА и 1С:ERP, построена таким образом, что точная и окончательная фактическая себестоимость формируется только процедурой закрытия месяца. Если мы попытаемся получить ее "здесь и сейчас", мы столкнемся с рядом объективных трудностей:
Из-за этого попытки рассчитать жесткую себестоимость в реальном времени часто приводят к несовпадениям данных внутри месяца и после его закрытия. Однако бизнесу нужны цифры оперативно. Посмотрим, какие инструменты предоставляет нам система для получения максимально точной предварительной оценки.
Разберем, как работает типовой функционал. Отчеты по валовой прибыли в течение месяца умеют показывать рентабельность до фактического закрытия. Это достигается за счет предварительного расчета.
В конфигурации существуют два ключевых регистра:
СтоимостьТоваров — используется для хранения предварительной стоимости.СебестоимостьТоваров — используется для хранения точных данных после закрытия месяца.Предварительная себестоимость в течение месяца строится на основе цены последней закупки (если в текущем месяце поставок еще не было) или средневзвешенной цены за прошлый месяц. Если мы разрабатываем свою обработку, нам следует обращаться к данным регистра СтоимостьТоваров.
Более того, программно можно обновить эти данные, не дожидаясь регламентных процедур. Выясним, как это сделать: можно использовать вызов процедур из общего модуля, например, РасчетСебестоимости.СформироватьДвиженияПредварительнойСтоимости. Это обновит предварительную оценку для нужного среза данных.
Рассмотрим механизм партионного учета версии 2.2, который используется в современных версиях УТ (начиная с 11.4). Если в учетной политике организации установлен метод оценки ФИФО (скользящая оценка), система старается определять партии в момент проведения документа выбытия.
Если мощностей сервера достаточно, мы можем максимально приблизить систему к режиму реального времени. Для этого нужно:
В таком сценарии система дозаполняет регистры партий и себестоимости в фоновом режиме. Когда мы формируем нашу обработку или отчет, мы просто немного ждем (программа может писать "партии не рассчитаны, подождите"), и через несколько минут получаем актуальные данные напрямую из регистра себестоимости.
Если мы не можем менять регламентные задания или нам нужно узнать себестоимость еще не проведенного документа, проанализируем возможность использования общих модулей. Разработчики могут программно вызывать методы из модуля ПартионныйУчет.
Существуют механизмы, которые собирают данные о текущих остатках и формируют виртуальные таблицы распределения партий без записи их в базу. Таким образом, алгоритм обработки может "предсказать" себестоимость для текущей сделки, проанализировав свободные партии ФИФО на данный момент. Это сложно в реализации, но дает наиболее точный оперативный результат в высоконагруженных системах.
Если расчет партий избыточен, а нам просто нужна цена для ориентира (вместо статической цены из карточки), рассмотрим использование механизма видов цен.
Мы можем создать новый вид цены, назовем его, например, "Текущая оперативная себестоимость". В настройках укажем, что это динамическая цена, базой для которой выступает "Цена поступления". При каждом проведении документа "Приобретение товаров и услуг" эта цена будет обновляться актуальным значением.
В коде нашей обработки мы просто получаем срез последних цен по этому виду цены. Это не будет полноценной "бухгалтерской" себестоимостью (так как не учтутся транспортные расходы и переоценки), но это на порядок актуальнее, чем ручная закупочная цена в карточке.
В некоторых компаниях проблему решают административным путем — введением понятия "Плановая себестоимость". Финансовый директор или экономист раз в период (месяц/квартал) рассчитывает плановую себестоимость продукции или товаров с учетом прогнозируемых доп. расходов и фиксирует ее документом УстановкаЦенНоменклатуры.
Вся оперативная работа, создание документов выбытия и расчеты рентабельности "здесь и сейчас" строятся от этой плановой цифры. А в конце месяца, после формирования фактической себестоимости, анализируется план-фактное отклонение.
Если наша обработка генерирует реализации и поступления между собственными юридическими лицами (схема Intercompany), то оперативная себестоимость может "ломаться" именно на этих переходах. Чтобы данные были актуальны:
ПередачаТоваров, которые типовой функционал умеет корректно обсчитывать в предварительном расчете.Подводя итоги, получить абсолютную фактическую себестоимость в режиме реального времени в 1С:УТ 11 архитектурно невозможно без закрытия месяца. Однако, комбинируя фоновый расчет партий по ФИФО, обращение к регистру предварительной стоимости и грамотное использование видов цен, мы можем предоставить бизнесу максимально приближенные к реальности цифры для оперативного управления.