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

💖 Нравится? Поделись с друзьями ссылкой

В этой статье рассматриваются следующие темы:

  • Как расчитывается себестоимость ТМЦ по средней стоимости и методом ФИФО;
  • Как учитываются складские перемещения в УТ 11;
  • Какие существуют варианты расчёта себестоимости в УТ 11.

Как расчитывается себестоимость

Расчет по средней себестоимости

В УТ 11 расчет стоимости выбытия товаров по средней себестоимости выполняется по итогам месяца (средневзвешенная себестоимость). Это означает, что при расчете себестоимости выбывших товаров учитываются все поступления за месяц. При этом учитываются остатки товаров на начало месяца. Таким образом,

СтоимостьЕдиницы Товара = (ОстатокТовараНаНачалоМесяцаВСтоимостнойОценке + СтоимостьЗакупокТовараЗаМесяц) / (КоличествоНачальногоОстатка +КоличествоПоступления)

Различия в расчёте себестоимости в УТ 10.3 и УТ 11

В УТ 10.3 применяется классический партионный учет по методу ФИФО. При этом в системе хранится информация о стоимости каждой партии поступившего товара. Метод ФИФО предполагает, что при выбытии товара нужно списывать количество и стоимость товара последовательно с самых ранних, по времени поступления, партий.

В УТ 11 расчет себестоимости выполняется по методу ФИФО и основывается на положении бухгалтерского учета (ПБУ) "Учет материально - производственных запасов ПБУ 5/01". В соответствии с этим, вычисляется остаток товара на складе в количественном выражении. Далее, определяется стоимостная оценка остатка на конец месяца, которая соответствует расчету стоимости по методу ФИФО. Для этого количество и стоимость остатка товара собирается последовательно из последних, по времени поступления, партий, так как расчет по методу ФИФО подразумевает, что первые партии уже списаны. Затем определяется количество товара, выбывшего со склада за месяц. Определяется стоимость поступлений товара за месяц с учетом стоимости начального остатка и из этой величины вычитается стоимость остатка на конец месяца, вычисленная по методу ФИФО. Полученная величина обозначает стоимость списания товара за месяц. Стоимость списания единицы товара определяется как стоимость списания товара за месяц, деленная на количество товара, выбывшего за месяц. Себестоимость каждой отгрузки вычисляется как произведение стоимости единицы товара на количество списываемого товара.

Аналитика в себестоимости

Расчет себестоимости товаров в УТ 11 осуществляется в разрезе следующих аналитик:

  • Организация, склад;
  • Номенклатура, характеристика номенклатуры;
  • Ряд других аналитик.

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

СтоимостьОстатковТоваровНаКонецМесяца = СтоимостьПоступленийЗаМесяц + СтоимостьНачальныхОстатков - СтоимостьСписанияЗаМесяц

Перед тем, как составить СЛУ, система вычисляет суммовой остаток, который должен остаться на складе по методу ФИФО. При этом стоимостная оценка остатка определяется по последним партиям.

Особенности расчета себестоимости

В расчете себестоимости по методу ФИФО в УТ 11 существуют некоторые особенности:

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

Плюсы и минусы методики

В сравнении с классическим партионным учетом в УТ 10.3 расчет себестоимости по методу ФИФО в УТ 11 имеет плюсы и минусы.

  • Система не чувствительна к порядку ввода документов поступления и реализации ;
  • Существенно сокращено время расчета себестоимости и закрытия периода;
  • Исключены махинации менеджеров со временем проведения документов за счет усреднения стоимости списанных товаров в рамках всех документов месяца.
  • Отсутствие возможности партионной оценки после проведения документа реализации;
  • Отсутствие возможности мгновенной оценки валовой прибыли при проведении документа реализации.

Как учитываются складские перемещения в УТ 11

В УТ 11 под складом понимается определенная территория, на которой хранится товар. Склад может быть представлен в виде стеллажей, полок и ячеек, предназначенных для хранения товаров. При этом система может вести учет товаров в каждой ячейке (адресный склад). Справочник "Склады (складские территории)" является иерархическим . Для группы складов можно настроить выбор этой группы в заказах и накладных на поступление (отгрузку) товаров. Если в одном документе поступления (отгрузки) необходимо учитывать операции по нескольким складам, то эти склады нужно поместить в группу складов. Если склады входят в разные группы (не связанные по иерархии), то проведение с ними групповых операций невозможно.

