Коллеги, сегодня мы разберем непростую, но весьма актуальную задачу: как автоматизировать выплату по одному больничному листу (БЛ) двумя разными ведомостями – отдельно сам больничный и отдельно доплату к нему – в системе 1С:Зарплата и управление персоналом (1С:ЗУП). Мы рассмотрим предложенные на форуме и типовые решения, проанализируем их плюсы и минусы, а также выработаем оптимальный подход, максимально использующий стандартные возможности программы и минимизирующий риски.
Первоначальная постановка задачи часто предполагает, что все начисления должны делаться одним документом – Больничный лист. Однако, когда речь заходит о раздельной выплате, возникают сложности. Нам был предложен подход с автоматическим созданием "технического" документа-пустышки для записи в регистр Зарплата к выплате. Этот подход сразу вызвал вопросы из-за своей нестандартности и потенциальных проблем. Давайте вместе выясним, почему такие решения часто неэффективны и как можно обойтись без них.
Прежде чем погружаться в сложные доработки, всегда полезно выяснить, какие возможности предоставляет типовой функционал 1С:ЗУП. К счастью, программа уже имеет механизмы для начисления доплаты к больничному листу, например, до фактического среднего заработка сотрудника. Давайте рассмотрим, как мы можем активировать и использовать эти возможности.
Для начала нам необходимо включить соответствующую опцию в настройках программы. Перейдем в раздел Настройка – Расчет зарплаты и найдем ссылку Настройка состава начислений и удержаний. На вкладке Прочие начисления мы должны установить флажок Доплата за дни болезни. После этого в списке начислений появится предопределенный вид начисления Доплата за дни болезни.
Размер процента доплаты, который будет применяться по умолчанию, можно установить в учетной политике организации. Для этого перейдем в раздел Настройка – Организации, выберем нужную организацию и на вкладке Учетная политика и другие настройки перейдем по ссылке Учетная политика. На вкладке Пособия ФСС (или в аналогичном разделе, связанном с настройками пособий) мы найдем поле для указания процента доплаты за дни нетрудоспособности. Этот процент будет автоматически подставляться во все новые документы Больничный лист, но, что важно, мы всегда можем изменить его вручную в каждом конкретном документе.
При создании или редактировании документа Больничный лист необходимо установить флажок Доплачивать до …% среднего заработка за время нетрудоспособности. После активации этого флажка и указания процента (если он не подтянулся автоматически из учетной политики), доплата будет рассчитана автоматически в рамках того же документа Больничный лист.
Это штатный механизм 1С:ЗУП, подробно описанный, например, в статье на ИТС "Начисление больничного с доплатой до фактического среднего заработка сотрудника в программе "1С:Зарплата и управление персоналом 8" (редакция 3)". Используя его, мы избегаем необходимости сложных доработок для самого расчета доплаты.
После того как мы убедились, что начисление доплаты можно осуществить типовым образом в одном документе Больничный лист, основной задачей остается раздельная выплата этих двух составляющих. Здесь мы рассмотрим несколько подходов, начиная с самых простых и наименее инвазивных.
Начиная с версии 3.1.25, 1С:ЗУП предлагает расширенные возможности автоматического распределения выплат сотрудника по различным местам. Это мощный инструмент, который мы можем использовать для нашей задачи.
В самом документе Больничный лист можно указать способ выплаты пособия. Этот способ определяет, в какую ведомость суммы по больничному листу (и, соответственно, доплаты, если они начисляются в рамках того же документа) будут автоматически включаться. Типовые способы включают "аванс", "зарплата" и "межрасчет". Выбрав "В межрасчетный период", мы можем создать отдельную ведомость специально для больничного, не дожидаясь общей выплаты аванса или зарплаты. Если требуется более тонкое разделение, мы можем создать собственные способы выплаты.
Для доплаты мы могли бы создать отдельный способ выплаты, например, "Доплата по БЛ". Однако, здесь важно помнить требование автора видеть доплату строчкой в самом документе БЛ. Если доплата рассчитывается в одном документе с БЛ, то и способ выплаты для всех сумм из этого документа будет один. Разделить их на уровне документа БЛ "по умолчанию" не получится без доработки.
Если же мы можем отойти от жесткого требования "доплата как строка в БЛ" и ввести доплату отдельным начислением (например, документом Разовое начисление, как предлагал Геннадий в сообщении 10), то тогда для этого отдельного документа мы можем четко указать свой способ выплаты. Это был бы самый простой и "штатный" способ разделить выплаты.
// Пример концепции: если доплата начисляется отдельным документом
// Документ: "Разовое начисление" (для доплаты)
// В реквизитах документа или при формировании движений регистра "Зарплата к выплате":
// Движение.СпособВыплаты = Справочники.СпособыВыплатыЗарплаты.НайтиПоНаименованию("Доплата по БЛ");
//
// А для основного "Больничного листа":
// Движение.СпособВыплаты = Справочники.СпособыВыплатыЗарплаты.НайтиПоНаименованию("Межрасчет");
Очень ценную идею предложили коллеги в сообщении 4. В регистре накопления Зарплата к выплате, который формирует данные для ведомостей, присутствуют измерения Статья финансирования и Статья расходов. Если детализация по таким статьям предусмотрена в настройках нашей организации, мы можем использовать их для разграничения сумм.
Например, для основной части больничного листа мы можем установить одну Статью расходов, а для доплаты – другую. При формировании ведомостей можно будет настроить отбор или группировку таким образом, чтобы суммы с разными статьями попадали в разные ведомости. Это требует настройки начисления таким образом, чтобы оно формировало движения по нужной статье, или доработки, которая будет корректировать движения регистра после расчета.
// Пример логики для разделения по статьям (может быть реализовано в коде начисления или расширении)
// При записи движений в регистр "Зарплата к выплате" для начисления "ДоплатаЗаДниБолезни":
// Если Начисление = ПланыВидовРасчета.Начисления.ДоплатаЗаДниБолезни Тогда
// Движение.СтатьяРасходов = Справочники.СтатьиРасходов.НайтиПоНаименованию("ДоплатаПоБольничному");
// Иначе
// Движение.СтатьяРасходов = Справочники.СтатьиРасходов.НайтиПоНаименованию("ОплатаБольничногоЛиста");
// КонецЕсли;
Этот подход не требует создания "документов-пустышек" и использует существующие измерения регистра, что делает его более "типовым" с точки зрения методологии, как отмечается в сообщении 19.
Если требование о включении доплаты "строчкой в сам док БЛ" (сообщение 5) окажется слишком дорогим или рискованным в реализации, стоит рассмотреть варианты, при которых доплата может оформляться отдельным документом, но с максимальной автоматизацией.
Сообщение 10 предлагает завести новое начисление, например, Доплата по БЛ до ФОТ с формулой РазмерДоплатыПоБЛ * ВремяВДнях. Показатель РазмерДоплатыПоБЛ задается в документах разовых начислений, которые вводятся на отдельные БЛ для избранных сотрудников.
Этот подход, хоть и нарушает первоначальное требование "один документ начисления", позволяет гибко управлять доплатами и их выплатой. Для такого отдельного документа мы без проблем можем указать отдельный способ выплаты, что решает задачу раздельной ведомости.
В сообщении 15 предложена интересная идея: сделать произвольную доплату ежемесячной, при условии, что введено время "Б" (болезнь) для сотрудника и только для тех, кому задан постоянный показатель, например, ПроцентДоплаты. В этом случае, при закрытии месяца документом Начисление зарплаты, будет еще одна строчка доплаты по БЛ у тех, кто болел и у кого задан ненулевой процент.
Этот способ позволяет избежать ручного ввода дополнительных документов и уменьшает риск забывчивости расчетчиц, но он также отступает от концепции "доплата как строка в БЛ" и переносит ее в документ по начислению зарплаты.
Чтобы избежать забывчивости расчетчиц при необходимости ввода отдельного документа для доплаты (если выбран такой путь), можно реализовать напоминания или даже автоматическое создание документов.
Расширения конфигурации позволяют добавить логику после проведения типового документа Больничный лист. Например, мы можем создать напоминание (сообщение 16) или даже автоматически формировать и заполнять документ Разовое начисление для доплаты (сообщение 18).
// Пример кода в расширении для создания напоминания или автоматизации
// Добавляем обработчик события 'ПриЗаписиНаСервере' для документа 'БольничныйЛист'
// или 'ОбработкаПроведения'
Процедура БольничныйЛист_ПриЗаписиНаСервере(Источник, Отказ)
Если Источник.ДоплатаРассчитана И Источник.Сотрудник.ОсобыйСтатусДляДоплаты Тогда
// Создание напоминания
СообщитьПользователю("Внимание! По больничному листу сотрудника " + Источник.Сотрудник +
" требуется отдельное оформление доплаты. Проверьте!");
// Или более продвинуто: автоматическое создание документа
// Если Источник.АвтоматическиСоздаватьДоплату Тогда
// НовыйДокументДоплата = Документы.РазовоеНачисление.СоздатьДокумент();
// НовыйДокументДоплата.Сотрудник = Источник.Сотрудник;
// НовыйДокументДоплата.Дата = Источник.Дата;
// НовыйДокументДоплата.Основание = Источник.Ссылка;
// НовыйДокументДоплата.ВидНачисления = ПланыВидовРасчета.Начисления.ДоплатаПоБЛДоФОТ;
// НовыйДокументДоплата.Размер = Источник.СуммаДоплаты; // или рассчитать по формуле
// НовыйДокументДоплата.Записать();
// СообщитьПользователю("Автоматически создан документ начисления доплаты " + НовыйДокументДоплата.Номер);
// КонецЕсли;
КонецЕсли;
КонецПроцедуры
Такой подход позволяет сохранить удобство для пользователя, минимизируя ручной труд, но при этом обходится без опасного изменения типового кода самого документа Больничный лист.
Приступая к решению подобных задач, мы обязаны помнить о потенциальных рисках и выбирать наиболее безопасные и поддерживаемые подходы. На форуме неоднократно звучали очень важные предупреждения, которые мы должны взять на вооружение.
Мы крайне не советуем (ОЧЕНЬ-ОЧЕНЬ) лезть в код документа Больничный лист. Как верно подмечено в сообщениях 7, 12 и 14, это может привести к колоссальным проблемам. Разберем подробнее почему:
Больничный лист тесно интегрирован с внешними системами, такими как СФР (Социальный фонд России) через электронный документооборот (ЭДО). При изменении формата БЛ или требований к ЭЦП (как упоминается в сообщении 12), наши доработки могут нарушить эту интеграцию, что приведет к проблемам с отправкой данных и получением пособий.Стремление "увидеть доплату строчкой в самом доке БЛ" (сообщение 5) без существенной переделки кода невозможно, а такая переделка – это "очень затратно по времени и деньгам" (сообщение 13) и "технически" сложно (сообщение 14).
Идея создания "технических" документов-пустышек для разделения выплат, предложенная в сообщении 1, является нестандартным решением и несет в себе риски:
Мы должны помнить, что доплата до среднего заработка за дни болезни не считается заработной платой. Для целей 6-НДФЛ она может отражаться с кодом дохода 4800 ("Иные доходы"), что влечет за собой соответствующие особенности по датам выплаты и удержания налога. Важно правильно настроить эти аспекты, чтобы избежать ошибок в отчетности.
Корректное отражение доплаты в бухгалтерском учете также критично. Для предопределенного начисления Доплата за дни болезни мы можем уточнить способ отражения в бухгалтерском учете на вкладке Налоги, взносы, бухучет, если требуется особая аналитика или счет затрат. С версии 3.1.25.36 в программе "1С:Зарплата и управление персоналом 8" добавлен новый списочный документ "Бухучет зарплаты сотрудников", который предназначен для установки способа отражения в бухучете зарплаты сотрудников, что дает дополнительные возможности для настройки.
Учитывая все вышесказанное, мы рекомендуем следующий алгоритм действий, который максимально использует типовой функционал и минимизирует риски.
Если мы еще не сделали этого, нам следует активировать и настроить типовой механизм доплаты за дни болезни, как было описано выше.
Больничный лист для сотрудников, которым положена доплата, не забудем установить флажок Доплачивать до …% среднего заработка за время нетрудоспособности и при необходимости скорректировать процент вручную.Таким образом, мы гарантируем, что расчет доплаты происходит корректно и в рамках одного документа Больничный лист.
Поскольку мы хотим выплачивать больничный и доплату разными ведомостями, но сохранять начисление в одном документе Больничный лист, наиболее адекватным решением (помимо создания двух отдельных начислений) будет использование измерений регистра Зарплата к выплате.
Мы рассмотрим подход с использованием Статей финансирования или Статей расходов, предложенный в сообщении 4, как наиболее "чистый" с методологической точки зрения.
Убедимся, что в нашей системе настроены необходимые Статьи расходов или Статьи финансирования. Если нет, создадим их, например: "Оплата больничного листа", "Доплата по больничному листу".
Теперь нам нужно, чтобы типовое начисление Оплата больничного листа и предопределенное начисление Доплата за дни болезни формировали движения в регистре Зарплата к выплате с разными статьями.
Для этого в карточке каждого вида начисления (раздел Настройка – Начисления) на вкладке Налоги, взносы, бухучет мы можем указать Способ отражения в бухучете. Если наша учетная политика позволяет детализировать статьи расходов по способам отражения, то мы можем создать два разных способа отражения – один для больничного, другой для доплаты – каждый из которых будет привязан к своей Статье расходов.
// Пример настройки Способа отражения для начисления "Доплата за дни болезни"
// Открыть карточку начисления "Доплата за дни болезни"
// Перейти на вкладку "Налоги, взносы, бухучет"
// В разделе "Бухгалтерский учет" выбрать или создать "Способ отражения"
// Например, создать "ДоплатаПоБЛ_91.02"
// В этом способе отражения настроить проводки и, если возможно, указать соответствующую "Статью расходов"
// (Если "Статья расходов" не напрямую в способе отражения, а определяется в разрезе проводок/аналитики)
//
// Аналогично для "Оплата больничного листа"
// Создать/выбрать "ОплатаБЛ_91.02" с другой "Статьей расходов"
В некоторых конфигурациях Статья расходов может определяться не напрямую в карточке начисления, а в документах отражения зарплаты в бухучете или через дополнительные настройки. Важно выяснить, как именно Статья расходов попадает в движения регистра Зарплата к выплате для каждого начисления.
Если типовые настройки не позволяют разнести статьи расходов автоматически при расчете в одном документе Больничный лист, мы можем использовать расширение для корректировки движений регистра Зарплата к выплате после проведения документа Больничный лист.
Создадим расширение и добавим обработчик события ПриЗаписиНаСервере или ОбработкаПроведения для документа Больничный лист. В этом обработчике мы можем получить движения, сформированные по документу, и изменить Статью расходов для тех движений, которые относятся к доплате.
// Пример кода в расширении для корректировки движений регистра "Зарплата к выплате"
// РасширениеДокумента.БольничныйЛист.ОбработкаПроведения(Отказ, РежимПроведения)
//
// Процедура БольничныйЛист_ОбработкаПроведения(Отказ, РежимПроведения)
// // Получаем набор записей регистра "ЗарплатаКВыплате" для текущего документа
// НаборЗаписей = РегистрыНакопления.ЗарплатаКВыплате.СоздатьНаборЗаписей();
// НаборЗаписей.Отбор.ДокументОснование.Установить(Ссылка);
// НаборЗаписей.Прочитать();
//
// СтатьяРасходовДоплата = Справочники.СтатьиРасходов.НайтиПоНаименованию("ДоплатаПоБольничному");
// СтатьяРасходовОплатаБЛ = Справочники.СтатьиРасходов.НайтиПоНаименованию("ОплатаБольничногоЛиста");
//
// Для Каждого ЗаписьРегистра Из НаборЗаписей Цикл
// Если ЗаписьРегистра.ВидРасчета = ПланыВидовРасчета.Начисления.ДоплатаЗаДниБолезни Тогда
// ЗаписьРегистра.СтатьяРасходов = СтатьяРасходовДоплата;
// ИначеЕсли ЗаписьРегистра.ВидРасчета = ПланыВидовРасчета.Начисления.ОплатаПоБольничнымЛистам Тогда
// ЗаписьРегистра.СтатьяРасходов = СтатьяРасходовОплатаБЛ;
// КонецЕсли;
// КонецЦикла;
//
// НаборЗаписей.Записать();
// КонецПроцедуры
Этот подход позволяет сохранить типовой расчет в документе Больничный лист и лишь скорректировать аналитику для выплаты.
После того как движения в регистре Зарплата к выплате будут иметь разные Статьи расходов для больничного и доплаты, при создании ведомостей (например, Ведомость в банк или Ведомость в кассу) мы сможем использовать эти статьи для отбора или группировки. Таким образом, мы легко сможем сформировать две отдельные ведомости.
После реализации и тестирования решения мы должны обеспечить его корректную работу и поддержку:
Мы выяснили, что автоматизация раздельной выплаты больничного листа и доплаты к нему в 1С:ЗУП возможна без использования "документов-пустышек" и без изменения сложного типового кода документа Больничный лист. Оптимальным решением будет использование типового функционала для начисления доплаты и дальнейшее разграничение выплат с помощью существующих измерений регистра Зарплата к выплате, таких как Статья финансирования или Статья расходов, возможно, с небольшой доработкой через расширение конфигурации для корректировки движений.
Всегда помним о принципах минимальных доработок и максимального использования типовых возможностей. Это обеспечивает стабильность работы системы, упрощает ее поддержку и снижает риски при обновлении и изменении законодательства. Такой подход позволит нам эффективно решить поставленную задачу, сохраняя надежность и прозрачность учетных процессов.