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