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