Почему в 1С ЗУП 3.1 не печатаются переводы и увольнения, и как это исправить?

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

Многие пользователи 1С ЗУП 3.1, особенно кадровики, сталкиваются с ситуацией, когда при попытке сформировать печатную форму кадрового перевода или увольнения программа выдает ошибку "Не удалось сформировать печатную форму. Обратитесь к администратору" или "Недостаточно прав". Эта проблема, как правило, указывает на некорректно настроенные права доступа пользователя к определенным объектам системы. Давайте вместе разберем, как диагностировать и устранить эту распространенную ошибку.

Диагностика проблемы: используем журнал регистрации

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

  1. Воспроизводим ошибку: Первым делом, попросим пользователя, у которого возникает проблема, снова попытаться напечатать проблемный документ (например, "Кадровый перевод" или "Увольнение"). В момент появления ошибки пользователь должен сообщить вам об этом.

  2. Открываем журнал регистрации: Как правило, доступ к журналу регистрации имеют администраторы или пользователи с полными правами. В режиме "Предприятие" перейдите в раздел Администрирование, затем Обслуживание и выберите пункт Журнал регистрации.

  3. Фильтруем события: В открывшемся журнале регистрации нам нужно найти записи, относящиеся к моменту возникновения ошибки. Обратите внимание на следующие фильтры:

    • Важность: Установите фильтр на "Ошибка" или "Предупреждение", так как именно эти события обычно указывают на проблемы.
    • Пользователь: Выберите пользователя, у которого возникла ошибка, чтобы сузить круг поиска.
    • Период: Укажите временной диапазон, соответствующий моменту воспроизведения ошибки. Это поможет найти последние записи.
  4. Анализируем записи: В отфильтрованных записях мы будем искать события типа Доступ. Отказ в доступе. В теле такого события часто содержится информация, какой именно объект (например, регистр сведений, справочник) и какое именно право (чтение, изменение и т.д.) требовалось программе, но было недоступно пользователю.

    В нашем случае, как показал анализ журнала регистрации в теме форума, мы обнаружили примерно следующее сообщение:

    
    Ошибка при вызове метода контекста (Вывести) {ОбщийМодуль.ЗарплатаКадрыОтчеты.Модуль(602)}:ПроцессорВывода.Вывести(ПроцессорКомпоновки, Истина); {ОбщийМодуль.ЗарплатаКадрыОтчеты.Модуль(130)}:РезультатКомпоновки = РезультатКомпоновкиМакетаПечатнойФормы(ОбъектОтчета, , , ВнешниеНаборыДанных, ДополнительныеПараметры); {Отчет.ПечатнаяФормаТ5.МодульМенеджера(46)}:ЗарплатаКадрыОтчеты.ВывестиВКоллекциюПечатнуюФорму("Отчет.ПечатнаяФормаТ5", {ОбщийМодуль.УправлениеПечатью.Модуль(3376)}:МенеджерПечати.Печать(ОбъектыСоответствующиеПечатнойФорме, ПараметрыПечати, ВременнаяКоллекцияДляОднойПечатнойФормы, {ОбщаяФорма.ПечатьДокументов.Форма(799)}:ПечатныеФормы = УправлениеПечатью.СформироватьПечатныеФормы(Параметры.ИмяМенеджераПечати, ИменаМакетов, {ОбщаяФорма.ПечатьДокументов.Форма(61)}:КоллекцияПечатныхФорм = СформироватьПечатныеФормы(Параметры.ИменаМакетов, Отказ); [ОшибкаВоВремяВыполненияВстроенногоЯзыка] по причине: Ошибка вывода результата по причине: Ошибка при выводе результата по причине: Ошибка получения данных по причине: Ошибка создания набора данных "НаборДанных1" [ОшибкаНастроекКомпоновкиДанных] по причине: Ошибка при исполнении запроса набора данных по причине: Недостаточно прав для работы с таблицей "РегистрСведений.ДистанционнаяРаботаСотрудников" [НарушениеПравДоступа]
    

    Ключевая строка здесь: Недостаточно прав для работы с таблицей "РегистрСведений.ДистанционнаяРаботаСотрудников" [НарушениеПравДоступа]. Она однозначно указывает на причину проблемы.

Причина ошибки: отсутствие прав на регистр "Дистанционная работа сотрудников"

Как мы выяснили из журнала регистрации, корень проблемы заключается в отсутствии у пользователя прав на чтение данных из Регистра сведений "Дистанционная работа сотрудников" (РегистрСведений.ДистанционнаяРаботаСотрудников). Почему печать кадрового перевода или увольнения, казалось бы, не связанного напрямую с дистанционной работой, требует доступа к этому регистру?

В последних версиях 1С ЗУП 3.1 (начиная с релизов 3.1.27.148/3.1.28.60) был значительно расширен функционал для учета дистанционной работы. Это включает в себя возможность отмечать сотрудников как работающих дистанционно в различных кадровых документах, для чего может потребоваться специальный анализ прав доступа к объекту. Даже если сам приказ о переводе или увольнении не касается перехода на дистанционную работу, печатные формы могут быть унифицированы или могут содержать блоки, которые пытаются получить информацию о текущем статусе работы сотрудника (очный, дистанционный, гибридный) для отображения в печатной форме или для внутренних проверок. Соответственно, программа обращается к регистру ДистанционнаяРаботаСотрудников для получения актуальной информации, и если прав на чтение нет, происходит отказ в формировании печатной формы.

Решение проблемы: предоставляем необходимые права доступа

Теперь, когда мы точно знаем причину, наша задача — предоставить пользователю недостающие права. В 1С ЗУП права доступа назначаются с помощью профилей групп доступа и ролей.

Шаги по предоставлению прав:

  1. Определяем, какой профиль назначен пользователю: Перейдите в АдминистрированиеНастройка пользователей и прав → Пользователи. Найдите пользователя, у которого возникла проблема, и посмотрите, какие профили групп доступа ему назначены. Зачастую это стандартные профили, такие как "Кадровик" или "Расчетчик".

  2. Находим нужную роль: В рамках обсуждения на форуме пользователи выяснили, что требуемое право на чтение регистра ДистанционнаяРаботаСотрудников часто входит в состав роли "Права на чтение данных расчета зарплаты".

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

    1. Перейдите в АдминистрированиеНастройка пользователей и прав → Профили групп доступа.
    2. Откройте профиль, назначенный пользователю (или его копию).
    3. На вкладке "Роли" найдите роль "Права на чтение данных расчета зарплаты" и убедитесь, что она включена.
    4. Если в конфигурации есть режим просмотра всех прав (через кнопку "Настроить права" или подобную), вы можете отфильтровать права по объекту РегистрСведений.ДистанционнаяРаботаСотрудников и посмотреть, какие роли предоставляют доступ к нему на чтение.
  3. Добавляем или изменяем профиль группы доступа:

    1. Если профиль, используемый кадровиком, является стандартным (например, "Кадровик"), не рекомендуется изменять его напрямую, так как обновления могут откатить ваши изменения. Вместо этого, создайте копию существующего профиля. Для этого выберите нужный профиль в списке Профили групп доступа, нажмите кнопку "Создать новый на основании" или "Копировать". Назовите его, например, "Кадровик (дополненный)".

    2. Откройте созданный профиль на редактирование. Перейдите на вкладку Роли. Найдите роль "Права на чтение данных расчета зарплаты" и установите для нее флажок, если он не установлен.

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

    3. Сохраните изменения в новом профиле.

    4. Назначьте новый профиль пользователю: Вернитесь в АдминистрированиеНастройка пользователей и правПользователи. Откройте карточку пользователя-кадровика. На вкладке "Права доступа" снимите старый профиль и назначьте новый, модифицированный профиль.

    5. Попросите пользователя перезапустить 1С и повторить попытку печати документа.

Дополнительные рекомендации и расширенная диагностика

Даже после выполнения вышеописанных шагов иногда может потребоваться дальнейшая настройка. Разберем возможные сценарии и полезные приемы:

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

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

  3. Ограничения доступа на уровне записей (RLS - Row Level Security): Помимо прав на объекты метаданных, в 1С существуют ограничения на уровне записей данных (RLS). Это означает, что даже при наличии прав на объект (например, на чтение регистра), пользователь может не видеть конкретные записи из-за настроенных фильтров. Хотя в нашем случае ошибка "Недостаточно прав для работы с таблицей..." обычно указывает именно на права на объект, а не на RLS, стоит иметь в виду такую возможность для более сложной диагностики. Проверить RLS можно в конфигураторе, изучив шаблоны ограничений для ролей.

  4. Поиск прав в конфигураторе: Если вы столкнулись с ошибкой доступа к объекту, который не так очевиден, как ДистанционнаяРаботаСотрудников, или если не можете найти нужную роль, используйте конфигуратор. Откройте конфигуратор, найдите проблемный объект метаданных (например, Регистры сведенийДистанционная работа сотрудников), откройте его свойства и перейдите на вкладку Права. Здесь вы увидите, какие роли имеют доступ к этому объекту и какие действия (чтение, изменение и т.д.) им разрешены. Это поможет вам найти существующую роль, которую нужно включить, или создать новую с минимальным набором необходимых прав.

  5. Роли, связанные с состоянием оригиналов документов (для ЗУП КОРП): В версии 1С ЗУП КОРП есть дополнительные механизмы учета оригиналов кадровых документов и их состояний (например, "Форма напечатана", "Оригинал получен"). Для работы с этими состояниями существуют специфические роли, такие как "Добавление и изменение состояний оригиналов первичных документов" или "Чтение состояний оригиналов первичных документов". Отсутствие таких прав может косвенно влиять на процесс печати, если система пытается обновить состояние документа после формирования печатной формы, но не имеет на это полномочий.

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

Таким образом, системный подход с использованием журнала регистрации и детальной проверкой прав доступа позволяет эффективно решать большинство проблем, связанных с сообщениями "Недостаточно прав" при работе с 1С ЗУП. Всегда начинайте с диагностики, ищите точное указание на объект и тип прав, а затем точечно корректируйте настройки доступа.

← На главную