Для отражения операции перемещения ТМЦ с одного склада на другой предназначен документ "Перемещение товаров", который выполняет движения по регистру “Себестоимость товаров” в количественном выражении. Стоимостная оценка устанавливается документом "Расчет себестоимости товаров". Кроме этого осуществляются движения по регистрам Товары организаций, Товары на складах, Свободные остатки.

Какие существуют варианты расчёта себестоимости в УТ 11

В документе "Расчет себестоимости товаров" можно выбрать два варианта расчета:

  • Предварительный,
  • Фактический.

Предварительный расчёт себестоимости

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

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

Фактический расчёт себестоимости

После завершения месяца документ "Расчет себестоимости товаров" проводится с вариантом расчета “Фактический”. В этом варианте осуществляется расчет стоимости выбытия товаров и остатков товаров на складах. Дополнительные расходы распределяются на себестоимость товаров. Расчет себестоимости с вариантом расчета Фактический можно выполнять многократно в течение месяца при отсутствии проблем с производительностью информационной системы .

Заключительные замечания

Обычно в предприятиях, за редким исключением, документы не поспевают за реальными торговыми операциями и, как правило, вводятся в систему учёта задним числом, исправляются, перепроводятся и т. д. При большом товарообороте восстановление последовательности документов в УТ 10.3, расчёт себестоимости и закрытие периода требует значительных затрат. Преимущество УТ 11 в этих операциях может оказаться решающим фактором в выборе системы учёта предприятиями торговли, особенно для тех, кому для управленческого учёта важно получать результаты, независящие от порядка ввода документов поступления и продажи товаров.

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

Примечание. Себестоимость рассчитывается для каждого склада отдельно.

  • Средняя за месяц себестоимость рассчитывается на конец месяца. Каждый товар в течение месяца получает одинаковую себестоимость. Формула расчета следующая:

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

  • ФИФО взвешенная оценка рассчитывается для определения стоимости остатка по следующей формуле.

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

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

Практика осуществления расчета себестоимости в 1С:УТ 11.1:

Способ первый. Самый простой — в конце каждого месяца формировать документ «Продажи — Документы расчета себестоимости товаров».

Способ второй. Через «Администрирование — Поддержка и обслуживание — Регламентные и фоновые задания — Расчет себестоимости — Выполнить сейчас». Также можно настроить регламентное задание на автоматическое выполнение 1 раз в месяц.

Рис. 1


Рис. 2

Как выполнить процедуру расчета себестоимости:

1. По ячейке с красной цифрой нажмите правой кнопкой мыши (в колонке "Валовая прибыль"), далее "Расшифровать". Там вам необходимо выбирать "Регистратор" — видно, какими документами были движения осуществлены.

2. Смотрим по регистру накопления через меню:

«Меню» — «Сервис» — «Параметры» — «Отображать меню «Все функции»»;

Заходим в меню «Все функции» — «Регистры накопления» — «Товары на складах (или товары организации), или «Себестоимость товаров».

Если выполнить отбор по номенклатуре и характеристике, то будет видно, за какую цену было куплено (документ «Поступление товаров и услуг», или ввод нач. остатков), и за какую продано;

Рис. 3


Рис. 4


Рис. 5

Примечание. Валюты делятся в 1С:УТ на валюту управленческого и регламентного учета в основном для формирования бухгалтерских документов в программе: книга покупок и продаж и пр., но если они одинаковые (рубли), то разницы не будет в отчетах, в зависимости от выбора валюты.

Назад Вверх

