Как исправить ошибку «Поле объекта не обнаружено» при оформлении отпусков в 1С:ЗУП 3.1.8

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

Приветствуем вас, уважаемые коллеги! Обновление конфигурации в экосистеме «1С:Предприятие» — это процедура, которая регулярно требует от администраторов и программистов предельной концентрации. Одним из наиболее резонансных сбоев в линейке конфигураций 1С:Зарплата и управление персоналом 3.1 стал массовый сбой при оформлении отпусков после перехода на релиз 3.1.8.112 (и смежные версии ветки 3.1.8).

Пользователи при попытке добавить сотруднику дополнительный или основной отпуск в документе Отпуск внезапно сталкивались с системной ошибкой «Поле объекта не обнаружено». При этом ошибка вела себя непредсказуемо: появлялась спонтанно у разных пользователей, блокировала работу кадровой службы, а затем могла на время «исчезнуть» без видимых причин.

В этой статье мы подробно разберем, почему возникает этот сбой, как устроены механизмы кэширования платформы «1С:Предприятие 8.3» в контексте обновления метаданных и какими методами можно раз и навсегда решить эту проблему на вашем сервере.

Выясняем причину: почему возникает ошибка в ЗУП 3.1.8?

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

В версии ЗУП 3.1.8 разработчики фирмы «1С» провели масштабную реструктуризацию кадрового учета и механизмов расчета среднего заработка. Были изменены многие внутренние реквизиты документов, скорректирована логика вытеснения начислений и алгоритмы работы с НДФЛ. Если платформа или конкретный пользовательский сеанс продолжают использовать устаревшую структуру метаданных, обращение к новым механизмам неизбежно вызывает критический сбой.

Главная коварность этой проблемы заключается в её «плавающем» характере. Это классический симптом рассинхронизации серверного и клиентского кэша. Рассмотрим основные факторы, провоцирующие ошибку:

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

Перейдем к пошаговому рассмотрению методов решения этой проблемы — от простых и быстрых к более радикальным и надежным.

Способ 1. Быстрый перезапуск службы сервера 1С:Предприятия

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

Рассмотрим по шагам, как это сделать:

  1. Откройте консоль управления службами Windows (команда services.msc в строке «Выполнить»).
  2. Найдите в списке службу Агент сервера 1С:Предприятия 8.3 (или соответствующую вашей версии платформы).
  3. Нажмите правой кнопкой мыши по службе и выберите пункт «Перезапустить».

Обратите внимание, что этот метод прервет активные сеансы всех пользователей, работающих в данный момент на этом сервере. Метод временно устраняет проблему (ошибка «отмирает»), но для полного исключения ее повторного появления необходимо выполнить глубокую очистку кэша.

Способ 2. Глубокая очистка серверного кэша метаданных базы данных

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

Разберем по шагам алгоритм безопасной очистки серверного кэша:

  1. Запустите утилиту «Администрирование серверов 1С Предприятия» и найдите вашу информационную базу. Откройте её свойства и запишите её уникальный идентификатор (UID базы, выглядит как буквенно-цифровой код в фигурных скобках).
  2. Остановите службу Агент сервера 1С:Предприятия через консоль служб Windows.
  3. Перейдите в каталог хранения данных сервера. По умолчанию в Windows это путь:

    C:\Program Files\1cv8\srvinfo\reg_1544\ (номер порта может отличаться).

  4. Найдите папку, имя которой совпадает с UID вашей информационной базы, и зайдите в неё.
  5. Внутри этой папки вы увидите системные каталоги с именами формата snccntry, snccntry.00000000 и аналогичные временные файлы сеансовых данных. Удалите эти папки. Саму базу данных или файл журнала регистрации (папку 1Cv8Log) трогать не нужно!
  6. Запустите службу Агент сервера 1С:Предприятия заново. При первом обращении пользователей к базе сервер заново сформирует чистый кэш метаданных.

Способ 3. Очистка локального кэша на стороне пользователей

В некоторых случаях устаревшие формы документов и модули кэшируются локально на компьютерах конечных пользователей. Техническая поддержка фирмы «1С» при возникновении подобных спонтанных ошибок рекомендует перерегистрировать базу в списке запуска стартера 1С.

Для быстрой индивидуальной очистки выполните следующие действия:

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

