Расчет себестоимости в УТ11, или куда подевался партионный учет. Себестоимость выпуска продукции «Средняя за месяц»

Расчет себестоимости – обязательный шаг для формирования финансового результата предприятия. Существует несколько методов расчета, каждый из которых, подходит под определенные параметры организации. В связи с этим, каждый пятый звонок в компанию поступает с вопросом: «Каким методом воспользоваться при расчете себестоимости товаров?». В этой статье мы поделимся с вами своим опытом, и расскажем о каждом методе на конкретных примерах.

Для начала немного теории:

Исчисление себестоимости необходимо для следующих целей:

    Определение рентабельности продаж отдельных видов товаров. (Коэффициент рентабельности рассчитывается как отношение прибыли к активам, её формирующим. Рентабельность, % = Прибыль (Выручка или стоимость продаж – Себестоимость) / Выручка;)

    Принятие обоснованных решений о корректировке состава учета продаваемых товаров;

    Формирование ценообразующей политики предприятия.

Расчёт себестоимости списания (продажа, использование в производстве и т.п.) производится, в целом, за месяц или на конкретную дату документом «Расчёт себестоимости товаров» непосредственно (расчёт производится с начала месяца до конца дня документа «Расчёт себестоимости товаров») или из «Помощника закрытия месяца».

При выборе метода расчета себестоимости немаловажным является наличие/отсутствие партионного учета. Партионный учет необходим для:

    Хранения информация о каждой партии товаров;

    Ведения сложного учета НДС;

    Партионной оценка стоимости;

    Продажи на экспорт;

    Включения/исключения НДС в стоимость.

Виды расчета себестоимости:

1) Предварительный расчет:

Предназначен для использования торговыми организациями в целях определения оценочной стоимости закупаемых материальных ценностей в течение отчетного периода. Выполняется способом «Средняя за месяц». Рассчитанные значения используются для определения валовой прибыли организации при условии выполнения плана продаж. Для предварительного расчета себестоимости можно настроить регламентное задание. В этом случае расчет осуществляется относительно быстро.

2) Фактический расчет:

Выполняется по итогам месячного отчетного периода с полным расчетом стоимости партий движения номенклатурных затрат. При этом виде расчета себестоимости можно выбрать любой метод определения стоимости списания материальных ценностей, описанных выше. Для фактического расчета себестоимости предусмотрено универсальное рабочее место «Закрытие месяца », использование которого позволяет отразить все операции по закрытию отчетного периода.

Прикладные решения компании «1С» позволяют одновременно вести учет себестоимости в ценах изначального поступления (стоимость, по которой товар поступил в первую организацию предприятия) и в ценах поступления в каждую отдельную.

Расчет себестоимости для группы компаний.

Для каждого склада рассчитывается своя себестоимость. Метод оценки выбирается при создании учетной политики. Расчет себестоимости можно производить для одной или нескольких организаций. Если на предприятии используется схема «Интеркампани», то себестоимость должна рассчитываться по всем организациям, входящим в структуру «Интеркампани», одновременно по одному методу расчета.

Методы расчета себестоимости:

Все примеры приведены на базе «1С:Управление Торговлей 11.2». В других программных продуктах компании «1С» себестоимость рассчитывается аналогично.

«Средняя за месяц»:

Выполняется расчет по средней цене за отчетный период без учета партий. Общее значение себестоимости используется, как для выбывших товаров, так и для остатков на складе.

Средняя за месяц = (Стоимость остатка + Стоимость поступления) / (Количество остатка + Количество поступления).


Кейс 1:

Одна организация, занимающаяся торговлей ковров Российского производства, обратилась к специалистам компании «RG-Soft» с целью выбрать наиболее подходящий метод расчета себестоимости. Компания закупает товары только на территории России, цена на товары не зависит от курса доллара и в зависимости от времени может меняться незначительно. Исходя из этого, отсутствует необходимость вести партионный учет. В связи с этим, специалисты «RG-Soft» предложили выбрать метод «Средневзвешенной оценки». Рассмотрим пример расчета себестоимости одной номенклатуры в данной компании.

Информация, которая была внесена в информационную базу, представлена в таблице 1.

Таблица 1.

Расчеты:

