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

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

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

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

Причина парадокса: логика разделения HR и расчета

Разберем ситуацию, когда при попытке проведения документа Отпуск без сохранения оплаты система выдает сообщение: «Документ не рассчитан, поэтому не будет сохранен». Основная причина кроется в механизме многофункциональных документов. В ЗУП 3.1 реализована концепция разделения ответственности: кадровик заполняет распорядительную часть документа, а расчетчик — финансовую (начисления).

Система использует внутренний реквизит ДокументРассчитан (или связанный с ним статус утверждения). Проанализируем, почему полные права ведут себя иначе:

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

Влияние миграции из ЗУП 2.5 и функциональных опций

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

Рассмотрим подробнее константу ИспользоватьМногофункциональныеДокументы. Если эта функциональная опция выключена, в формах документов пропадают поля, связанные с утверждением расчета (например, флажок «Расчет утвердил»). Однако в самих данных (в базе) реквизиты ПерерасчетВыполнен или ДокументРассчитан могут оставаться в значении Ложь.

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

Шаги по решению проблемы

Для исправления ситуации выполним следующие действия:

1. Проверка функциональных опций
Необходимо зайти в меню «Настройки» — «Расчет зарплаты» и проверить состояние настроек, отвечающих за расчет и утверждение документов. Убедимся, что установлена опция, позволяющая разделять работу кадровика и расчетчика. Если она выключена, попробуем включить ее, чтобы на формах появились скрытые реквизиты.

2. Использование группового изменения реквизитов
Если документов много, и они были перенесены из старой базы, воспользуемся обработкой «Групповое изменение реквизитов». Для документов типа ОтпускБезСохраненияОплаты установим следующие значения:

Это позволит системе считать документ корректно завершенным.

3. Программная коррекция в общем модуле
Если требуется изменить логику проверки, проанализируем код в общем модуле ЗарплатаКадрыРасширенный. В процедуре ПроверитьУтверждениеДокумента() происходит извлечение текста ошибки. Рассмотрим пример кода, который отвечает за проверку ограничений:


Если ПраваНаДокумент.ОграниченияНаУровнеЗаписей.ИзменениеБезОграничений Тогда
    // Если у пользователя есть право на изменение без ограничений (Полные права),
    // система включает строгую проверку статуса расчета.
    Если Не ДокументОбъект.ПерерасчетВыполнен Тогда
        ТекстСообщения = ОписаниеДокумента.СообщениеДокументНеУтвержден;
        // Здесь происходит прерывание проведения
    КонецЕсли;
КонецЕсли;

Посмотрим на этот фрагмент: именно здесь проверяется право ИзменениеБезОграничений. Если оно есть, система требует установленного флага ПерерасчетВыполнен.

Особенности отладки в ЗУП 3.1

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

Проблема серверных вызовов и фоновых заданий:
В современных конфигурациях 1С проведение и расчет часто выносятся в фоновые задания или выполняются на сервере без передачи контекста клиенту. Чтобы точка останова сработала, необходимо:

  1. Включить отладку на сервере 1С (параметр -debug или использование HTTP-отладки).
  2. В конфигураторе зайти в меню «Отладка» — «Подключение» — «Автоматическое подключение» и установить флажки «Серверные вызовы» и «Фоновые задания».
  3. Учитывать, что метод ОбработкаПроверкиЗаполнения вызывается платформой особым образом. Если вы не можете поймать его обычной точкой останова, попробуйте использовать метод ВызватьИсключение "Стоп" в самом начале процедуры, чтобы увидеть стек вызовов.

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

Резюме

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

← На главную