Если пользователей много, целесообразно настроить автоматическое удаление локального кэша. Для этого в свойствах подключения к базе в окне запуска в поле «Дополнительные параметры запуска» пропишите специальный ключ:

/ClearCache

Этот параметр заставляет тонкий или толстый клиент принудительно очищать кэш метаданных при каждом открытии сеанса.

Также вы можете воспользоваться командным файлом (скриптом автоматизации) для массовой очистки временных файлов на компьютерах пользователей. Ниже приведен пример такого скрипта:


@echo off
taskkill /f /im 1cv8.exe /im 1cv8c.exe
timeout /t 2 /nobreak > nul
rmdir /s /q "%userprofile%\AppData\Local\1C\1Cv8"
rmdir /s /q "%userprofile%\AppData\Roaming\1C\1Cv8"
echo Локальный кэш 1С успешно очищен!
pause

Способ 4. Тестирование и реструктуризация таблиц базы данных

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

Рассмотрим порядок действий для выполнения реструктуризации:

  1. Выполните резервное копирование информационной базы! Это обязательный шаг перед любыми низкоуровневыми операциями с базой данных.
  2. Запустите информационную базу в режиме «Конфигуратор» монопольно (другие пользователи должны выйти из программы).
  3. Перейдите в главное меню: Администрирование -> Тестирование и исправление...
  4. Установите флажки напротив следующих пунктов:
    • Реиндексация таблиц информационной базы
    • Реструктуризация таблиц информационной базы
  5. В группе переключателей «При наличии неразрешенных ссылок» выберите вариант «Очищать объекты» или «Создавать дефолтные».
  6. Нажмите кнопку «Выполнить» и дождитесь окончания процесса. Для крупных баз данных процедура реструктуризации может занять значительное время, так как платформа физически пересоздаст таблицы СУБД под обновленные метаданные релиза 3.1.8.

Способ 5. Радикальное решение — переустановка платформы на сервере

Практический опыт системных администраторов показывает, что на некоторых старых версиях платформы 8.3 (включая сборку 8.3.12.1469) стандартные механизмы очистки кэша не всегда срабатывают из-за внутренних архитектурных ошибок самого движка платформы. Единственным выходом из ситуации становится полная чистая переустановка платформы на сервере приложений.

Для реализации этого метода выполните следующие шаги:

  1. Завершите все пользовательские сеансы и остановите службу сервера 1С.
  2. Через панель управления Windows (раздел «Программы и компоненты») полностью удалите старую версию платформы 1С:Предприятие со всеми компонентами.
  3. Вручную удалите каталог C:\Program Files\1cv8\ (или переименуйте его, чтобы стереть все остаточные кэши и настройки прежних установок).
  4. Установите платформу заново с дистрибутива (желательно обновиться до рекомендованной стабильной версии платформы, например, актуальных сборок 8.3.14, 8.3.16 или выше, которые корректно работают с механизмами кэширования современных версий ЗУП).
  5. Заново зарегистрируйте службу сервера 1С и запустите базу данных.

Способ 6. Обновление ЗУП до стабильного релиза ветки 3.1.8

Конфигурация 3.1.8.112 была одним из первых промежуточных релизов новой подсистемы. Фирма «1С» оперативно реагировала на жалобы пользователей и в последующих технических обновлениях исправила множество внутренних багов конфигурации, включая ошибки обращения к свойствам форм в документах отпусков и увольнений.

Если вы столкнулись с этой ошибкой, проанализируйте возможность обновления конфигурации до стабильного релиза (например, до версии 3.1.8.137 или последующих версий веток 3.1.10 / 3.1.14).

Также не забывайте про механизм автоматической загрузки исправлений (патчей), который реализован в современных версиях ЗУП 3. Для его проверки перейдите в раздел Администрирование -> Интернет-поддержка и сервисы -> Обновление программы и убедитесь, что у вас включена автоматическая загрузка и установка критических исправлений. Многие точечные ошибки вида «Поле объекта не обнаружено» закрываются разработчиками именно посредством таких оперативных патчей без необходимости полного обновления конфигурации.

Резюме и рекомендации

Мы проанализировали проблему с оформлением отпусков в ЗУП 3.1.8 и выяснили, что её источником является рассинхронизация кэша метаданных платформы и СУБД. Чтобы минимизировать вероятность появления подобных ошибок в будущем, рекомендуем придерживаться простых правил обслуживания баз данных:

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

← На главную