Приветствуем вас, уважаемые коллеги! Обновление конфигурации в экосистеме «1С:Предприятие» — это процедура, которая регулярно требует от администраторов и программистов предельной концентрации. Одним из наиболее резонансных сбоев в линейке конфигураций 1С:Зарплата и управление персоналом 3.1 стал массовый сбой при оформлении отпусков после перехода на релиз 3.1.8.112 (и смежные версии ветки 3.1.8).
Пользователи при попытке добавить сотруднику дополнительный или основной отпуск в документе Отпуск внезапно сталкивались с системной ошибкой «Поле объекта не обнаружено». При этом ошибка вела себя непредсказуемо: появлялась спонтанно у разных пользователей, блокировала работу кадровой службы, а затем могла на время «исчезнуть» без видимых причин.
В этой статье мы подробно разберем, почему возникает этот сбой, как устроены механизмы кэширования платформы «1С:Предприятие 8.3» в контексте обновления метаданных и какими методами можно раз и навсегда решить эту проблему на вашем сервере.
Для начала проанализируем техническую природу ошибки. Текст «Поле объекта не обнаружено (...)» сообщает о том, что исполняемый программный код (в общем модуле или модуле формы документа) пытается обратиться к реквизиту, свойству или табличной части, которых физически нет в текущей структуре метаданных, загруженной в оперативную память сеанса.
В версии ЗУП 3.1.8 разработчики фирмы «1С» провели масштабную реструктуризацию кадрового учета и механизмов расчета среднего заработка. Были изменены многие внутренние реквизиты документов, скорректирована логика вытеснения начислений и алгоритмы работы с НДФЛ. Если платформа или конкретный пользовательский сеанс продолжают использовать устаревшую структуру метаданных, обращение к новым механизмам неизбежно вызывает критический сбой.
Главная коварность этой проблемы заключается в её «плавающем» характере. Это классический симптом рассинхронизации серверного и клиентского кэша. Рассмотрим основные факторы, провоцирующие ошибку:
srvinfo). Обычная очистка временных файлов на рабочих станциях пользователей в этом случае не дает никакого результата, так как искаженные данные повторно транслируются сервером.Перейдем к пошаговому рассмотрению методов решения этой проблемы — от простых и быстрых к более радикальным и надежным.
Если ошибка парализовала работу отдела кадров прямо сейчас, а времени на детальную очистку кэша нет, самым быстрым временным решением является перезапуск службы сервера приложений. Это позволяет принудительно очистить оперативную память процессов rphost и обновить таблицы метаданных для всех новых сеансов.
Рассмотрим по шагам, как это сделать:
services.msc в строке «Выполнить»).Агент сервера 1С:Предприятия 8.3 (или соответствующую вашей версии платформы).Обратите внимание, что этот метод прервет активные сеансы всех пользователей, работающих в данный момент на этом сервере. Метод временно устраняет проблему (ошибка «отмирает»), но для полного исключения ее повторного появления необходимо выполнить глубокую очистку кэша.
Для того чтобы гарантированно избавить сервер от остатков устаревших описаний таблиц, необходимо вручную очистить временные файлы конкретной информационной базы в каталоге сервера приложений.
Разберем по шагам алгоритм безопасной очистки серверного кэша:
Агент сервера 1С:Предприятия через консоль служб Windows.C:\Program Files\1cv8\srvinfo\reg_1544\ (номер порта может отличаться).
snccntry, snccntry.00000000 и аналогичные временные файлы сеансовых данных. Удалите эти папки. Саму базу данных или файл журнала регистрации (папку 1Cv8Log) трогать не нужно!Агент сервера 1С:Предприятия заново. При первом обращении пользователей к базе сервер заново сформирует чистый кэш метаданных.В некоторых случаях устаревшие формы документов и модули кэшируются локально на компьютерах конечных пользователей. Техническая поддержка фирмы «1С» при возникновении подобных спонтанных ошибок рекомендует перерегистрировать базу в списке запуска стартера 1С.
Для быстрой индивидуальной очистки выполните следующие действия:
Если пользователей много, целесообразно настроить автоматическое удаление локального кэша. Для этого в свойствах подключения к базе в окне запуска в поле «Дополнительные параметры запуска» пропишите специальный ключ:
/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
Если очистка кэша не принесла долгосрочного результата, это может свидетельствовать о нарушении внутренней структуры таблиц СУБД (особенно если обновление конфигурации проходило с ошибками или прерывалось). В таком случае необходимо запустить встроенные механизмы тестирования в режиме Конфигуратора.
Рассмотрим порядок действий для выполнения реструктуризации:
Реиндексация таблиц информационной базыРеструктуризация таблиц информационной базыПрактический опыт системных администраторов показывает, что на некоторых старых версиях платформы 8.3 (включая сборку 8.3.12.1469) стандартные механизмы очистки кэша не всегда срабатывают из-за внутренних архитектурных ошибок самого движка платформы. Единственным выходом из ситуации становится полная чистая переустановка платформы на сервере приложений.
Для реализации этого метода выполните следующие шаги:
C:\Program Files\1cv8\ (или переименуйте его, чтобы стереть все остаточные кэши и настройки прежних установок).8.3.14, 8.3.16 или выше, которые корректно работают с механизмами кэширования современных версий ЗУП).Конфигурация 3.1.8.112 была одним из первых промежуточных релизов новой подсистемы. Фирма «1С» оперативно реагировала на жалобы пользователей и в последующих технических обновлениях исправила множество внутренних багов конфигурации, включая ошибки обращения к свойствам форм в документах отпусков и увольнений.
Если вы столкнулись с этой ошибкой, проанализируйте возможность обновления конфигурации до стабильного релиза (например, до версии 3.1.8.137 или последующих версий веток 3.1.10 / 3.1.14).
Также не забывайте про механизм автоматической загрузки исправлений (патчей), который реализован в современных версиях ЗУП 3. Для его проверки перейдите в раздел Администрирование -> Интернет-поддержка и сервисы -> Обновление программы и убедитесь, что у вас включена автоматическая загрузка и установка критических исправлений. Многие точечные ошибки вида «Поле объекта не обнаружено» закрываются разработчиками именно посредством таких оперативных патчей без необходимости полного обновления конфигурации.
Мы проанализировали проблему с оформлением отпусков в ЗУП 3.1.8 и выяснили, что её источником является рассинхронизация кэша метаданных платформы и СУБД. Чтобы минимизировать вероятность появления подобных ошибок в будущем, рекомендуем придерживаться простых правил обслуживания баз данных:
Надеемся, что предложенные пошаговые инструкции помогут вам оперативно решить проблему и вернуть работу кадровой службы в штатный режим. Успешной работы и стабильных обновлений!