В процессе эксплуатации тяжелых конфигураций, таких как 1С:ERP Управление предприятием или 1С:Комплексная автоматизация 2, системные администраторы и пользователи часто сталкиваются с необъяснимым поведением системы: разделы меню и пункты подсистем внезапно исчезают прямо во время рабочего сеанса. Утром пользователь заходит в систему — всё на месте, а спустя несколько часов работы интерфейс становится «пустым», при этом права доступа не менялись, и конфигурация не обновлялась. Разберем подробно причины этого «магического» исчезновения и выясним, как стабилизировать работу системы.
Первым делом проанализируем используемую версию платформы. В сообщениях форума упоминаются релизы 8.3.12.1855 и 8.3.13.1513. Именно в этих ветках платформы наблюдались специфические ошибки, связанные с «Глобальным поиском» и механизмом «История». Эти службы при определенных условиях вызывают утечку дескрипторов в графической подсистеме Windows на стороне сервера, что приводит к невозможности корректного формирования экранных форм и элементов меню.
Рассмотрим рекомендации по устранению этой причины:
8.3.15.x и выше, а лучше актуальные 8.3.22+) часто решает проблему «малой кровью», так как в них оптимизированы механизмы отрисовки интерфейса.Одной из наиболее вероятных причин исчезновения меню является архитектурное ограничение 32-битного сервера приложений 1С. Посмотрим, как это работает: один процесс rphost в 32-битной версии может адресовать не более 2–3 ГБ оперативной памяти. Поскольку 1С:ERP — это крайне ресурсоемкая конфигурация, объем метаданных которой огромен, процесс отрисовки интерфейса (формирование командного интерфейса) требует значительных ресурсов.
Как только процесс rphost приближается к своему пределу по памяти, он перестает выделять ресурсы на «второстепенные» задачи, такие как передача структуры меню клиенту. При этом сам процесс не «падает», сеанс не разрывается, но интерфейс отрисовывается некорректно. Выясним, как это диагностировать и исправить:
Шаг 1. Переход на x64. Если у вас до сих пор используется 32-битный сервер приложений, настоятельно рекомендуем перейти на 64-битную версию. Это снимет жесткое ограничение в 3 ГБ на процесс.
Шаг 2. Настройка кластера. Если сервер уже 64-битный, но проблема сохраняется, проанализируем настройки кластера. В консоли администрирования кластеров 1С найдем параметры рабочего сервера:
Максимальный объем памяти рабочих процессов — установим значение, при котором сервер начнет перезапускать процессы до того, как они достигнут критической точки.Безопасный расход памяти за один вызов — этот параметр поможет пресекать «тяжелые» запросы, которые могут вешать процесс.Количество сеансов на один рабочий процесс — для ERP рекомендуется уменьшить это число (например, до 10-20 сеансов), чтобы распределить нагрузку между несколькими rphost.В современных конфигурациях 1С интерфейс строится динамически на основе функциональных опций. Если в системе отключена опция, например, «Использовать производство», то все пункты меню, связанные с производством, скроются автоматически. Рассмотрим ситуацию, когда происходит сбой в механизме чтения этих опций.
Значения функциональных опций кэшируются в параметрах сеанса. При нестабильном соединении или кратковременных сбоях в работе rphost, кэш может сброситься или считаться некорректно. Платформа «решает», что все опции выключены, и скрывает соответствующие разделы.
Для исправления ситуации попробуем следующие действия:
1C:Enterprise Server и удалить содержимое папок reg_1541 (за исключением файлов настроек кластера).Проанализируем практику внесения изменений в конфигурацию. Если вы часто используете «динамическое обновление» (F7 при работающих пользователях), это прямой путь к проблемам с интерфейсом. При динамическом обновлении в таблице Config базы данных могут возникнуть рассогласования. Пользователь продолжает работать со старой структурой метаданных в памяти, в то время как сервер пытается подсунуть ему новые куски кода.
Выясним, как лечить последствия демонического обновления:
ConfigSave средствами SQL, но это крайняя мера, требующая осторожности.Посмотрим на ситуацию со стороны операционной системы. На сервере приложений 1С постоянно создаются и обновляются временные файлы (кэш, файлы сеансовых данных). Если антивирус настроен слишком агрессивно, он может блокировать доступ rphost к этим файлам в момент их записи. В результате клиентское приложение получает пустой или битый ответ при попытке обновить меню.
Рекомендация: Добавим в исключения антивируса на сервере следующие каталоги:
C:\Program Files\1cv8\...).C:\Users\USR1CV8\...).Если ни один из вышеперечисленных методов не помогает, нельзя исключать повреждение служебных таблиц, в которых хранятся настройки интерфейса. Разберем шаги по техническому обслуживанию базы:
-- Очистка процедурного кэша для текущей базы
DBCC FREEPROCCACHE;
GO
-- Обновление статистики во всех таблицах
EXEC sp_updatestats;
GO
Исчезновение пунктов меню в 1С:ERP — это чаще всего комплексная проблема, связанная с управлением памятью на стороне сервера приложений и корректностью кэширования метаданных. Мы рекомендуем не ограничиваться только чисткой кэша, а подойти к вопросу системно: обновить платформу до стабильной версии, настроить лимиты памяти для рабочих процессов rphost и полностью отказаться от практики динамического обновления конфигурации. Только такой подход гарантирует стабильную работу интерфейса у всех пользователей в течение всего рабочего дня.