Почему пропала кнопка "Выгрузить в файл" в ЗУП 3.1 после обновления и как её вернуть?

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

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

Анализируем программную логику видимости кнопки

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

Проанализируем процедуру ОбновитьКомандыОбменаОбъекта, которая вызывается при создании формы. Именно здесь параметр РазрешенаОтправкаДокумента играет ключевую роль. Если он принимает значение Ложь, кнопка будет скрыта программно, даже если она физически существует в конфигураторе.


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

Если при отладке мы видим, что в переменную ПоказыватьКоманду попадает Ложь, значит, система считает условия для выгрузки невыполненными. Разберем основные причины такого поведения по шагам.

Шаг 1: Проверка настроек зарплатного проекта

Самая очевидная причина — сброс или некорректное заполнение настроек обмена в справочнике Зарплатные проекты. Программа скрывает кнопку выгрузки, если считает, что проект не предполагает электронного обмена. Проверим следующие настройки:

  1. Перейдем в раздел Выплаты — Зарплатные проекты.
  2. Откроем проект, используемый в проблемной ведомости.
  3. Убедимся, что установлена галочка "Использовать обмен электронными документами".
  4. Проверим правильность заполнения полей: Банк, Номер договора, Валюта.
  5. Обратим внимание на формат файла обмена (например, стандарт 3.6). Если формат не указан, механизмы формирования команд могут давать сбой.

Шаг 2: Проверка прав доступа

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

Шаг 3: Статус документа и дата начала обмена

Выясним, почему параметр РазрешенаОтправкаДокумента может принимать значение Ложь. В последних обновлениях 1С добавила проверки на состояние документа:

  1. Статус выплаты: Если в настройках учета установлен контроль подтверждения выплат, и документ уже имеет статус Выплачено, кнопка "Выгрузить" может скрываться, так как система считает операцию завершенной.
  2. Дата документа: Если дата ведомости меньше, чем дата начала использования электронного обмена, установленная в константах или настройках проекта, кнопка не появится.
  3. Тип выплаты: В некоторых случаях, если в поле Выплачивать выбрано значение, не соответствующее настройкам зарплатного проекта (например, "В межрасчетный период" при отсутствии таких настроек в проекте), алгоритм может скрыть команды выгрузки.

Шаг 4: Использование обходного пути (Журнал обмена)

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

  1. Перейдем в раздел Выплаты.
  2. Найдем пункт "Обмен с банками по зарплатным проектам".
  3. В открывшемся журнале создадим новую итерацию обмена или найдем нужную ведомость.
  4. Как правило, в этом журнале кнопка "Выгрузить файл" присутствует всегда, так как форма журнала использует иную логику построения команд.

Шаг 5: Очистка кэша и работа с метаданными

Если отладчик показывает, что все настройки верны, но свойство ЭлементФормы.Видимость упорно устанавливается в значение Ложь без видимых причин, мы имеем дело с повреждением кэша метаданных. Это часто происходит именно после "кривого" наката обновления. Выполним следующие действия:

  1. Очистка клиентского кэша: Удалим базу из списка и добавим её заново, либо запустим 1С с параметром /ClearCache.
  2. Очистка серверного кэша (для клиент-серверного варианта): Необходимо остановить службу сервера 1С:Предприятие и очистить содержимое папки snccntx в каталоге данных сервера.
  3. Проверка через "Изменить форму": Нажмем Еще — Изменить форму. Если кнопки нет даже в списке доступных элементов для отображения, значит, она исключена из состава формы на уровне платформенного механизма подключаемых команд.

Шаг 6: Радикальное решение — переустановка обновления

Как показывает практика (и опыт автора проблемы), иногда обновление конфигурации проходит с микро-сбоями, которые не диагностируются проверкой конфигурации, но влияют на работу динамических форм. Рассмотрим алгоритм действий в этом случае:

  1. Создадим полную резервную копию базы данных.
  2. Попробуем выгрузить конфигурацию в файл .cf из идентичной базы, где кнопка присутствует, и загрузить её в проблемную базу через Конфигурация — Загрузить конфигурацию из файла. Важно: этот метод подходит только если версии релизов полностью совпадают.
  3. Если загрузка .cf не помогла, следует восстановить базу из бэкапа до обновления и повторить процесс обновления заново, предварительно убедившись, что в процессе обновления никто не подключается к базе и не прерывает регламентные операции.

Разберем, почему простая загрузка .cf может не помочь. В современных конфигурациях 1С многие настройки интерфейса хранятся в системных справочниках и регистрах сведений (например, Параметры работы программ). При обновлении выполняются обработчики обновления, которые заполняют эти регистры. Если обработчик не отработал (например, из-за аварийного завершения сеанса), кнопка не появится, даже если программный код в .cf будет идеальным. Поэтому критически важно дождаться окончания выполнения всех регламентных процедур обновления при первом запуске в режиме "Предприятие".

Итоги

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

← На главную