После проведения отгрузки товаров в движениях документа по регистрам «Себестоимость товаров» и «Выручка и себестоимость продаж» не заполнены ресурсы по себестоимости товара. И, естественно, отчеты по анализу себестоимости так же не выводят данных. Все это объясняется тем, что в УТ 11 расчет себестоимости происходит в отдельном документе, который так и называется «Расчет себестоимости товаров». Найти его можно в разделе Финансы – Регламентные документы. В этом документе есть 2 варианта расчета себестоимости – ПРЕДВАРИТЕЛЬНЫЙ (предназначен для получения плановой себестоимости. Расчет всегда происходит по среднему без учета дополнительных расходов) и ФАКТИЧЕСКИЙ (при этом метод оценки стоимости товаров можно указать либо по средней за месяц, либо FIFO.

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

Ну, а теперь непосредственно к схеме расчета себестоимости в УТ 11. Как я уже отмечал, в УТ 11 применяются 2 метода расчета себестоимости – по средневзвешенной и FIFO.

Расчет себестоимости по среднему выполняется по итогам месяца. Формула расчета довольно простая – необходимо остаток товара в стоимостной оценки на начало месяца + стоимость закупок товара и разделить это на количество начального остатка + количество поступления.

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

Расчет себестоимости в УТ 11 осуществляется в разрезе аналитик учета: Организация, Склад, Номенклатура, Характеристика номенклатуры, Поставщик, Сделка, Подразделение и пр. Из этого следует, что себестоимость одной номенклатуры на разных складах может отличаться или номенклатуры, имеющей разные характеристики (даже цвет, особенно если товары разных цветов закупались у разных поставщиков). Кстати, можно не вести учет себестоимости в разрезе видов запасов. Для этого необходимо снять флажок «Обособленный учет» в разделе Администрирование – Финансы. Для расчета себестоимости для каждой аналитики составляется линейное уравнение, таким образом, получается система линейных уравнений (СЛУ).

Рассмотрим несколько примеров:

Пример 1.

В течении месяца на склад поступал товар в количестве 50 шт. на сумму 20 000 руб. и количестве 30 шт. на сумму 18 000 руб. от одного поставщика. Было 2 реализации в количестве 18 и 14 шт. данного товара. На начало месяца остаток товара составил 2 шт. на сумму 1 000 руб. Перед тем, как составить СЛУ система сначала рассчитывает конечные остатки. В нашем случае получается 50 шт. (2 + 50 + 30 – 18 – 14).

26 000 = 1 000 + 20 000 + 18 000 – 18х – 14х, где х – средняя себестоимость одной единицы товара

Решение уравнения:

Итак, себестоимость первой отгрузки – 406,25 * 18 = 7 312,50, а второй – 5 687,50. А теперь более сложный пример.

Пример 2.

Но хочу отметить, что такое распределение видов запасов на практике работает не всегда. Дело в том, что при проведении отгрузки система берет данные об аналитике расхода из регистра сведений «Даты поступления товаров организация», где происходит группировка по поставщику и дата выбирается максимальная. А так же при первичном проведении документа поступления товаров добавляется запись в регистр сведений, но при изменении даты документа и повторном проведении документа, запись в этом регистре не обновляется. Поэтому удобно пользоваться отчетом «Анализ себестоимости товаров» (он находится в разделе Финансы – Отчеты по финансам), и либо расшифровкой, либо изменением варианта отчета путем добавления группировок по поставщику (кому как удобнее) просмотреть аналитику расходных накладных. Также можно просмотреть данные о видах запасов непосредственно в документе отгрузки, нажав кнопку «Открыть виды запасов».

0 = 15 000 – 9ХСаПп – 5ХСаПп – 1ХСаПп, где ХСаПп - средняя себестоимость одной единицы товара на складе А поставщика «ООО Политекст»

1ХСбПп = 1ХСаПп,где ХСбПп - средняя себестоимость одной единицы товара на складе Б поставщика «ООО Политекст»

Главная 1С:ERP Управление предприятием 2 Управление затратами и расчет себестоимости

Себестоимость выпуска продукции

Расчет себестоимости – обязательный шаг для формирования финансового результата предприятия.

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

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

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

Себестоимость продукции является важнейшим показателем производственно-хозяйственной деятельности предприятия. Исчисление себестоимости необходимо для следующих целей:

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

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

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

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

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

Начиная с версии 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.

Рассказать друзьям