(100 000+200 000)/(10+10)=15 000 р. – себестоимость единицы товара в декабре;

5*15 000=75 000 р. – общая себестоимость товаров списанных в декабре;

Остаток товаров на 01.01.2017: 15 шт. на общую себестоимость 225 000 р.

(225 000+300 000)/(15+10)=21 000 р. – себестоимость единицы товара в январе;

10*21 000=210 000 р. – общая себестоимость товаров списанных в январе;

Остаток товаров на 01.02.2017: 15 шт. на общую себестоимость 315 000 р.

«ФИФО (скользящая оценка)»:

Выполняется в рамках полноценного партионного учета. При расчёте себестоимости считается, что первые поступившие партии выбывают также первыми, т.е. каждый расход товаров – это расход наиболее давно поступивших товаров этой номенклатурной позиции. Остаток на конец месяца рассчитывается по суммарной себестоимости каждой партии.

Себестоимость каждой партии за месяц = (остаток в стоимости на начало месяца + приход по стоимости в течении месяца) / (остаток по количеству на начало месяца + приход по количеству в течении месяца).

Кейс 2:

Организация, занимающаяся торговлей бытовой химией, также нуждалась в выборе подходящего метода расчета. Компания закупает товары за рубежом, следовательно, цена на товары ЗАВИСИТ от курса доллара, поэтому, т.к. цена в каждой поставке может существенно отличаться, в компании ведется партионный учет. Поставки товаров осуществлялись редко, около 2ух раз в месяц. В связи с этим, специалисты «RG-Soft» предложили выбрать метод «ФИФО (скользящая оценка)». Рассмотрим пример расчета себестоимости одной номенклатуры в данной компании.

Информация, которая была внесена в информационную базу, представлена в таблице 2.

Таблица 2.

Расчеты:

Первая партия: 10 000/100 = 100 - себестоимость единицы товара из первой партии в июне;

Вторая партия: 20 000/100 = 200 - себестоимость единицы товара из второй партии в июне;

Партии списываются по принципу: первые поступившие партии выбывают также первыми

50*100=5 000 р. – общая себестоимость товаров списанных в июне;

Остаток товаров на 01.07.2016: 150 шт. на общую себестоимость 25 000 р.

Первая партия: 5 000/50 = 100 - себестоимость единицы товара из первой партии в июле;

Вторая партия: 20 000/100 = 200 - себестоимость единицы товара из второй партии в июле;

Третья партия: 30 000/100 = 300 - себестоимость единицы товара из третьей партии в июле;

Необходимо списать 100 единиц товара, по принципу первые поступившие партии выбывают также первыми, сначала нужно списать 50 единиц из первой партии, а оставшиеся из второй.

50*100+50*200=15 000 р. – общая себестоимость товаров списанных в июле;

Остаток товаров на 01.08.2016: 150 шт. на общую себестоимость 40 000 р.

«ФИФО (взвешенная оценка)»:

Как при расчете ФИФО скользящей - при расчёте себестоимости считается, что первые поступившие партии выбывают также первыми, т.е. каждый расход товаров – это расход наиболее давно поступивших товаров этой номенклатурной позиции.

Особенность: остаток на конец месяца рассчитывается по средней стоимости остатка товаров по всем партиям.

При расчёте себестоимости по методу ФИФО определяются партии выбывших товаров, отделяя их от партий остатков. Затем для выбывших (проданных, списанных) партий определяется средняя себестоимость выбытия, по которой отражается расход каждой партии. Стоимость остатков и стоимость выбытия товаров могут отличаться.

Себестоимость любой партии за месяц= (остаток в стоимости на начало месяца + приход по стоимости в течении месяца) / (остаток по количеству на начало месяца + приход по количеству в течении месяца)

Кейс 3:

Еще одной организации, занимающейся торговлей аксессуарами для мобильных телефонов, специалисты «RG-Soft» предложили выбрать метод «ФИФО (взвешенная оценка)». Компания также ведет партионный учет, т.к. товары закупаются за рубежом, а цена зависит от курса валюты. Выбор данного метода был обусловлен тем, что поставки товаров, в отличие от предыдущего примера, осуществлялись гораздо чаще, порядка 10 раз в месяц. Метод «ФИФО (взвешенная оценка)» позволяет избежать накопления большого количества партий, т.к. все партии, поступившие в прошлом месяце, сворачиваются до одной. Рассмотрим пример расчета себестоимости одной номенклатуры в данной компании.

