Переход между ветками длительного сопровождения (LTS) в конфигурации «Зарплата и управление персоналом», например, с версии 3.1.14 на 3.1.18, является технически сложной операцией. Несмотря на то, что само обновление может завершиться без критических ошибок, администраторы и программисты часто сталкиваются с «пост-эффектами»: у кадровиков пропадают права на открытие документов, а в журналах исчезает привычное выделение жирным шрифтом нерассчитанных объектов. В данной статье мы подробно разберем причины возникновения этих проблем и пошагово восстановим работоспособность системы.
Одной из первых жалоб со стороны расчетчиков после обновления становится исчезновение жирного шрифта в списках документов (например, «Начисление зарплаты и взносов» или «Отпуска»). В норме жирным шрифтом выделяются документы, которые уже проведены кадровиком (утверждены), но еще не рассчитаны бухгалтером. Проанализируем причину этого поведения.
Выясним, что за этот механизм отвечает константа ИспользоватьМногофункциональностьДокументов. В системе ЗУП предусмотрено два режима работы:
При переходе на версию 3.1.18 данная константа может сброситься из-за изменения логики работы новых функциональных опций. Чтобы вернуть выделение жирным шрифтом, необходимо проверить и включить настройку «Использовать многофункциональность документов». Если настройка активна, но шрифт не появился, попробуйте выключить её, сохранить изменения и включить снова. Это инициирует программное обновление признаков отображения в списках.
Рассмотрим ситуацию, когда пользователи с правами «Кадровик» не могут открыть формы документов, получая сообщение об ошибке прав доступа. Проанализируем ситуацию с помощью отладчика: ошибка возникает в момент отрисовки формы, когда система пытается обратиться к реквизитам, содержащим суммы начислений, тарифные ставки или другие расчетные показатели, на которые у кадровика нет прав (роли с ограничением по полям).
В версии 3.1.18 механизмы программного управления видимостью элементов формы были существенно переработаны. Если ваша конфигурация содержит даже небольшие доработки в формах документов или в общих модулях, отвечающих за права, типовой механизм «скрытия» зарплатных данных может давать сбой.
Посмотрим на алгоритм исправления этой проблемы:
ПараметрыОбновления = ДоступНаУровнеЗаписей.ПараметрыОбновления();
ПараметрыОбновления.ВариантОбновления = "Полное";
ДоступНаУровнеЗаписей.ОбновитьВспомогательныеДанные(ПараметрыОбновления);
Часто проблема кроется в том, что в базе используются не типовые профили (например, «Кадровик»), а созданные вручную копированием. При обновлении конфигурации в 3.1.18 появляются новые роли, которые отвечают за доступ к новым объектам метаданных или измененным регистрам сведений (например, данные о стажах или расчетных коэффициентах). Копированные профили не получают эти роли автоматически.
Разберем, как актуализировать права:
Проанализируем техническую сторону вопроса. При переходе между столь далекими релизами формы управляемого приложения могут некорректно кэшироваться на стороне сервера или клиента. Если настройки выставлены верно, а ошибка сохраняется, выполним следующие действия:
reg_1541 (за исключением файлов журналов регистрации).УсловноеОформление.Особое внимание уделим коду в процедурах ПриСозданииНаСервере. Если в конфигурации есть доработки, убедитесь, что ваш код не обращается к данным объекта напрямую до того, как отработает типовой механизм разделения прав. В 3.1.18 логика проверки ПравоДоступа("Чтение", ...) может возвращать истину для объекта в целом, но вызывать исключение при обращении к конкретному «запрещенному» полю в запросе или через точку от реквизита формы.