Проанализируем распространенную и крайне неприятную ситуацию, с которой сталкиваются администраторы и пользователи клиент-серверных баз. База данных работала исправно, никаких изменений в конфигурацию утром не вносилось, однако внезапно при запуске у всех пользователей (а также в уже активных сеансах при вызове серверных процедур) начинает появляться ошибка следующего вида:
{ОбщийМодуль.ОбменДаннымиСервер.Модуль(3975,23)}: Тип не определен (ЗаписьТекста)
ЗаписьТекста = Новый <<?>>ЗаписьТекста(ПолноеИмяВременногоФайла);
При этом очистка локального кэша на клиентских рабочих станциях (удаление каталогов в AppData) не дает положительного результата. Рассмотрим подробнее, почему синтаксический анализатор платформы перестает распознавать стандартный встроенный тип платформы ЗаписьТекста, и разберем по шагам действенные методы устранения этой неполадки.
Выясним причину, из-за которой платформа теряет базовые типы данных. Ошибка носит серверный характер и связана не с кодом конфигурации, а с состоянием рабочего процесса сервера приложений 1С:
srvinfo (в подкаталогах сеансовых данных snccntx*). При повреждении этих данных процесс сервера теряет сопоставление типов в адресном пространстве.Сервер платформа выдает ошибку о неопределенном типе даже для конструкций вроде ЗаписьТекста, ТаблицаЗначений или Запрос.rphost. При длительной работе службы без регламентного перезапуска рабочие процессы накапливают фрагментацию памяти, что приводит к внутренним сбоям в работе синтаксического анализатора.Разберем самое простое и эффективное решение. Как показала практика решения исходной проблемы, для сброса сбойных состояний требуется перезапуск серверной службы. Полная перезагрузка всей операционной системы физического или виртуального сервера не является обязательной — достаточно перезапустить службу 1С:
services.msc) на сервере приложений.1C:Enterprise 8.3 Server Agent или ragent).ragent.exe, rmngr.exe и rphost.exe.После перезапуска службы рабочие процессы инициализируют адресное пространство заново, компиляция общих модулей проходит без ошибок, и доступ пользователей восстанавливается.
Если простой перезапуск службы не помог, проанализируем процедуру полной очистки серверных сеансовых данных. Выполним следующие действия по шагам:
rphost.exe. Если они присутствуют — снимем их принудительно.
C:\Program Files\1cv8\srvinfo\reg_1541\
snccntx (например, snccntx1ce00...). В них хранятся временные сеансовые данные и серверный кэш модулей..lst (такие как 1Cv8Clst.lst, 1cv8ws.lst), иначе база данных пропадет из консоли администрирования серверов.Посмотрим, как устранить последствия динамического обновления, если серверный кэш продолжает вызывать ошибку после перезапуска процессов:
// сброс кэша).Чтобы исключить внезапное появление ошибки Тип не определен в будущем, настроим правильную эксплуатацию сервера 1С:
Интервал перезапуска рабочих процессов, равный 86400 секунд (один раз в сутки). Это позволит серверу автоматически и бесшовно обновлять рабочие процессы rphost в фоновом режиме, исключая деградацию памяти.Допустимый объем памяти и Интервал превышения допустимого объема памяти, чтобы кластер серверов самостоятельно завершал процессы с критическими утечками памяти.