Информация, которая была внесена в информационную базу, представлена в таблице 3.

Таблица 3.

Расчеты:

Первая партия: 4 000/20 = 200 - себестоимость единицы товара из первой партии в октябре;

Вторая партия: 8 000/20 = 400 - себестоимость единицы товара из второй партии в октябре;

Программа 1С: Предприятие Управление торговлей имеет массу возможностей. Ее вполне можно адаптировать для ведения учета крупного торгового холдинга в разрезе входящих в него предприятий. 1С УТ отлично подходит для расчета себестоимости, ее конфигурацией предусмотрен для этого одноименный регламентный документ.

Особенности ведения учета себестоимости в программе 1С УТ

Программа 1С Управление торговлей 11.3 подходит для расчета себестоимости продукции в разрезе каждого предприятия, входящего в холдинг или по всему холдингу в целом, при условии настройки схемы «Интеркампани». Это иногда необходимо для оптимизации ведения управленческого учета, расчет себестоимости будет выполняться на основании данных тех предприятий, включение которых в схему «Интеркампани» .

Программа 1С Предприятие конфигурация УТ 11.3 позволяет рассчитывать себестоимость реализованных товаров автоматически. Это позволит вести оперативный учет прибыльности и фиксировать финансовый результат на любую отчетную дату. Автоматический расчет себестоимости реализованного товара с помощью программы 1С УТ 11.3 выполняется двумя способами:

  • Расчет предварительной себестоимости в процессе оперативной работы и расчет фактической себестоимости в конце месяца.
  • Расчет фактической себестоимости ежедневно.

Любое предприятие, использующее для ведения оперативного учета своей деятельности программу 1С УТ 11.3, может самостоятельно выбрать способ учета себестоимости реализованных товаров в соответствии с правилами утвержденной учетной политики.

Выбираем способ расчета себестоимости

Для оперативного ведения учета и контроля прибыльности предприятия на каждом этапе его хозяйственной деятельности, необходим правильный выбор способа расчета себестоимости проданного товара в программе 1С Управление торговлей редакция 11.3.

Прежде чем остановить свой выбор на одном из предложенных способов, следует учесть следующие факторы:

· Предварительный расчет себестоимости всегда производится по методу оценки стоимости товаров - По среднему. Поэтому рассчитанная фактическая себестоимость может отличаться от предварительно рассчитанной.

· Расчет фактической себестоимости предполагает обязательное выполнение всех операций, знаменующих окончание отчетного месяца, что занимает много времени и не рекомендуется в процессе оперативной работы.

Рассмотрим все предлагаемые программой 1С редакция УТ способы расчета себестоимости подробнее.

Первый вариант расчета предварительной себестоимости в процессе хозяйственной деятельности и фактической себестоимости при его закрытии используется на торговых предприятиях довольно часто. Он позволяет фиксировать валовую прибыль после продажи любой партии товаров и при закрытии очередного операционного дня. Фактическая себестоимость рассчитывается после закрытия отчетного месяца, после чего выводится окончательный финансовый результат.

При выборе этого способа программа 1С УТ позволяет настроить автоматический расчет себестоимости реализованных товаров. Для этого нужно поставить командный флажок напротив одноименного регламентного задания, который находится в разделе Администрирование, а также настроить расписание, по которому будет выполняться данный расчет. После этого дата в регламентном документе Расчет себестоимости будет ежедневно меняться, а сам документ оперативно перепроводиться. Тот расчет, который будет проведен в последний день отчетного месяца и выведет показатель фактической себестоимости, используемый для расчета финансового результата.

Об особенностях второго способа расчета себестоимости в конфигурации программы 1С УТ 11.3, поговорим в нашей следующей статье.

Если у вас возникли вопросы, вы можете связаться с нами любым удобным для вас способом.

Компания «Петербургские бизнес решения» будет рада видеть вас в числе своих клиентов!

Позволяет организовать контроль за материальными потоками и потреблением ресурсов, обеспечивающих производственную, управленческую и коммерческую деятельность предприятия.

