Как в 1С:ЗУП 2.5 настроить разграничение прав по подразделениям и избежать ошибки «Недостаточно прав»?

Программист 1С v8.3 (Обычные формы) 1С:Зарплата и Управление Персоналом
← На главную

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

Анализ причины возникновения ошибки «Недостаточно прав»

Проанализируем техническую сторону вопроса. В ЗУП 2.5 механизм RLS часто настраивается по группам доступа физических лиц. Когда расчетчик пытается провести документ, например НачислениеОтпуска, программный код конфигурации ищет соответствующий кадровый приказ (документ-основание). Если кадровик создал один общий приказ на отпуск для сотрудников разных подразделений, в этом документе оказываются физлица, входящие в разные группы доступа.

Платформа 1С версии 8.2 (на которой базируется ЗУП 2.5) при проверке прав на чтение объекта проверяет все его данные. Если в списочной части документа содержится хотя бы одна строка с сотрудником, доступ к которому у пользователя ограничен, весь документ становится недоступным для чтения. В результате:

  1. Расчетчик не видит кадровый приказ в журнале.
  2. При проведении расчетного документа система выдает исключение «Недостаточно прав», так как процедура проведения не может программно прочитать данные связанного кадрового документа.

Способ 1. Создание роли «Чтение кадровых документов без ограничений»

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

Разберем этот способ по шагам:

  1. В конфигураторе создадим новую роль, например ЧтениеКадровыхДокументовБезОграничений.
  2. Для этой роли установим право Чтение и Просмотр для всех кадровых документов (приказы на отпуск, прием, перевод и т.д.).
  3. Важно: в поле «Ограничение доступа к данным» для этой роли не нужно прописывать никаких шаблонов RLS. Оставьте это поле пустым.
  4. Добавьте эту роль расчетчику в дополнение к его основным правам.

В результате расчетчик сможет «видеть» заголовки и списки всех приказов, что позволит системе беспрепятственно проводить расчетные документы. При этом изменять чужие приказы он не сможет, так как основные роли будут блокировать запись.

Способ 2. Использование привилегированного режима в коде

Если вы готовы к внесению изменений в программный код, можно использовать механизм привилегированного режима. Это позволит системе игнорировать проверку прав доступа в конкретных процедурах поиска документов-оснований.

Проанализируем ситуацию: ошибка возникает в модуле объекта при попытке найти ссылку на кадровый документ. Мы можем обернуть этот вызов в специальные команды. Пример логики внесения изменений:


// В процедуре проведения документа перед поиском основания
УстановитьПривилегированныйРежим(Истина);

// Выполняем поиск кадрового приказа или запрос к данным
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ ..."; // Используем слово РАЗРЕШЕННЫЕ для корректности
// ... код поиска ...

УстановитьПривилегированныйРежим(Ложь);

Такой подход гарантирует, что алгоритм проведения всегда «найдет» нужный документ, независимо от того, какие ограничения наложены на пользователя интерфейсно.

Способ 3. Административное решение через изменение работы отдела кадров

Выясним, можно ли решить проблему без программирования. Если кадровик будет создавать документы строго в разрезе подразделений, проблема исчезнет сама собой. В этом случае в каждом документе (приказе на отпуск или премию) будут только те сотрудники, которые закреплены за конкретным расчетчиком.

Однако, как показывает практика, убедить кадровую службу изменить свои правила работы (создавать 10 документов вместо одного) крайне сложно. Это требует жесткого административного ресурса и четкого регламента документооборота.

Важные ограничения и риски

При настройке разграничения прав в ЗУП 2.5 необходимо учитывать два критических фактора, связанных с законодательством и алгоритмами расчета:

  1. Расчет среднего заработка: Если сотрудник в течение расчетного периода переводился из «чужого» подразделения в «свое», расчетчик может не увидеть данные о его прошлых доходах из-за RLS. Это приведет к неверному (заниженному) расчету среднего заработка.
  2. Налоги и взносы: НДФЛ и страховые взносы рассчитываются нарастающим итогом по физлицу в целом. Если доходы сотрудника разбросаны по разным подразделениям, расчетчик, имеющий доступ только к части данных, не сможет корректно отследить превышение предельных величин для взносов или применение налоговых вычетов.

Поэтому, внедряя любое техническое решение по ограничению прав, обязательно убедитесь, что регистры расчета и накопления (ВзаиморасчетыСРаботниками, НДФЛСведенияОДоходах) доступны расчетчикам хотя бы на чтение, иначе ошибки в учете неизбежны.

← На главную