При переходе на новые релизы технологической платформы 1С:Предприятие, особенно на такие значимые версии, как 8.3.25, администраторы и пользователи могут столкнуться с неожиданным поведением системы. Одной из распространенных проблем является появление ошибок вида «Поле объекта не обнаружено» при обращении к ресурсам конфигурации (картинкам, макетам) или методам общих модулей сразу после обновления.
В данной статье мы подробно разберем ситуацию, возникающую в конфигурации «1С:Розница» (редакция 2.3), когда после обновления платформы перестает запускаться Рабочее Место Кассира (РМК) и возникают критические ошибки при старте системы — для этой задачи подойдёт централизованное управление РМК и расширениями в 1С. Мы проанализируем технические причины этого сбоя и рассмотрим пошаговое решение проблемы.
Рассмотрим типичную картину сбоя. После обновления платформы (например, до версии 8.3.25.1286) при запуске клиентского приложения или открытии определенных форм пользователи получают сообщения об ошибках. Для этой задачи есть универсальный инструмент администратора для анализа объектов и процессов.
Ошибка 1: Отсутствие графических ресурсов
Первая группа ошибок указывает на невозможность найти элементы в БиблиотекаКартинок. Текст ошибки выглядит следующим образом:
Поле объекта не обнаружено (Вопрос32)
{ОбщийМодуль.СтандартныеПодсистемыКлиент.Модуль(180)}:
Параметры.Вставить("Картинка", БиблиотекаКартинок.Вопрос32);
Или аналогичная ошибка при открытии РМК, в котором могут быть настроены электронные чеки по умолчанию:
Поле объекта не обнаружено (ВвестиДанныеПокупателя)
{Обработка.РабочееМестоКассира.Форма.ФормаРМК.Форма(12380)}:
Элементы.ВвестиДанныеПокупателя.Картинка = БиблиотекаКартинок.ВвестиДанныеПокупателя;
Система сообщает нам, что в коллекции картинок отсутствуют элементы Вопрос32 или ВвестиДанныеПокупателя, хотя в коде конфигурации к ним идет прямое обращение (например, при попытке выполнить редактирование цены в РМК). Это явный признак рассинхронизации: код «знает», что картинка должна быть, но платформа в текущем контексте её «не видит».
Ошибка 2: Сбой при инициализации системы
Вторая группа ошибок часто сопровождает первую и блокирует вход в программу:
Возникла исключительная ситуация при запуске программы:
Метод объекта не обнаружен (ПриНачалеРаботыСистемы)
{ОбщийМодуль.СтандартныеПодсистемыКлиент.Модуль(1460)}:
ТекущийМодуль.ПриНачалеРаботыСистемы(Параметры);
Здесь проблема возникает в процедуре общего модуля. Платформа пытается вызвать экспортный метод ПриНачалеРаботыСистемы, но не находит его в скомпилированной версии модуля.
Прежде чем переходить к устранению, давайте разберемся, почему это происходит. Данная проблема не является ошибкой кода конфигурации «1С:Розница», а лежит в плоскости взаимодействия платформы с кэшированными данными.
ПриНачалеРаботыСистемы часто указывает на наличие установленных исправлений (патчей) или расширений, которые были скомпилированы под старую версию платформы и некорректно перехватывают управление в новой среде.Важно отметить, что обычная очистка пользовательского кэша (папки AppData на компьютере пользователя) в данном случае часто не помогает, так как проблема находится на уровне сервера или скомпилированных данных конфигурации базы данных.
Для устранения описанных ошибок необходимо выполнить принудительную перегенерацию кэша метаданных. Поскольку проблема чаще всего проявляется в клиент-серверном варианте, начнем с него.
Это наиболее действенный метод, который решает проблему отсутствия картинок и методов объектов, возникающую глобально для всех пользователей.
Выполним следующие действия:
service srv1cv8 stop в Linux.srvinfo).
Путь по умолчанию в Windows: C:\Program Files\1cv8\srvinfo.
Путь по умолчанию в Linux: /home/usr1cv8/.1cv8/1C/1cv8/ (может отличаться в зависимости от настроек).
srvinfo найдите папку, соответствующую нужному реестру кластера (обычно reg_1541).snccntx) хранятся временные данные сеансов.snccntx. В этой папке хранятся сеансовые данные (Session Context). Удаление этих файлов заставит сервер пересоздать контекст при следующем запуске.После запуска службы первый вход в базу может занять чуть больше времени, так как сервер будет заново компилировать модули и кэшировать метаданные.
Если ваша база данных работает в файловом режиме (без использования SQL-сервера), понятия «серверный кэш» в чистом виде не существует, но механизмы кэширования все равно работают. Если вы столкнулись с подобной ошибкой в файловой базе, выполните следующие действия:
Удалите информационную базу из списка запуска 1С у пользователя, где наблюдается ошибка. Затем добавьте её снова. Это сбросит привязку к локальному кэшу данного пользователя по уникальному идентификатору (UID) базы.
Запустите Конфигуратор. Выберите меню Администрирование -> Тестирование и исправление.
Установите флаги:
Нажмите «Выполнить». Эта процедура гарантированно обновит внутреннюю структуру базы под требования новой платформы.
Если после очистки кэша ошибка Метод объекта не обнаружен (ПриНачалеРаботыСистемы) сохраняется, проблема, вероятнее всего, кроется в несовместимых патчах.
Проанализируем ситуацию:
EF_....Часто для решения проблемы достаточно зайти в конфигурацию расширения и просто пересохранить его, чтобы оно перекомпилировалось под новую версию платформы.
Чтобы избежать подобных ситуаций в будущем, рекомендуем придерживаться следующего регламента при обновлении платформы на мажорные версии (например, с 8.3.22 на 8.3.25):
snccntx, чтобы избежать конфликтов старых сеансовых данных с новым исполняемым файлом rphost.Применяя эти методы, вы сможете восстановить работоспособность рабочего места кассира и устранить ошибки запуска программы.