1С:ERP УПП 2 существенно упрощает анализ затрат и себестоимости продукции. Учет затрат и расчет себестоимости продукции выполняется максимально точно, на основе данных оперативного учета.

Возможности подсистемы:

  • Учет фактических затрат предприятия по видам деятельности в необходимых разрезах в натуральном и стоимостном измерении.
  • Оперативный количественный учет ресурсов в незавершенном производстве с детализацией до партии запуска (маршрутного листа)
  • Учет фактических остатков незавершенного производства на конец отчетного периода в необходимых разрезах.
  • Различные способы распределения затрат на себестоимость выпускаемой продукции и выполняемых работ, на производственные затраты, направления деятельности, на расходы будущих периодов.
  • Расчет фактической себестоимости выпуска за период. Математически и методически корректный расчет себестоимости так называемого “встречного выпуска”. Реализованы модели: каскадно-попередельная и метод “системы линейных уравнений”.
  • Предоставление данных о структуре себестоимости продукции, полуфабрикатов. Рассчитанная себестоимость может быть детализирована до объема исходных затрат вне зависимости от количества переделов производственного процесса.
  • Предварительная суммовая оценка себестоимости выпуска в течение отчетного периода.
  • Обособленный учет себестоимости по заказам.

В зависимости от экономической трактовки в составе расходов предприятия выделяются следующие группы с разным порядком распределения:

  • Номенклатурные затраты – используются для отражения прямых расходов производственной деятельности с количественным измерением,
  • Постатейные расходы – используются для учета прямых и косвенных расходов, которые учитываются и распределяются только в суммовом выражении,
  • Формирование активов и пассивов – отражение операций, связанных с формированием активов или регистрацией обязательств, управление которыми ведется, как правило, в ручном режиме или сам факт регистрации которых обусловлен требованиями по ведению учета.

Номенклатурные затраты

Распределение номенклатурных затрат выполняется по количественным показателям, в натуральных единицах измерения. Предусмотрены различные варианты распределения номенклатурных затрат (по правилу, на статьи расходов, по выпускам). Для получения максимально качественных данных в контексте анализа затрат на производство и себестоимости продукции можно создавать любое количество правил распределения расходов.

Для распределения номенклатурных затрат по правилам на выбор доступны различные варианты формирования баз распределения затрат (количество указанных материалов, вес указанных материалов, плановая стоимость продукции и др.).

Постатейные затраты

Постатейные затраты используются для учета расходов, которые отражаются и распределяются только в суммовом выражении. Для отражения постатейных затрат предприятия используется единый механизм статей расходов.

Вариант распределения постатейных расходов фиксируется индивидуально для каждой стати расходов:

  • На себестоимость товаров. Увеличение стоимости товаров, материалов на величину дополнительных расходов.
  • На направления деятельности. Расходы относятся на финансовый результат по направлению деятельности, на заказ клиента, претензию клиента и так далее.
  • На расходы будущих периодов. Включение расходов в состав себестоимости отсрочено во времени.
  • На производственные затраты. Включаются в себестоимость полуфабрикатов и продукции.
  • На внеоборотные активы . Формирование стоимости основных средств, НМА, объектов строительства, НИОКР

Расчет себестоимости

Анализ затрат и себестоимости продукции не может быть проведен без качественного расчета себестоимости.

Полная производственная себестоимость изделий и работ формируется в разрезе статей калькуляции.

Каждой статье калькуляции соответствует определенный тип затрат, основанный на общепринятой группировке, представленной в главе 25 Налогового кодекса Российской Федерации (Материальные, Оплата труда, Амортизация и др.).

Расчет себестоимости выполняется по данным оперативного учета. На выбор доступны два вида расчета себестоимости:

  • Предварительный расчет – предназначен для использования торговыми организациями в целях определения оценочной стоимости закупаемых материальных ценностей в течение отчетного периода. Выполняется способом средней взвешенной оценки. Рассчитанные значения используются для определения валовой прибыли организации при условии выполнения плана продаж. Для предварительного расчета себестоимости можно настроить регламентное задание. В этом случае расчет осуществляется относительно быстро.
  • Фактический расчет – выполняется по итогам месячного отчетного периода с полным расчетом стоимости партий движения номенклатурных затрат. При этом виде расчета себестоимости можно выбрать метод определения стоимости списания материальных ценностей:
    • Средняя за месяц – стоимость списания товаров определяется по средней цене за отчетный период (средневзвешенная оценка),
    • ФИФО (средневзвешенная оценка) – стоимость списания по ФИФО определяется для партии выбывших товаров,
    • ФИФО (скользящая оценка) – стоимость списания товаров по ФИФО определяется в рамках полноценного партионного учета.

