Как пересчитать себестоимость в прошлом периоде в 1С:УТ 11.5 при отключенном партионном учете и ошибке при закрытии месяца?

Программист 1С v8.3 (Управляемые формы) 1С:Управление торговлей Управленческий учет Торговля и дистрибуция
← На главную

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

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

Изменения в механизмах расчета себестоимости в УТ 11.5

В конфигурации 1С:Управление торговлей версии 11.5 произошли существенные изменения в подходах к расчету себестоимости по сравнению с предыдущими версиями, например, УТ 11.4. Наиболее значимые из них:

  1. Отсутствие "предварительного расчета себестоимости" как отдельного механизма: В УТ 11.5 привычное отдельное регламентное задание "Расчет предварительной себестоимости" было упразднено. Основная логика расчета себестоимости теперь полностью интегрирована в процесс "Закрытия месяца". Даже если вы видите регламентное задание с похожим названием, его функциональность может быть сильно изменена и не приводить к ожидаемому результату без полного цикла закрытия месяца.
  2. Ключевая роль "Закрытия месяца": Весь процесс формирования фактической себестоимости, распределения дополнительных расходов, актуализации движений регистров партионного учета и себестоимости, а также формирование отложенных движений теперь выполняется строго в рамках обработки "Закрытие месяца".
    • Предварительное закрытие месяца: Этот этап предназначен для получения ориентировочной себестоимости и распределения некоторых расходов до завершения месяца.
    • Окончательное закрытие месяца: Это основная и обязательная процедура для формирования фактической себестоимости. Именно она выполняет весь комплекс регламентных операций, которые влияют на стоимость товаров.
  3. Важность партионного учета: В УТ 11.5 партионный учет является фундаментальным для корректного расчета себестоимости. Если партионный учет отключен, это может быть основной причиной некорректной работы механизмов расчета, даже если регламентные задания формально выполняются. Механизм учета основан на использовании регистра оперативного учета Себестоимость товаров, где учет по партиям ведется для организаций с методом оценки запасов ФИФО. Рекомендуется использовать партионный учет версии 2.2, который является критически важным для соблюдения методологии.
  4. Автоматическое формирование документов "Расчет себестоимости": Документы Расчет себестоимости товаров теперь создаются и проводятся автоматически регламентной операцией "Закрытие месяца". Мы не можем вручную перепровести эти документы, что и наблюдает наш пользователь – командная панель неактивна. Это означает, что для пересчета себестоимости нужно запускать именно "Закрытие месяца".

Шаги по решению проблемы

Исходя из вышеизложенных изменений, рассмотрим последовательность действий для пересчета себестоимости за прошлый период.

1. Инициируем окончательное закрытие месяца

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

  1. Откройте обработку "Закрытие месяца".
  2. Выберите необходимый период (в нашем случае, сентябрь).
  3. Запустите операцию "Окончательное закрытие месяца".

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

2. Анализируем и обходим ошибку "Поле объекта не обнаружено ПроверятьСоответствиеПрочихРасходовИПартийПрочихРасходов"

При попытке запустить окончательное закрытие месяца, наш пользователь получил сообщение об ошибке:

Поле объекта не обнаружено ПроверятьСоответствиеПрочихРасходовИПартийПрочихРасходов

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


//----------------------
Если ПараметрыПроверки.ДополнительныеПараметры.РежимЗакрытияМесяца = Перечисления.РежимыЗакрытияМесяца.ПредварительноеЗакрытие Тогда
    Возврат;
КонецЕсли;
    
ЗначенияПараметров = РасчетСебестоимостиПовтИсп.ЗначенияТехнологическихПараметров();
    
// Проверка выполняется если явно включен соответствующий технологический параметр.
Если НЕ ЗначенияПараметров.ПроверятьСоответствиеПрочихРасходовИПартийПрочихРасходов Тогда
    Возврат;
КонецЕсли;
//----------------------------------------

