При работе в программе 1С:Зарплата и Управление Персоналом (релиз 3.1.10.50) пользователи часто сталкиваются с неприятной ситуацией. Расчетчик или бухгалтер заходит в рабочее место «Выплаты — Обмен с банками (зарплата)», чтобы выполнить массовую отправку ведомостей, но на форме полностью отсутствуют кнопки для выгрузки файлов. При этом у администратора базы с полными правами все элементы управления отображаются корректно.
Попытки добавить пользователю все мыслимые роли, связанные с обменом данных, выплатами и ведомостями, не приносят результата. В этой статье мы подробно проанализируем ситуацию, выясним техническую причину такого поведения системы и рассмотрим по шагам методы решения данной проблемы.
Описанная ситуация представляет собой зарегистрированную ошибку (баг) конфигурации 1С:ЗУП 3.1, которая активно проявлялась в ветках релизов 3.1.9.х и 3.1.10.х (в частности, в релизе 3.1.10.50).
Давайте разберем внутреннюю логику работы формы обработки. Команды выгрузки на форме «Обмен с банками» не являются статическими элементами. Они формируются программно при открытии формы. За их видимость отвечает серверная процедура ОбновитьКомандыОбменаФормыСписка(), расположенная в модуле формы обработки. Проанализировав код этой процедуры в проблемных релизах, можно обнаружить ошибку в алгоритме проверки прав доступа:
// Фрагмент проблемного кода в модуле формы
Процедура ОбновитьКомандыОбменаФормыСписка()
// Программа проверяет жестко заданные роли
ДоступенОбмен = ПравоДоступа("ИнтерактивноеДобавление", Метаданные.Документы.ВедомостьНаВыплатуЗарплатыВБанк)
И РольДоступна("ПолныеПрава"); // Ошибочное сужение прав в кодовой базе
Элементы.ФормаВыгрузитьФайл.Видимость = ДоступенОбмен;
КонецПроцедуры
Из-за некорректного наложения условий программа ошибочно считает, что у обычного расчетчика (даже со специальными ролями для обмена с банками) недостаточно полномочий, и принудительно скрывает кнопки выгрузки. Для пользователей с ролью ПолныеПрава проверка всегда возвращает Истина, поэтому они баг не замечают.
Прежде чем переходить к коду и обновлениям, рассмотрим сопутствующие настройки системы, которые также могут влиять на отображение кнопок выгрузки. Рекомендуется проверить следующие параметры:
Если на вашем предприятии процесс обновления программного обеспечения регламентирован и не может быть выполнен оперативно, рассмотрим альтернативные варианты обхода этой ошибки.
Вариант А. Индивидуальная выгрузка из ведомостей
Расчетчик может выгрузить файл для банка непосредственно из самого документа Ведомость в банк. Внутри документа кнопка Выгрузить файл остается доступной и работоспособной даже при наличии бага в общей обработке. Однако этот способ неудобен, если требуется отправить сразу 10–20 ведомостей в одном реестре.
Вариант Б. Использование расширения конфигурации (Рекомендуется для программистов)
Чтобы исправить ошибку, не снимая базу с поддержки, мы можем создать простое расширение. Нам потребуется перехватить процедуру ОбновитьКомандыОбменаФормыСписка в модуле формы обработки ОбменСБанкамиПоЗарплатнымПроектам и принудительно установить видимость кнопок для пользователей с профилем «Расчетчик».
Рассмотрим пример кода, который необходимо внедрить в расширение:
&После("ОбновитьКомандыОбменаФормыСписка")
Процедура Расш_ОбновитьКомандыОбменаФормыСписка()
// Проверяем наличие роли расчетчика или стандартной роли обмена с банком
Если РольДоступна("ВыгрузкаВБанк") Или РольДоступна("ДобавлениеИзменениеВедомостейВБанк") Тогда
// Принудительно отображаем команды на форме
Элементы.ФормаВыгрузитьФайл.Видимость = Истина;
Если Элементы.Найти("ФормаОтправитьВБанк") <> Неопределено Тогда
Элементы.ФормаОтправитьВБанк.Видимость = Истина;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Данный код гарантирует, что при открытии обработки пользователем с правами расчетчика кнопки управления обменом останутся видимыми.
Единственным правильным и долгосрочным решением является обновление конфигурации 1С:ЗУП 3.1. Ошибка была официально признана разработчиками фирмы «1С» и полностью устранена, начиная с релиза 3.1.10.78.
После обновления до актуального релиза система корректно анализирует права доступа расчетчика к документам выплаты зарплаты, и кнопки в обработке «Обмен с банками» становятся доступными в штатном режиме без использования расширений и доработок.