Учет прочих расходов и доходов

Поддерживается возможность фиксировать прочие расходы организаций, дополнительные расходы по товарам, расходы будущих периодов, относящиеся непосредственно на финансовый результат деятельности предприятия.

Для ведения учета прочих расходов и доходов прикладное решение предусматривает отражение следующих операций:

  • Регистрация расходов – позволяет отразить возникновение произвольных расходов по выбранной статье расходов,
  • Регистрация доходов – позволяет отразить возникновение произвольных доходов по выбранной статье доходов,
  • Списание расходов – оформляется списание расходов, ранее сформированных на конкретном подразделении по указанной в документе статье расходов,
  • Сторнирование доходов ,
  • Сторнирование расходов .

Обособленный учет финансовых результатов

“1С:ERP Управление предприятием 2” позволяет формировать финансовые результаты от продажи товаров и работ обособленно по заказам, сделкам, подразделениям или менеджерам, поставщикам, группам финансового учета товаров.

По каждому объекту обособления можно сформировать полный финансовый результат (себестоимость, выручка, прибыль, рентабельность).

Финансовый результат по объектам обособления представлен в различных вариантах отчетов Валовая прибыль и Доходы и расходы .

Управленческий баланс

Для оценки финансового состояния предприятия предусмотрен отчет Управленческий баланс – упрощенный вариант бухгалтерского баланса.

Управленческий баланс позволяет управлять активами и обязательствами, контролировать направления использования финансовых ресурсов, включает данные финансового учета товаров, взаиморасчеты с клиентами и поставщиками, остатки наличных и безналичных денежных средств, прочие активы и пассивы.

Данные управленческого баланса могут формироваться как по предприятию в целом, так и по каждой отдельной организации. Каждый раздел баланса можно расшифровать до документа, отражающего отдельные хозяйственные операции. Отдельно отображается информация о нарушении баланса, что позволяет выявить возможные ошибки в учете.

В программе производится с помощью регламентного документа Расчет себестоимости товаров (раздел Финансы – Регламентные документы ).

Расчет себестоимости производится отдельно для каждой организации, входящей в состав торгового предприятия.

Программа позволяет создавать данный документ автоматически для того, чтобы в процессе работы можно было оценить прибыль от продажи товаров. При этом будет рассчитана предварительная себестоимость товаров . В конце месяца следует провести регламентный документ и рассчитать фактическую себестоимость товаров.

Для того чтобы себестоимость рассчитывалась автоматически, необходимо в настройках методов оценки себестоимости для каждой организации установить флажок Обновлять стоимость регламентным заданием .

Метод оценки, который устанавливается для расчета (ФИФО или Средняя за месяц ), влияет на расчет фактической себестоимости . Предварительная себестоимость товаров всегда рассчитывается по методу оценки Средняя за месяц .

Теперь нам нужно создать регламентное задание, которое будет автоматически создавать документ Расчет себестоимости товаров , и задать периодичность, с которой это задание будет выполняться.

Создание нового регламентного задания производится в списке Поддержка и обслуживание (раздел Администрирование ).

В новом задании обязательно нужно установить флажок Использование и задать периодичность, с которой должно выполняться регламентное задание. Например, мы хотим, чтобы расчет себестоимости производился каждый день в 8 часов утра. Нужно ввести эти данные в расписание данного регламентного задания.

После ввода расписания нажмите кнопку Записать и закрыть в форме Расчет предварительной себестоимости .

Каждое утро в 8 часов утра будет создаваться новый документ Расчет себестоимости товаров для тех организаций, в которых установлен флажок обновления данных о себестоимости регламентным заданием. Таким образом, каждый день мы будем иметь актуальные данные о себестоимости товаров. Можно настроить расписание и таким образом, чтобы обновление себестоимости производилось каждый час или каждые 10 минут.