Причина этой ошибки, скорее всего, кроется в отключенном партионном учете. Механизмы УТ 11.5, в отличие от 11.4, очень сильно завязаны на партионном учете для корректного расчета себестоимости. Когда партионный учет отключен, система не может найти или корректно интерпретировать параметр ПроверятьСоответствиеПрочихРасходовИПартийПрочихРасходов, который явно связан с партиями и их расходами. В результате, программа выдает ошибку "Поле объекта не обнаружено".

3. Применяем workaround (обходное решение)

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

  1. Откройте конфигурацию в режиме Конфигуратор.
  2. Найдите процедуру или функцию, в которой возникает ошибка (она будет указана в полном тексте ошибки). Судя по коду, это, вероятно, один из модулей, связанных с расчетом себестоимости, например, РасчетСебестоимостиПовтИсп или аналогичный.
  3. Перед вызовом строки, которая вызывает ошибку (ЗначенияПараметров.ПроверятьСоответствиеПрочихРасходовИПартийПрочихРасходов), добавьте безусловный возврат из процедуры или закомментируйте проблемную проверку.

Пример модификации кода, чтобы избежать вызова проблемного параметра:

Было:


//----------------------------------------
ЗначенияПараметров = РасчетСебестоимостиПовтИсп.ЗначенияТехнологическихПараметров();
    
// Проверка выполняется если явно включен соответствующий технологический параметр.
Если НЕ ЗначенияПараметров.ПроверятьСоответствиеПрочихРасходовИПартийПрочихРасходов Тогда
    Возврат;
КонецЕсли;
//----------------------------------------

Стало (пример обходного решения - внимание, это изменение типового кода!):


//----------------------------------------
// Внимание: Этот код изменен для обхода ошибки при отключенном партионном учете в УТ 11.5
// ЗначенияПараметров = РасчетСебестоимостиПовтИсп.ЗначенияТехнологическихПараметров();
// Если НЕ ЗначенияПараметров.ПроверятьСоответствиеПрочихРасходовИПартийПрочихРасходов Тогда
//     Возврат;
// КонецЕсли;
Возврат; // Безусловный возврат, чтобы избежать ошибки.
//----------------------------------------

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

Важно: Любое изменение типового кода конфигурации сопряжено с рисками и может вызвать проблемы при последующих обновлениях. Мы настоятельно рекомендуем перед любыми изменениями создавать резервную копию информационной базы. Данный workaround является временным решением для обхода конкретной ошибки, возникшей из-за неполного соответствия настроек конфигурации (отключенный партионный учет) и ожиданий обновленного функционала УТ 11.5.

4. Повторный запуск окончательного закрытия месяца

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

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

Дополнительные рекомендации и выводы

Мы выяснили, что в УТ 11.5 отказ от партионного учета может привести к серьезным проблемам с расчетом себестоимости. Даже если вам не требуется сложный многофирменный учет (МФУ) или детальный учет по партиям для специфических нужд, базовый механизм расчета себестоимости в УТ 11.5 тесно интегрирован с партионным учетом.

  1. Рассмотрите включение партионного учета: Если вы планируете долгосрочную и корректную работу с УТ 11.5, мы рекомендуем изучить возможность включения и настройки партионного учета версии 2.2. Это может потребовать дополнительных усилий по настройке и переходу, но обеспечит стабильную работу типового функционала.
  2. Проверьте отрицательные остатки: Перед запуском любого расчета себестоимости убедитесь, что в расчетном периоде отсутствуют отрицательные остатки по регистру Товары организации. Наличие таких остатков может привести к некорректному расчету.
  3. Актуализация платформы: Убедитесь, что используемая вами версия платформы 1С:Предприятие 8.3 соответствует рекомендациям для вашей версии конфигурации УТ 11.5. Иногда ошибки "Поле объекта не обнаружено" могут быть связаны с устаревшей версией платформы.

Итак, для успешного пересчета себестоимости в прошлом периоде в УТ 11.5 при отключенном партионном учете, нам потребовалось использовать механизм окончательного закрытия месяца и применить workaround для обхода специфической ошибки, связанной с отсутствием параметров партионного учета. Этот опыт подчеркивает важность понимания новых архитектурных решений в 1С:УТ 11.5.

← На главную