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

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

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

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

1. Выясняем причину проблемы: системный баг релиза

Описанная ситуация представляет собой зарегистрированную ошибку (баг) конфигурации 1С:ЗУП 3.1, которая активно проявлялась в ветках релизов 3.1.9.х и 3.1.10.х (в частности, в релизе 3.1.10.50).

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


// Фрагмент проблемного кода в модуле формы
Процедура ОбновитьКомандыОбменаФормыСписка()
    // Программа проверяет жестко заданные роли
    ДоступенОбмен = ПравоДоступа("ИнтерактивноеДобавление", Метаданные.Документы.ВедомостьНаВыплатуЗарплатыВБанк) 
                    И РольДоступна("ПолныеПрава"); // Ошибочное сужение прав в кодовой базе
    
    Элементы.ФормаВыгрузитьФайл.Видимость = ДоступенОбмен;
КонецПроцедуры

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

2. Влияние других настроек системы на видимость кнопок

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

  1. Настройка зарплатного проекта: Перейдите в раздел Выплаты — Зарплатные проекты. Откройте карточку вашего проекта и убедитесь, что установлен флажок «Использовать обмен электронными документами». Если этот флаг случайно снят, кнопки выгрузки исчезнут у всех пользователей, включая администраторов.
  2. Интеграция с ERP или Комплексной автоматизацией: Если ваша база 1С:ЗУП работает в связке с ERP-системой, логика обмена с банком меняется. Разработчики заложили правило: выгрузку реестра осуществляет принимающая бухгалтерия на стороне ERP. В этом случае кнопка «Выгрузить» в самой ЗУП скрывается программно, а обмен переносится в документ «Платежное поручение» на стороне ERP.

3. Как решить проблему без обновления конфигурации (Временные варианты)

Если на вашем предприятии процесс обновления программного обеспечения регламентирован и не может быть выполнен оперативно, рассмотрим альтернативные варианты обхода этой ошибки.

Вариант А. Индивидуальная выгрузка из ведомостей
Расчетчик может выгрузить файл для банка непосредственно из самого документа Ведомость в банк. Внутри документа кнопка Выгрузить файл остается доступной и работоспособной даже при наличии бага в общей обработке. Однако этот способ неудобен, если требуется отправить сразу 10–20 ведомостей в одном реестре.

Вариант Б. Использование расширения конфигурации (Рекомендуется для программистов)
Чтобы исправить ошибку, не снимая базу с поддержки, мы можем создать простое расширение. Нам потребуется перехватить процедуру ОбновитьКомандыОбменаФормыСписка в модуле формы обработки ОбменСБанкамиПоЗарплатнымПроектам и принудительно установить видимость кнопок для пользователей с профилем «Расчетчик».

Рассмотрим пример кода, который необходимо внедрить в расширение:


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

Данный код гарантирует, что при открытии обработки пользователем с правами расчетчика кнопки управления обменом останутся видимыми.

4. Кардинальное решение проблемы

Единственным правильным и долгосрочным решением является обновление конфигурации 1С:ЗУП 3.1. Ошибка была официально признана разработчиками фирмы «1С» и полностью устранена, начиная с релиза 3.1.10.78.

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

← На главную