Если возникает такая необходимость, то расчет себестоимости может быть активизирован пользователем вручную. Для этого достаточно в списке регламентных заданий выбрать команду Выполнить сейчас .

Итак, программа сегодня 9 января автоматически создала документ Расчет себестоимости товаров . Этот документ появится в списке Регламентные документы (раздел Финансы ).

В автоматически созданном документе будет установлен вариант расчета Предварительный .


Нас находят: Себестоимость товаров в валюте регл учета , настройка методов себестоимости товаров ут для украины 3 1 , расчет себестоимости стимул, себестоимость флажка, себестоимость гикоколории документ, 1с документ расчёт себестоимости товаров, Расчет себестоимости и цены товара, пример индивидуального задания по расчёту себестоимости, при продаже товара в 1С УТП в управленческом учете не списівается себестоимость, необходимо сумма остатка товара по себестоимости как сформировать


Механизм оффлайнового (неоперативного) расчета себестоимости, движения по регистрам себестоимости, общая информация.

Начиная с версии ERP 2.1.3 (и соответствующих ей версий КА и УТ) различаются два типа движения:

  • "первичные" - формируемые в соответствии с логикой документов при их проведении;
  • "расчетные" - формируемые данным механизмом (идентификатором типа движения является новый реквизит "РасчетСебестоимости" регистров накопления).

Список регистров, обслуживаемых механизмом расчета себестоимости, см. в ИсходящиеДанныеМеханизма()

Регистратором расчетных движений теперь является первичный документ (из реквизита ДокументДвижения), а не документ РасчетСебестоимостиТоваров. Документ РасчетСебестоимостиТоваров больше не делает движений по следующим регистрам: ВыручкаИСебестоимостьПродаж, Закупки, ПрочиеРасходыНезавершенногоПроизводства (есть только в ERP и КА) (документ остается регистратором для этих регистров для обратной совместимости).

При перепроведении документов расчетные движения сохраняются, независимо от внесенных в документ изменений (Для этого в модуле набор записей обслуживаемых регистров размещен специальный код. Для примера см. модуль регистра накопления СебестоимостьТоваров - вызовы процедур этого модуля.). Изменения в документе будут учтены в расчетных движениях при перерасчете себестоимости.

Начиная с версии ERP 2.1.3 изменился алгоритм формирования и записи движений.
Теперь по каждому обслуживаемому механизмом регистру движения формируются следующим образом:

  • перед началом расчета старые расчетные движения не очищаются - они остаются в ИБ до окончания расчета;
  • новые расчетные движения, формируемые механизмом, помещаются в таблицу значений;
  • при достижении определенного размера таблицы значений или при окончании очередного этапа расчета;
  • новые движения из таблицы значений перекладываются во временную таблицу;
  • при окончании расчета сравниваются новые (из временной таблицы) и старые (из данных ИБ) движения:
    • перезаписываются движения только у тех документов, у которых есть отличия между старыми и новыми расчетными движениями;
    • только документы с перезаписанными движениями регистрируются к отражению в учете.

Данные изменения позволяют:

  • посмотреть себестоимость по документу из самого документа - отчетом "Движения документа";
  • при перерасчете себестоимости перезаписывать только реально измененные расчетные движения;
  • регистрировать к отражению в учете только документы с перезаписанными движениями (в ERP и КА).

Переход на версию ERP 2.1.3 (и соответствующие ей версии КА2 и УТ11)

При переходе на новую версию ранее сформированные расчетные движения автоматически не изменяются,
т.к. для этого нужен не простой перенос движений между регистраторами, а "эмуляция" пересчета себестоимости, что чревато...
Если запустить перерасчет старого периода, то в нем будут сформированы корректные движения по новой схеме.

Запуск расчета себестоимости.

Точкой входа в алгоритм расчета является процедура РассчитатьВсе() в которую предаются параметры:

  • период расчета - месяц;
  • возможен "облегченный" предварительный расчет себестоимости - позволяет формировать некоторые отчеты (если за указанный период уже был выполнен фактический расчет, то предварительный расчет выполняться не будет);
  • расчет выполняется или по указанному массиву организаций, или по всем организациям, связанным с указанной организацией по схеме Интеркампани (см. СвязиОрганизацийПоСхемеИнтеркампани()):
    • если организация для расчета не указана, то будет выполнен расчет по всем организациям, имеющим в указанном периоде движения по регистрам себестоимости;
    • все организации, по которым выполняется фактический расчет, должны иметь одинаковый метод оценки стоимости запасов (см. ОпределитьМетодОценкиСтоимости());
  • запуск расчета себестоимости возможен как интерактивно (из механизма закрытия месяца), так и из регламентного задания.

