Обновление доработанных (нетиповых) конфигураций 1С — один из наиболее ответственных процессов в разработке. Нередко после применения релиза пользователи сталкиваются с ошибками вида Нарушение прав доступа или Недостаточно прав для работы с таблицей при старте программы, открытии форм или попытке записать документ. Рассмотрим причины возникновения таких ошибок, разберем типовые ловушки при объединении метаданных и составим пошаговый регламент корректного обновления.
Проанализируем основные факторы, приводящие к отказу в доступе у пользователей с ограниченными правами:
Устанавливать права для новых объектов, которая обычно принадлежит только полным правам). Если при запуске программы или проведении документов типовой код обращается к новым метаданным, пользователи получают отказ в доступе.Когда система выдает общее сообщение о нарушении прав доступа, выясним точную причину через Журнал регистрации:
1С:Предприятие под учетной записью с административными правами.Ошибка или событию Отказ в доступе.РегистрСведений.МЛБ_СтруктураФилиала, ПараметрыСеанса.МЛБ_ФилиалСеансаМенеджера или Константы.МЛБ_ОрганизацияСкупка) и конкретное запрашиваемое действие (Чтение, Изменение, Получение).Разберем по шагам, как безопасно выполнить обновление доработанной конфигурации, сохранив и изменения поставщика, и собственные настройки прав:
Конфигурация — Поддержка — Обновить конфигурацию. Выбираем файл поставщика (.cf или .cfu). Использование штатного механизма поддержки позволяет платформе корректно сопоставить конфигурацию старого поставщика, текущую базу и новую конфигурацию.Роли. Для ролей, в которые вносились доработки, выбираем режим Объединить с приоритетом конфигурации поставщика (или основной конфигурации), но ни в коем случае не режим «Взять из конфигурации поставщика» (замена). Это позволит автоматически добавить права на новые объекты поставщика и не потерять доступ к нетиповым объектам.Выполнить и применяем изменения в структуре базы (F7).Если после обновления доступ к служебным данным по-прежнему блокируется, применим следующие методы исправления:
1. Групповая установка прав в конфигураторе:
В дереве метаданных открываем нужную роль. Чтобы не проставлять флаги на каждый новый объект вручную, выделяем всю ветку метаданных (например, Константы или Регистры сведений) и в контекстном меню или панели свойств выставляем флаги Чтение, Просмотр или Получение сразу для всей группы.
2. Использование привилегированного режима при инициализации:
Если служебные данные (например, структуры филиалов или значения констант) считываются при старте клиентского сеанса в общем модуле, вызов процедур чтения должен производиться в серверных модулях с установленным флажком Привилегированный либо с программным переключением режима:
УстановитьПривилегированныйРежим(Истина);
ОсновнаяОрганизация = Константы.МЛБ_ОрганизацияСкупка.Получить();
МассивВыбораФилиалов = Запрос1.Выполнить().Выгрузить().ВыгрузитьКолонку("Филиал");
УстановитьПривилегированныйРежим(Ложь);
3. Очистка кэша конфигурации:
В случаях, когда после корректного объединения модулей код ведет себя непредсказуемо (пропадают недавно добавленные процедуры или не применяются права), причиной может являться поврежденный локальный кэш. Выполним полную очистку каталогов временных файлов %LOCALAPPDATA%\1C\1cv8 и %APPDATA%\1C\1cv8 на рабочем месте разработчика и сервере.
4. Запуск процедур обновления служебных данных:
После первого запуска обновленной базы в режиме 1С:Предприятие от имени администратора необходимо дождаться завершения всех регламентных обработчиков обновления данных. Это гарантирует заполнение служебных регистров и инициализацию прав доступа в соответствии с логикой поставщика.