Как добавить новый вид отпуска в документе Отпуска организаций в 1С:ЗУП 2.5

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

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

Выясним причину такого поведения системы и разберем два способа решения задачи: штатный (в режиме «1С:Предприятие») и программный (с доработкой в режиме «Конфигуратор»).

Архитектурные особенности механизма отпусков в ЗУП 2.5

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

  1. Кадровый и расчетный контуры: связка кадровых документов с цепочкой расчетных документов (например, начисление по среднему заработку, начисление невыходов).
  2. Печатные формы: алгоритмы заполнения унифицированных приказов Т-6 и Т-6а распределяют дни по разделам «А» (основной), «Б» (дополнительные и иные отпуска) и «В» (всего) на основе значений данного перечисления.
  3. Учет рабочего времени: автоматическое определение кодов для табеля учета рабочего времени Т-13.
  4. Персонифицированный учет: сопоставление периодов отсутствия с кодами стажа для отчетности в пенсионные фонды.

Способ 1. Штатная регистрация через дополнительный отпуск (без изменения конфигурации)

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

Разберем по шагам порядок действий в режиме «1С:Предприятие»:

  1. Настройка начисления: открываем план видов расчета Основные начисления организаций. Создаем новый вид расчета путем копирования предопределенного элемента «Дополнительный оплачиваемый отпуск». На вкладке «Использование» указываем признак «Является отпуском» и выбираем нужный вид ежегодного дополнительного отпуска. На вкладке «Время» задаем буквенный код для классификатора использования рабочего времени, а на вкладке «Бухучет» — способ отражения расходов.
  2. Оформление кадрового приказа: в документе Отпуска организаций выбираем сотрудника и стандартную причину отсутствия Отпуск ежегодный. При этом колонки основного отпуска оставляем незаполненными, а данные вносим исключительно в группу колонок «Дополнительный отпуск», выбрав только что созданный вид начисления.
  3. Расчет зарплаты: на основании кадрового документа расчетчик создает стандартный документ Начисление отпуска работникам организаций, в котором автоматически рассчитывается средний заработок по созданному виду расчета.

Способ 2. Программное добавление нового значения перечисления в Конфигураторе

Если требуется добавить абсолютно новую причину отсутствия (например, СуммированныеДниОтдыха), которая должна отображаться отдельной строкой в списке выбора, потребуется доработка конфигурации.

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

  1. Редактирование объекта метаданных: открываем Конфигуратор, находим перечисление ПричиныОтсутствияНаРаботеВОрганизации и добавляем в него новое значение — СуммированныеДниОтдыха.
  2. Формирование списка способов в общем модуле: открываем общий модуль ПроцедурыУправленияПерсоналом, находим процедуру заполнения доступных способов и добавляем новое значение:
    
    СписокСпособов.Добавить(Перечисления.ПричиныОтсутствияНаРаботеВОрганизации.ОтпускБезСохраненияЗарплаты);
    СписокСпособов.Добавить(Перечисления.ПричиныОтсутствияНаРаботеВОрганизации.СуммированныеДниОтдыха);
    
  3. Обработка заполнения в документе «Невыходы в организациях»: в модуле объекта документа НевыходыВОрганизациях в процедуре ОбработкаЗаполнения дополняем текст запроса и параметры для связки с планом видов расчета:
    
    // Добавляем параметр запроса
    Запрос.УстановитьПараметр(
        "ОсновноеНачислениеСуммированныеДни", 
        ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоНаименованию("Суммированные дни")
    );
    
    // В тексте запроса расширяем конструкцию ВЫБОР:
    // | КОГДА ТЧРаботникиОрганизации.ПричинаОтсутствия = ЗНАЧЕНИЕ(Перечисление.ПричиныОтсутствияНаРаботеВОрганизации.СуммированныеДниОтдыха)
    // | ТОГДА &ОсновноеНачислениеСуммированныеДни
    
  4. Проверка заполнения строк: в модуле объекта документа ОтпускаОрганизаций в процедуре ПроверитьЗаполнениеСтрокиРаботникаОрганизации добавляем условие проверки:
    
    И ПричинаОтсутствия <> Перечисления.ПричиныОтсутствияНаРаботеВОрганизации.СуммированныеДниОтдыха
    
  5. Управление доступностью колонок формы: в модуле формы документа ОтпускаОрганизаций в процедуре РаботникиОрганизацииПриПолученииДанных прописываем логику доступности дат рабочего года:
    
    ЯвляетсяСуммированнымиДнями = (ОформлениеСтроки.ДанныеСтроки.ПричинаОтсутствия = Перечисления.ПричиныОтсутствияНаРаботеВОрганизации.СуммированныеДниОтдыха);
    
    Если Элемент.Колонки.РабочийГодС.Видимость Тогда
        ОформлениеСтроки.Ячейки.РабочийГодС.ТолькоПросмотр = ((Не ЯвляетсяЕжегоднымОтпуском) И (Не ЯвляетсяСуммированнымиДнями));
    КонецЕсли;
    
    Если Элемент.Колонки.РабочийГодПо.Видимость Тогда
        ОформлениеСтроки.Ячейки.РабочийГодПо.ТолькоПросмотр = ((Не ЯвляетсяЕжегоднымОтпуском) И (Не ЯвляетсяСуммированнымиДнями));
    КонецЕсли;
    

Важные модули, требующие обязательной проверки

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

  1. Печатные формы Т-6 / Т-6а: необходимо добавить новое значение перечисления в алгоритм формирования текстового описания и секций приказа, иначе раздел «Б» в печатной форме останется пустым.
  2. Модули учета рабочего времени: в общем модуле УчетРабочегоВремени проверьте соответствие нового значения коду классификатора рабочего времени для корректного автозаполнения формы Т-13.
  3. Регламентированная отчетность по стажу: скорректируйте процедуры формирования сведений для персонифицированного учета, чтобы период нового отсутствия не приводил к ошибкам проверки отчетности и корректно кодировался для страхового стажа.
← На главную