Оригинальное описание

// Запуск расчета себестоимости.
// (ранее - ВыполнитьРегламентноеЗаданиеРасчетСебестоимости() модуля менеджера документа расчета себестоимости)
// Параметры:
// Дата - Дата - период расчета себестоимости
// ПредварительныйРасчет - Булево - выполнять фактический или предварительный расчет;
// предварительный расчет может выполняться
// = регламентным заданием
// = как подготовительный этап к распределению расходов на продукцию
// Организация - СправочникСсылка.Организации - рассчитывать только по указанной организации;
// также будут пересчитана себестоимость по организациям, связанным по схеме Интеркампани с указанной
// - Массив - массив организаций, по которым надо рассчитать себестоимость, другие организации не рассчитываются
// РегламентноеЗадание - Булево - если Истина, значит вызвана из регламентного задания расчета предварительной себестоимости
// ПараметрыОтладки - Структура - предназначена для переопределения одноименных свойств структуры ПараметрыРасчета
// (подробнее см. пояснения в коде ИнициализироватьПараметрыРасчета() к параметру ПараметрыОтладки)

Перед расчетом для каждой организации будет сформирован документ РасчетСебестоимостиТоваров (если его еще не было) со следующим заполнением:

  • в реквизите Организация шапки документа будет указана организация, которой принадлежит данный документ;
  • в табличной части Организации будут указаны все организации, связанные с ней по схеме Интеркампани, в т.ч. и она сама:
    • до версии ERP 2.1.3 (и соответствующих ей версий КА и УТ) такого реквизита шапки не было, а документ расчета себестоимости создавался один на всю группу организаций, связанных по схеме Интеркампани (информация о документах расчета себестоимости в разрезе организаций хранится в общих параметрах расчета - во временной таблице ВТДокументыРасчетаСебестоимости и свойстве ДокументыРасчетаПоОрганизациям).

Для выполнения расчета без падения в случае возникновении ошибки, есть функция-обертка РассчитатьВсеВПопыткеИсключении() параметры аналогичны процедуре РассчитатьВсе(), но функция возвращает значение - Булево - признак успешного выполнения расчета.

Выполнение расчета себестоимости.

Непосредственный расчет выполняется в функции РассчитатьСебестоимостьПоГруппеОрганизаций()
Схематически расчет выглядит следующим образом:

  • выполняется инициализация общих параметров для всего алгоритма (см. ИнициализироватьПараметрыРасчета());
  • последовательно вызываются процедуры-этапы расчета (подробнее ниже)
    • некоторые этапы могут быть пропущены из-за настроек системы и/или параметров запуска расчета;
    • результатом выполнения этапа являются сформированные расчетные движени и/или "глобальные" временные таблицы (используемые на следующих этапах);
  • выполняется запись измененных расчетных движений;
    • запись может выполняться в несколько потоков, с использованием фоновых заданий (см. свойство "МаксимальноеКоличествоФЗ");
  • выполняется отражение измененных документов в учете.

Структура этапа расчета.

Схематически процедура-этап расчета выглядит следующим образом:

  • создается запрос выборки исходных данных для этапа; заполняются его свойства; запрос выполняется;
    • если целью этапа является только формирование "глобальных" временных таблиц, дальнейшее к нему не относит;
  • по данным запроса выполняется формирование расчетных движений по регистрам расчета себестоимости;
    • некоторые этапы движений не формируют - формируют только "глобальные" временные таблицы;
    • код формирования движений вынесен в процедуры вида СформироватьДвижения<Имя регистра><Уточнение операции>();
    • внутри этих процедур для добавления движения обязательно используется процедура ДобавитьЗаписьВТаблицуДвижений();
  • удаляются "локальные" временные таблицы, используемые только внутри этапа (см. УничтожитьВременныеТаблицы());
  • сформированные движения перекладываются из таблиц значений во временные таблицы (см. КэшироватьСформированныеДвижения());
    • при этом также выполняется обновление служебных кэшей оборотов и остатков (подробнее ниже);
    • т.о. в промежутке между выборкой исходных данных и окончанием этапа обращаться к кэшам нельзя - они не актуализированы.

