Как решить проблемы с правами доступа и отображением документов в ЗУП 3.1 после обновления с 3.1.14 на 3.1.18?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

Переход между ветками длительного сопровождения (LTS) в конфигурации «Зарплата и управление персоналом», например, с версии 3.1.14 на 3.1.18, является технически сложной операцией. Несмотря на то, что само обновление может завершиться без критических ошибок, администраторы и программисты часто сталкиваются с «пост-эффектами»: у кадровиков пропадают права на открытие документов, а в журналах исчезает привычное выделение жирным шрифтом нерассчитанных объектов. В данной статье мы подробно разберем причины возникновения этих проблем и пошагово восстановим работоспособность системы.

Восстановление визуального выделения документов в журналах

Одной из первых жалоб со стороны расчетчиков после обновления становится исчезновение жирного шрифта в списках документов (например, «Начисление зарплаты и взносов» или «Отпуска»). В норме жирным шрифтом выделяются документы, которые уже проведены кадровиком (утверждены), но еще не рассчитаны бухгалтером. Проанализируем причину этого поведения.

Выясним, что за этот механизм отвечает константа ИспользоватьМногофункциональностьДокументов. В системе ЗУП предусмотрено два режима работы:

  1. Раздельный учет: кадровик создает свой документ, а расчетчик — отдельный расчетный документ на его основании.
  2. Единый документ (многофункциональность): кадровые и расчетные данные хранятся в одном объекте. Кадровик заполняет свою часть, а расчетчик — свою.

При переходе на версию 3.1.18 данная константа может сброситься из-за изменения логики работы новых функциональных опций. Чтобы вернуть выделение жирным шрифтом, необходимо проверить и включить настройку «Использовать многофункциональность документов». Если настройка активна, но шрифт не появился, попробуйте выключить её, сохранить изменения и включить снова. Это инициирует программное обновление признаков отображения в списках.

Исправление ошибок доступа кадровиков к расчетным данным

Рассмотрим ситуацию, когда пользователи с правами «Кадровик» не могут открыть формы документов, получая сообщение об ошибке прав доступа. Проанализируем ситуацию с помощью отладчика: ошибка возникает в момент отрисовки формы, когда система пытается обратиться к реквизитам, содержащим суммы начислений, тарифные ставки или другие расчетные показатели, на которые у кадровика нет прав (роли с ограничением по полям).

В версии 3.1.18 механизмы программного управления видимостью элементов формы были существенно переработаны. Если ваша конфигурация содержит даже небольшие доработки в формах документов или в общих модулях, отвечающих за права, типовой механизм «скрытия» зарплатных данных может давать сбой.

Посмотрим на алгоритм исправления этой проблемы:

  1. Проверка функциональных опций: Перейдите в настройки состава и проверьте опции, связанные с выплатами бывшим сотрудникам и прочими доходами. Иногда «отвалившаяся» птичка в настройках блокирует чтение связанных реквизитов даже в типовых документах.
  2. Обновление вспомогательных данных RLS: В новых релизах активно используется производительный режим ограничения доступа на уровне записей. Если обновление прошло не полностью, регистры с ключами доступа могут содержать неактуальные сведения. Рекомендуется запустить процедуру обновления вспомогательных данных через стандартную обработку или программно:
    
    ПараметрыОбновления = ДоступНаУровнеЗаписей.ПараметрыОбновления();
    ПараметрыОбновления.ВариантОбновления = "Полное";
    ДоступНаУровнеЗаписей.ОбновитьВспомогательныеДанные(ПараметрыОбновления);
    

Обновление профилей групп доступа

Часто проблема кроется в том, что в базе используются не типовые профили (например, «Кадровик»), а созданные вручную копированием. При обновлении конфигурации в 3.1.18 появляются новые роли, которые отвечают за доступ к новым объектам метаданных или измененным регистрам сведений (например, данные о стажах или расчетных коэффициентах). Копированные профили не получают эти роли автоматически.

Разберем, как актуализировать права:

Техническая очистка кэша и регламентные операции

Проанализируем техническую сторону вопроса. При переходе между столь далекими релизами формы управляемого приложения могут некорректно кэшироваться на стороне сервера или клиента. Если настройки выставлены верно, а ошибка сохраняется, выполним следующие действия:

  1. Очистка серверного кэша: Остановите службу кластера серверов 1С и удалите содержимое папки reg_1541 (за исключением файлов журналов регистрации).
  2. Контроль завершения обновления: Проверьте форму «Результаты обновления программы» (через функции для технического специалиста). Убедитесь, что все отложенные обработчики данных завершены со статусом «Успешно». Если обработчик «завис», часть кода будет работать в режиме совместимости, что часто вызывает коллизии при обращении к реквизитам через УсловноеОформление.

Особое внимание уделим коду в процедурах ПриСозданииНаСервере. Если в конфигурации есть доработки, убедитесь, что ваш код не обращается к данным объекта напрямую до того, как отработает типовой механизм разделения прав. В 3.1.18 логика проверки ПравоДоступа("Чтение", ...) может возвращать истину для объекта в целом, но вызывать исключение при обращении к конкретному «запрещенному» полю в запросе или через точку от реквизита формы.

← На главную