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