В практике администрирования и разработки на платформе 1С:Предприятие 8.3 нередко возникает критическая ситуация: после успешного и штатного обновления конфигурации (например, 1С:Комплексная автоматизация 2 или 1С:ERP) пользователи начинают жаловаться на то, что у них внезапно пропали основные разделы меню. Самое коварное в этой проблеме — временной лаг. Меню может исчезнуть не сразу после обновления, а через день, два или даже неделю стабильной работы, без видимых причин и каких-либо вмешательств в систему.
В рамках этой статьи мы подробно разберем, почему возникает эта техническая проблема, изучим внутренние механизмы платформы, приводящие к сбою, и рассмотрим пошаговые методы восстановления командного интерфейса.
В сообщении форума пользователь описывает решение, которое на первый взгляд кажется мистическим: добавление расширения и вывод туда нескольких меню мгновенно вернули весь стандартный интерфейс на место. Давайте проанализируем, почему этот метод сработал.
С технической точки зрения здесь нет никакой магии, а работает строгий алгоритм платформы 1С:
Для реализации этого метода выполним следующие шаги:
Если исчезновение пунктов меню происходит через несколько дней после обновления, мы имеем дело с классическим симптомом некорректной работы сервера приложений 1С:
rphost. При достижении критического объема потребления памяти или некорректной адресации процесс rphost перестает отдавать клиенту часть метаданных интерфейса. В результате разделы меню «отваливаются» прямо «на лету» во время активного сеанса пользователя.Чтобы исключить влияние серверных процессов, выполним следующие профилактические действия:
1C:Enterprise 8.3 Server Agent) во внерабочее время. Это физически очистит оперативную память процессов rphost.Рассмотрим еще одну распространенную причину — использование механизма динамического обновления (так называемого «демонического» обновления). Если после основного обновления системы разработчики вносили мелкие правки и обновляли конфигурацию базы данных «на лету», это практически гарантированно вызывает рассинхронизацию кэшей.
Схема сбоя выглядит следующим образом:
Рекомендация: Избегайте динамического обновления крупных конфигураций, таких как Комплексная автоматизация 2. Всегда выполняйте монопольное обновление с предварительным завершением всех активных сеансов.
В некоторых релизах платформы (например, в ветке 8.3.15) были зафиксированы официальные баги. При попытке пользователя кастомизировать интерфейс «под себя» через меню «Настройка панелей» структура разделов полностью затиралась в системных таблицах настроек без возможности возврата стандартными средствами.
Чтобы проверить, не связана ли проблема с повреждением конкретных настроек пользователя, мы можем принудительно сбросить настройки интерфейса к значениям по умолчанию. Разберем, как сделать это программно для определенного пользователя с помощью встроенного языка 1С:
Процедура СброситьНастройкиИнтерфейсаПользователя(ИмяПользователя) Экспорт
// Сбрасываем настройки размещения панелей и командного интерфейса
ХранилищеСистемныхНастроек.Удалить("Общее/ПанелиРабочейОбласти", "", ИмяПользователя);
ХранилищеСистемныхНастроек.Удалить("Общее/НастройкиПанелей", "", ИмяПользователя);
ХранилищеСистемныхНастроек.Удалить("Общее/НастройкаКомандногоИнтерфейса", "", ИмяПользователя);
ЗаписьЖурналаРегистрации("НастройкиПользователя",
УровеньЖурналаРегистрации.Информация,,,
"Выполнен принудительный сброс настроек интерфейса для пользователя: " + ИмяПользователя);
КонецПроцедуры
После крупных обновлений конфигураций (таких как переход на новые релизы КА 2.4 или ERP 2.4) в системе запускаются фоновые обработчики обновления. Если эти обработчики завершились с ошибками или не до конца выполнили регламентные операции, значения некоторых ключевых констант могут сброситься.
Каждый крупный раздел меню в современных конфигурациях жестко привязан к определенным функциональным опциям. Если соответствующая константа принимает значение Ложь, платформа автоматически и бесследно скрывает весь раздел меню для всех пользователей, независимо от их прав доступа.
Для анализа состояния функциональных опций мы можем использовать следующий программный код в консоли кода или внешней обработке:
Процедура ПроверитьАктивностьФункциональныхОпций() Экспорт
// Проверим активность ключевой опции интерфейса на примере подсистемы закупок
ЗначениеОпции = ПолучитьФункциональнуюОпцию("ИспользоватьЗакупки");
Если Не ЗначениеОпции Тогда
Сообщить("Внимание: Функциональная опция 'ИспользоватьЗакупки' отключена! Раздел меню скрыт.");
Иначе
Сообщить("Функциональная опция 'ИспользоватьЗакупки' активна.");
КонецЕсли;
КонецПроцедуры
Если выясняется, что обработчики обновления не завершились должным образом, выполним следующие шаги:
В ситуациях, когда меню пропало только у ограниченного круга лиц, локальный файл настроек интерфейса 1cv8cmn.pfl на компьютере пользователя мог повредиться в результате некорректного завершения работы операционной системы или аварийного закрытия 1С.
Для исправления этой проблемы произведем полную ручную очистку кэша пользователя:
%LocalAppData%\1C\1Cv8\%AppData%\1C\1Cv8\8a2b567d-922e-4b6d...), которые содержат локальный кэш конфигурации и интерфейса.Применяя предложенные методики комплексно — от анализа функциональных опций до использования расширений для принудительного обновления кэша, — мы сможем гарантированно восстановить работоспособность командного интерфейса 1С:Комплексная автоматизация 2 и не допускать подобных сбоев при последующих обновлениях системы.