Обновление конфигурации «1С:Бухгалтерия предприятия 3.0» — это всегда ответственный процесс, который может преподнести неприятные сюрпризы, особенно если в системе активно используются расширения. Одной из наиболее загадочных ситуаций является та, при которой после обновления расширение продолжает исправно работать у одного пользователя (например, администратора), но полностью игнорируется системой у другого, хотя права доступа у обоих идентичны. Разберем эту проблему детально, проанализируем причины и выработаем пошаговый алгоритм решения.
Рассмотрим исходные данные. Конфигурация была обновлена, и вместе с ней изменился режим совместимости (в данном случае до версии 8.3.12). Это критически важный момент. При изменении режима совместимости основной конфигурации необходимо обязательно синхронизировать его и в самом расширении. Если расширение осталось в режиме 8.3.10, а база перешла на 8.3.12, могут возникнуть конфликты в интерпретации кода или элементов формы.
Проанализируем симптом, когда у разных пользователей интерфейс выглядит по-разному. В управляемом приложении 1С внешний вид форм и их поведение сильно зависят от сохраненных настроек пользователя. Если под одним пользователем расширение срабатывает (например, устанавливает свойство ТолькоПросмотр = Истина), а под другим — нет, это часто означает, что платформа по какой-то причине не применяет изменения расширения к конкретному сеансу или конкретной форме пользователя.
Самая распространенная причина «избирательной» работы расширения — это устаревший кэш. Выясним, почему стандартной очистки папок Local и Roaming бывает недостаточно. В клиент-серверном варианте работы (SQL) существует несколько уровней кэширования:
rphost на сервере приложений 1С.Посмотрим, как правильно произвести полную очистку. Не ограничивайтесь только удалением папок. Попробуйте удалить базу из списка в стартере 1С и добавить её заново — это создаст новый идентификатор связи и полностью обновит локальные метаданные для текущего пользователя. Если работа ведется через RDP, убедитесь, что вы чистите кэш именно в профиле того пользователя, под которым наблюдается проблема.
Разберем ситуацию, когда кэш чист, но проблема сохраняется. В 1С существует такое понятие, как «Хранилище настроек данных форм». Если пользователь ранее самостоятельно менял состав полей на форме или система автоматически сохранила состояние элементов, эти настройки могут иметь приоритет над программными изменениями из расширения.
Выполним следующие действия для «проблемного» пользователя:
Это действие принудительно заставляет платформу перерисовать форму согласно актуальным метаданным конфигурации и примененных к ней расширений, игнорируя старые «залипшие» настройки отображения.
Часто программисты забывают, что расширение может иметь собственные роли. Даже если у пользователя установлена галочка Полные права в основной конфигурации, это не всегда автоматически дает ему права на новые объекты или специфические права, определенные внутри расширения.
Проанализируем состав ролей. Если ваше расширение добавляет новые элементы или изменяет права на существующие, убедитесь, что в расширении создана соответствующая роль и она назначена пользователю через «Профили групп доступа». Если в расширении используются заимствованные формы, платформа может блокировать выполнение кода расширения (например, в процедуре ПриСозданииНаСервере), если у пользователя нет прав на какой-либо объект, задействованный в этой процедуре, причем делать это «тихо», без вывода ошибок.
Выясним влияние настроек самого расширения. В списке расширений (Администрирование — Печатные формы, отчеты и обработки — Расширения) есть флаг «Безопасный режим».
Важно: если этот флаг установлен, расширение работает с существенными ограничениями. Оно не может выполнять операции, требующие привилегированного режима, работать с файловой системой или внешними компонентами. Попробуйте снять этот флаг и перезапустить сеанс. Также проверьте, не назначен ли «проблемному» пользователю специфический профиль безопасности в его карточке в справочнике Пользователи, который может блокировать работу расширений в принципе.
Если расширение использует аннотацию &Вместо, существует риск изменения сигнатуры (состава параметров) типового метода при обновлении «Бухгалтерии предприятия».
Посмотрим на пример кода, который может перестать работать:
&Вместо("ПриСозданииНаСервере")
Процедура Расш1_ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
// Наш код
ЭтаФорма.ТолькоПросмотр = Истина;
ПродолжитьВызов(Отказ, СтандартнаяОбработка);
КонецПроцедуры
Если после обновления в типовой конфигурации в процедуру ПриСозданииНаСервере был добавлен третий параметр, например ДополнительныеПараметры, то расширение с двумя параметрами просто перестанет применяться. Причем платформа может не выдать критическую ошибку при запуске, а просто проигнорировать этот метод расширения. Всегда проверяйте соответствие параметров в расширении и основной конфигурации после обновления.
Если расширение ведет себя нестабильно после обновления, пройдем по пунктам:
8.3.12).%LOCALAPPDATA%\1C\1Cv8 и %APPDATA%\1C\1Cv8.Следуя этому системному подходу, мы сможем выявить истинную причину сбоя, будь то технический мусор в кэше или тонкие настройки прав доступа в обновленной версии платформы 1С.