Обращение к данным ИБ в запросах.

Поскольку новые расчетные движения по регистрам себестоимости записываются в ИБ только в конце расчета,
то в ходе расчета при обращении к таблицам этих регистров (реальным или виртуальным) надо соблюдать некоторые правила (касается только регистров, перечисленных в ИнициализироватьРегистры()).
1. Обороты (движения) регистра за период должны получаться объединением:

  • основной таблицы регистра с отбором "Т.РасчетСебестоимости = Ложь" (первичные движения);
  • временной таблицы ВТКэш<Имя регистра> (новые расчетные движения);

Для удобства, по некоторым регистрам эти данные автоматически кэшируются во временной таблице ВТКэшЗаписи<Имя регистра>.
Список регистров указан в свойстве "РегистрыСРасчетнымиЗаписями" общих параметров расчета.

2. Остатки регистра (для регистров остатков) на конец периода должны получаться объединением:

  • остатков регистра на начало периода;
  • основной таблицы регистра с отбором "Т.РасчетСебестоимости = Ложь" (первичные движения за период);
  • временной таблицы ВТКэш<Имя регистра> (новые расчетные движения за период).

Для удобства, по некоторым регистрам эти данные автоматически кэшируются во временной таблице ВТКэшРасчетныеОстатки<Имя регистра>.
Список регистров указан в свойстве "РегистрыСРасчетнымиОстатками" общих параметров расчета.

3. Новые движения, сформированные на предыдущих этапах расчета, хранятся во временной таблице ВТКэш<Имя регистра>.
Данная временная таблица создается для всех регистров, обслуживаемые механизмом расчета себестоимости.

Также имеются ряд дополнительных особенностей работы с запросами (причины: оптимизация, платформа и т.д.).

1. Данные, используемые для отборов во всех запросах механизма расчета, хранятся

  • в общих параметрах расчета (организации, период, значения функциональных опций и т.п.);
  • в "глобальных" временных таблицах (например, ВТОтборАналитикаПоПартнерам - см. ИнициализироватьВременныеТаблицыДляОтборов()).

Для установки этих параметров используется универсальная процедура ИнициализироватьСвойстваЗапроса()
В результате, все запросы механизма расчета гарантировано используют одинаковые отборы.
Эта же процедура устанавливает запросу общий менеджер временных таблиц, в котором хранятся все перечисленные выше таблицы кэшей.

2. Существует ошибка Платформы 30025997, в результате которой возникают проблемы с полем ВидДвижения во временных таблицах.
Для обхода ошибки во всех временных таблицах вида ВТКэш, ВТКэшЗаписи, ВТКэшРасчетныеОстатки
вместо стандартного поля ВидДвижения хранится техногенное поле СлужебноеВидДвиженияПриход с типом "Булево" алгоритм работы с ним следующий:

  • в запросах к этим временным таблицам следует обращаться только к полю СлужебноеВидДвиженияПриход;
  • в таблицах значений, в которых предварительно накапливаются новые расчетные записи, есть только стандартное поле ВидДвижения;
  • преобразование поля между таблицей значения и временной таблицей выполняется автоматически, дополнительных действий не требуется.

Отладка и поиск проблем.

Для облегчения разработки, тестирования и поиска проблем реализован механизм протоколирования расчета (см. процедуры вида ПротоколРасчета_...) который отрабатывается по следующим шагам:

  • при начале очередного этапа расчета в журнал регистрации делает запись - для отслеживания прогресса выполнения расчета;
  • при окончании расчета в журнал регистрации выводится подробный протокол расчета.

Также реализована возможность переопределения некоторых параметров расчета (см. РассчитатьВсе(), параметр ПараметрыОтладки).

P.S. Данная статья наиболее полезной будет для программистов. За её основу былим взяты комментарии программистов 1С в решении 1С: Предприятие: "Управление торговлей" редакции 11.2.3.

Понравилась статья? Поделитесь с друзьями!