Как исправить ошибку «Недопустимое значение» при создании документа «Отпуск» в 1С:ЗУП 3.1

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

При работе в программе 1С:Зарплата и управление персоналом 3.1 пользователи с правами кадровика часто сталкиваются с неприятной ситуацией: при попытке создать или открыть документ Отпуск, Отпуск без сохранения оплаты или Увольнение система выдает критическую ошибку. Текст ошибки обычно ссылается на общий модуль: {ОбщийМодуль.РасчетЗарплатыРасширенныйФормы.Модуль(278)}: Ошибка при установке значения атрибута контекста (Вид) ГруппаОтработаноОплачено.Вид = ВидГруппыФормы.ГруппаКолонок; по причине: Недопустимое значение. При этом у администратора системы такая ошибка не воспроизводится.

В этой статье мы подробно разберем, почему возникает этот сбой, проанализируем взаимосвязь ролей в системе и рассмотрим несколько способов решения проблемы — от простой настройки профилей до использования расширений.

Выясняем причину возникновения ошибки

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

Когда документ открывает пользователь с полными правами (Расчетчик или Администратор), все группы колонок и табличные части ему доступны. Но если документ открывает Кадровик, у которого в профиле настроены ограничения на просмотр зарплаты, платформа скрывает соответствующие элементы формы. Код конфигурации при этом все равно пытается обратиться к свойству Вид элемента, который для данного пользователя фактически отсутствует или недоступен для модификации. Это и приводит к возникновению исключения «Недопустимое значение».

Решение №1: Синхронизация ролей в профиле пользователя

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

Разберем, какие роли влияют на эту ситуацию:

  1. Чтение начисленной зарплаты расширенная
  2. Просмотр начисленной зарплаты в документах
  3. Редактирование начисленной зарплаты в документах

Вариант А: Кадровик должен видеть расчеты.
Если политика безопасности вашей компании позволяет кадровику видеть суммы начислений, необходимо добавить в его профиль роль Чтение начисленной зарплаты расширенная. Это «успокоит» программный код, так как элементы формы станут доступны, и ошибка исчезнет.

Вариант Б: Кадровик НЕ должен видеть зарплату (наиболее частый случай).
Проанализируем состав профиля кадровика. Ошибка часто возникает, если у пользователя есть роль Просмотр начисленной зарплаты в документах, но нет роли Чтение начисленной зарплаты расширенная. В этом случае система пытается отрисовать интерфейс для просмотра данных, на которые у пользователя нет прав доступа в базе данных. Решение: полностью исключите из профиля кадровика все роли, связанные с просмотром и редактированием зарплаты:

После удаления этих ролей элементы группы ГруппаОтработаноОплачено перестанут инициализироваться, и документ будет открываться в чисто «кадровом» интерфейсе без ошибок. Для наглядного анализа и редактирования прав пользователей можно использовать отчет по ролям и профилям доступа.

Решение №2: Использование официальных патчей

Поскольку данная проблема признана разработчиками 1С как зарегистрированная ошибка (например, Ошибка 10229662), компания периодически выпускает оперативные исправления — патчи. Посмотрим, как проверить наличие исправлений:

  1. Перейдем в раздел Администрирование — Обслуживание.
  2. Откроем пункт Обновление программы — Установленные исправления (патчи).
  3. Нажмем кнопку Поиск обновлений. Если ваша конфигурация находится на поддержке, система предложит скачать патч, содержащий исправление для модуля РасчетЗарплатыРасширенныйФормы.

Решение №3: Создание расширения (для программистов)

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

Пример кода, который можно внедрить в расширение для общего модуля (метод УстановитьСвойстваГруппОтработаноОплачено или аналогичный, где происходит обращение к группе):


&Вместо("УстановитьСвойстваГруппОтработаноОплачено")
Процедура ИНФ_УстановитьСвойстваГруппОтработаноОплачено(Форма, ИмяГруппы)
    Попытка
        ЭлементГруппы = Форма.Элементы.Найти(ИмяГруппы);
        Если ЭлементГруппы <> Неопределено Тогда
            // Проверяем, что это действительно группа, прежде чем менять вид
            ЭлементГруппы.Вид = ВидГруппыФормы.ГруппаКолонок;
        КонецЕсли;
    Исключение
        // Игнорируем ошибку, если у пользователя нет прав на этот элемент
        ЗаписьЖурналаРегистрации("Ошибка.ПраваДоступа", УровеньЖурналаРегистрации.Предупреждение, , , 
            "Не удалось установить вид группы " + ИмяГруппы + " для пользователя " + Пользователи.ТекущийПользователь());
    КонецПопытки;
КонецПроцедуры

Этот код предотвращает аварийное завершение работы программы. Если элемент ИмяГруппы (например, наша ГруппаОтработаноОплачено) не найден на форме из-за ограничений прав, система просто пропустит этот шаг вместо вывода сообщения об ошибке.

Подведем итоги

Разберем алгоритм действий при возникновении ошибки «Недопустимое значение» в ЗУП 3.1:

  1. Проверьте роли пользователя. Самый быстрый способ — убедиться, что роли Чтение зарплаты и Просмотр в документах либо обе включены, либо обе выключены. Синхронизация этих прав решает проблему в 90% случаев.
  2. Очистите кэш. Иногда после изменения состава ролей платформа «помнит» старую структуру формы. Рекомендуется очистить кэш пользователя или перезапустить сеанс с параметром /ClearCache.
  3. Установите патчи. Проверьте раздел «Исправления» в администрировании — скорее всего, решение от 1С уже выпущено для вашего релиза. При работе с несколькими системами автоматизируют обновление и обслуживание баз 1С по расписанию.

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

← На главную