При переходе на новую версию конфигурации, особенно такой крупной, как 1С:Управление торговлей (УТ) 11.5, пользователи часто сталкиваются с изменениями в привычных механизмах. Одним из таких важных изменений является способ расчета себестоимости товаров. Рассмотрим ситуацию, когда после обновления с УТ 11.4 на УТ 11.5.8.221 возникли сложности с перерасчетом себестоимости за прошлый период, в частности за сентябрь, при этом в системе отключен партионный учет.
Наш пользователь сталкивается с тем, что документы "Расчет себестоимости", сформированные за нужный период, невозможно перепровести вручную – командная панель документа неактивна. Попытка запуска регламентного задания "Расчет предварительной себестоимости товаров" завершается сообщением "задание выполнено", но фактического расчета не происходит, и регистры стоимости товаров остаются незаполненными. Разберем эту проблему по шагам и выясним, как ее решить.
В конфигурации 1С:Управление торговлей версии 11.5 произошли существенные изменения в подходах к расчету себестоимости по сравнению с предыдущими версиями, например, УТ 11.4. Наиболее значимые из них:
Себестоимость товаров, где учет по партиям ведется для организаций с методом оценки запасов ФИФО. Рекомендуется использовать партионный учет версии 2.2, который является критически важным для соблюдения методологии.Расчет себестоимости товаров теперь создаются и проводятся автоматически регламентной операцией "Закрытие месяца". Мы не можем вручную перепровести эти документы, что и наблюдает наш пользователь – командная панель неактивна. Это означает, что для пересчета себестоимости нужно запускать именно "Закрытие месяца".Исходя из вышеизложенных изменений, рассмотрим последовательность действий для пересчета себестоимости за прошлый период.
Прежде всего, нам необходимо понять, что ручное перепроведение документов Расчет себестоимости больше не является способом управления процессом. Для пересчета себестоимости в прошлом периоде мы должны запустить окончательное закрытие месяца за этот период через соответствующую обработку.
В этот момент программа должна выполнить все необходимые расчеты, включая расчет себестоимости и перепроведение документов Расчет себестоимости товаров. Однако, наш пользователь столкнулся с ошибкой.
При попытке запустить окончательное закрытие месяца, наш пользователь получил сообщение об ошибке:
Поле объекта не обнаружено ПроверятьСоответствиеПрочихРасходовИПартийПрочихРасходов
Эта ошибка возникает в коде, который пытается проверить соответствие прочих расходов и партий. Проанализируем ее причину. Как правило, такие ошибки возникают после обновления конфигурации, когда система обращается к полям или методам, которые были удалены, переименованы или изменены в новой версии. В нашем случае, ошибка появляется в блоке кода, где программа проверяет специальный технологический параметр:
//----------------------
Если ПараметрыПроверки.ДополнительныеПараметры.РежимЗакрытияМесяца = Перечисления.РежимыЗакрытияМесяца.ПредварительноеЗакрытие Тогда
Возврат;
КонецЕсли;
ЗначенияПараметров = РасчетСебестоимостиПовтИсп.ЗначенияТехнологическихПараметров();
// Проверка выполняется если явно включен соответствующий технологический параметр.
Если НЕ ЗначенияПараметров.ПроверятьСоответствиеПрочихРасходовИПартийПрочихРасходов Тогда
Возврат;
КонецЕсли;
//----------------------------------------
Причина этой ошибки, скорее всего, кроется в отключенном партионном учете. Механизмы УТ 11.5, в отличие от 11.4, очень сильно завязаны на партионном учете для корректного расчета себестоимости. Когда партионный учет отключен, система не может найти или корректно интерпретировать параметр ПроверятьСоответствиеПрочихРасходовИПартийПрочихРасходов, который явно связан с партиями и их расходами. В результате, программа выдает ошибку "Поле объекта не обнаружено".
Поскольку партионный учет отключен, и система не может найти требуемый параметр, мы можем временно "обмануть" программу, чтобы она не пыталась выполнять эту проверку. Наш пользователь применил следующее обходное решение:
РасчетСебестоимостиПовтИсп или аналогичный.ЗначенияПараметров.ПроверятьСоответствиеПрочихРасходовИПартийПрочихРасходов), добавьте безусловный возврат из процедуры или закомментируйте проблемную проверку.Пример модификации кода, чтобы избежать вызова проблемного параметра:
Было:
//----------------------------------------
ЗначенияПараметров = РасчетСебестоимостиПовтИсп.ЗначенияТехнологическихПараметров();
// Проверка выполняется если явно включен соответствующий технологический параметр.
Если НЕ ЗначенияПараметров.ПроверятьСоответствиеПрочихРасходовИПартийПрочихРасходов Тогда
Возврат;
КонецЕсли;
//----------------------------------------
Стало (пример обходного решения - внимание, это изменение типового кода!):
//----------------------------------------
// Внимание: Этот код изменен для обхода ошибки при отключенном партионном учете в УТ 11.5
// ЗначенияПараметров = РасчетСебестоимостиПовтИсп.ЗначенияТехнологическихПараметров();
// Если НЕ ЗначенияПараметров.ПроверятьСоответствиеПрочихРасходовИПартийПрочихРасходов Тогда
// Возврат;
// КонецЕсли;
Возврат; // Безусловный возврат, чтобы избежать ошибки.
//----------------------------------------
После такой модификации, программа больше не будет обращаться к неопределенному параметру, и расчет себестоимости может быть продолжен.
Важно: Любое изменение типового кода конфигурации сопряжено с рисками и может вызвать проблемы при последующих обновлениях. Мы настоятельно рекомендуем перед любыми изменениями создавать резервную копию информационной базы. Данный workaround является временным решением для обхода конкретной ошибки, возникшей из-за неполного соответствия настроек конфигурации (отключенный партионный учет) и ожиданий обновленного функционала УТ 11.5.
После применения workaround, мы можем повторно запустить окончательное закрытие месяца за нужный период из обработки "Закрытие месяца". Теперь, когда ошибка, связанная с проверкой партий, обойдена, система должна успешно выполнить расчет себестоимости и провести все необходимые документы.
Пользователь подтвердил, что после этой "гнусной надругательства над программой" расчет себестоимости выполняется, и документ РасчетСебестоимости перепроводится, заполняя регистры данных.
Мы выяснили, что в УТ 11.5 отказ от партионного учета может привести к серьезным проблемам с расчетом себестоимости. Даже если вам не требуется сложный многофирменный учет (МФУ) или детальный учет по партиям для специфических нужд, базовый механизм расчета себестоимости в УТ 11.5 тесно интегрирован с партионным учетом.
Товары организации. Наличие таких остатков может привести к некорректному расчету.Итак, для успешного пересчета себестоимости в прошлом периоде в УТ 11.5 при отключенном партионном учете, нам потребовалось использовать механизм окончательного закрытия месяца и применить workaround для обхода специфической ошибки, связанной с отсутствием параметров партионного учета. Этот опыт подчеркивает важность понимания новых архитектурных решений в 1С:УТ 11.5.