Работа в высоконагруженных системах, таких как связка 1С:Управление торговлей 11 и CRM-модуля, требует особого внимания к стабильности серверных процессов. Часто возникает ситуация: после регистрации простой внешней печатной формы или отчета пользователи начинают жаловаться на невозможность создания документов (например, контрагентов), а система лицензирования CRM внезапно перестает видеть ключи защиты. Рассмотрим подробно, почему это происходит и как выстроить стабильную работу системы.
Проанализируем первичную причину сбоев. В процессе обсуждения выяснилось, что ранее в системе активно применялись так называемые «динамические обновления» (или «демонические», как их называют в среде разработчиков). Этот механизм позволяет вносить изменения в конфигурацию без выгона пользователей, но он имеет «накопительный эффект» ошибок в серверном кэше.
Когда мы добавляем внешнюю обработку, платформа 1С обновляет внутренние таблицы метаданных. Если до этого база подвергалась динамическим обновлениям, структура кэша на сервере может стать противоречивой. В результате рабочие процессы rphost начинают некорректно интерпретировать обращения к объектам базы данных или внешним компонентам защиты.
Если перезапуск службы помогает лишь временно, разберем алгоритм правильной очистки кэша, который исключит «фантомные» ошибки метаданных. Одной очистки серверного кэша часто недостаточно, так как клиентские приложения сохраняют часть структуры объектов локально.
Выполним следующие шаги по шагам:
1C:Enterprise 8.3 Server Agent (ragent).C:\Program Files\1cv8\srvinfo).snccntx и все временные файлы с расширением .tmp.%AppData%\1C\1cv8\ и %LocalAppData%\1C\1cv8\. Удалим папки с буквенно-цифровыми именами (идентификаторы баз).Это заставит систему заново инициализировать все связи с внешними модулями CRM и корректно прочитать структуру объектов Контрагенты и КлючиЗащиты.
Рассмотрим современный подход к доработке системы. Вместо того чтобы регистрировать множество внешних отчетов или, тем более, править основную конфигурацию динамически, проанализируем возможность использования Расширений конфигурации.
Разберем преимущества:
Выясним причину, по которой «отваливается» ключ защиты CRM. Внешние обработки по умолчанию регистрируются в Безопасном режиме. В этом режиме 1С ограничивает доступ к файловой системе, реестру и — что критично — к внешним компонентам (COM-объектам или библиотекам СЛК).
Когда пользователь запускает такую обработку, платформа создает изолированный программный контекст. Если в этот момент код CRM пытается выполнить проверку лицензии через внешнюю компоненту, происходит блокировка вызова. Чтобы этого избежать, проанализируем настройки обработки в справочнике Дополнительные отчеты и обработки. Попробуем снять флаг Безопасный режим. Это позволит обработке работать в полном доверии с системой защиты CRM.
При добавлении внешней обработки сервер 1С распаковывает её бинарные данные во временный каталог пользователя, под которым запущена служба ragent (обычно это системная учетная запись USR1CV8). Проанализируем состояние папки %TEMP% на сервере.
Если папка переполнена или у пользователя службы нет прав на удаление файлов, возникают ошибки создания новых объектов (например, при попытке записать нового контрагента 1С не может создать временный файл транзакции). Рекомендуем настроить скрипт автоматической очистки папки C:\Windows\Temp и C:\Users\USR1CV8\AppData\Local\Temp при отсутствии активных сеансов 1С.
Если проблема сохраняется, проанализируем ситуацию на уровне СУБД. Запись новой внешней обработки — это транзакция в таблицу Config. Если в это время CRM выполняет фоновое задание по синхронизации или массовому расчету, может возникнуть взаимоблокировка (deadlock). Посмотрим на монитор блокировок SQL Server в момент добавления обработки. Если мы видим ожидание на системных таблицах, необходимо разносить во времени административные действия и тяжелые регламентные задания CRM.
Иногда причиной каскадного сбоя становится антивирусное ПО. При появлении нового файла обработки в папке кэша антивирус блокирует его для сканирования. Ровно в этот момент rphost пытается к нему обратиться и, не получив доступа, выдает ошибку сеанса. Добавим в исключения антивируса следующие объекты:
ragent.exe, rmngr.exe, rphost.exe.srvinfo).Temp) пользователей службы 1С.Соблюдение этих шагов позволит избежать необходимости постоянного перезапуска сервера и обеспечит бесперебойную работу пользователей в 1С:УТ + CRM.