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