В практике работы с конфигурацией 1С:Зарплата и управление персоналом 3.1 (ЗУП) программисты часто сталкиваются с парадоксальной ситуацией: пользователь с ограниченными правами (например, кадровик или расчетчик) может успешно провести или перепровести документ, в то время как системный администратор с Полными правами получает ошибку о том, что документ не рассчитан или не утвержден. Это кажется нелогичным, ведь полные права должны давать максимальный доступ ко всем операциям.
В данной статье мы подробно разберем, почему возникает этот «тупик», как архитектура ЗУП 3.1 разделяет кадровый и расчетный учет, и как правильно настроить систему после миграции данных из версии 2.5, чтобы избежать подобных блокировок.
Разберем ситуацию, когда при попытке проведения документа Отпуск без сохранения оплаты система выдает сообщение: «Документ не рассчитан, поэтому не будет сохранен». Основная причина кроется в механизме многофункциональных документов. В ЗУП 3.1 реализована концепция разделения ответственности: кадровик заполняет распорядительную часть документа, а расчетчик — финансовую (начисления).
Система использует внутренний реквизит ДокументРассчитан (или связанный с ним статус утверждения). Проанализируем, почему полные права ведут себя иначе:
Выясним истинную причину проблемы, которая часто проявляется после переноса данных из старых версий. При «кратком» или «полном» переносе из ЗУП 2.5 некоторые ключевые настройки программы могут не установиться автоматически.
Рассмотрим подробнее константу ИспользоватьМногофункциональныеДокументы. Если эта функциональная опция выключена, в формах документов пропадают поля, связанные с утверждением расчета (например, флажок «Расчет утвердил»). Однако в самих данных (в базе) реквизиты ПерерасчетВыполнен или ДокументРассчитан могут оставаться в значении Ложь.
Проблема заключается в следующем: поля на форме нет, пользователь не может физически нажать кнопку или поставить галочку, но код проверки в общем модуле ЗарплатаКадрыРасширенный продолжает требовать выполнения этого условия для пользователей с полными правами. В итоге администратор оказывается в тупике.
Для исправления ситуации выполним следующие действия:
1. Проверка функциональных опций
Необходимо зайти в меню «Настройки» — «Расчет зарплаты» и проверить состояние настроек, отвечающих за расчет и утверждение документов. Убедимся, что установлена опция, позволяющая разделять работу кадровика и расчетчика. Если она выключена, попробуем включить ее, чтобы на формах появились скрытые реквизиты.
2. Использование группового изменения реквизитов
Если документов много, и они были перенесены из старой базы, воспользуемся обработкой «Групповое изменение реквизитов». Для документов типа ОтпускБезСохраненияОплаты установим следующие значения:
ДокументРассчитан = ИстинаПерерасчетВыполнен = ИстинаЭто позволит системе считать документ корректно завершенным.
3. Программная коррекция в общем модуле
Если требуется изменить логику проверки, проанализируем код в общем модуле ЗарплатаКадрыРасширенный. В процедуре ПроверитьУтверждениеДокумента() происходит извлечение текста ошибки. Рассмотрим пример кода, который отвечает за проверку ограничений:
Если ПраваНаДокумент.ОграниченияНаУровнеЗаписей.ИзменениеБезОграничений Тогда
// Если у пользователя есть право на изменение без ограничений (Полные права),
// система включает строгую проверку статуса расчета.
Если Не ДокументОбъект.ПерерасчетВыполнен Тогда
ТекстСообщения = ОписаниеДокумента.СообщениеДокументНеУтвержден;
// Здесь происходит прерывание проведения
КонецЕсли;
КонецЕсли;
Посмотрим на этот фрагмент: именно здесь проверяется право ИзменениеБезОграничений. Если оно есть, система требует установленного флага ПерерасчетВыполнен.
Часто программисты жалуются, что отладчик «не останавливается» на нужных строках или точки останова становятся серыми. Разберем, как правильно настроить отладку в этой ситуации.
Проблема серверных вызовов и фоновых заданий:
В современных конфигурациях 1С проведение и расчет часто выносятся в фоновые задания или выполняются на сервере без передачи контекста клиенту. Чтобы точка останова сработала, необходимо:
-debug или использование HTTP-отладки).ОбработкаПроверкиЗаполнения вызывается платформой особым образом. Если вы не можете поймать его обычной точкой останова, попробуйте использовать метод ВызватьИсключение "Стоп" в самом начале процедуры, чтобы увидеть стек вызовов.Типичная ошибка: Попытка отладки в файловой копии базы без включения режима отладки для всех предметов. В файловом режиме также важно проверять, не выполняется ли расчет документа асинхронно.
Ситуация, когда полные права мешают проведению, — это не ошибка платформы, а следствие строгой бизнес-логики типового решения. Для исправления ситуации необходимо либо включить отображение расчетных реквизитов через функциональные опции и «утвердить» документы, либо массово обновить статусы документов через обработку, если они были некорректно перенесены из версии 2.5. Использование «костылей» в виде дублирования пользователей с частичными правами является временной мерой и не рекомендуется для постоянной эксплуатации.