Почему в 1С:ЗУП и 1С:КА весь май и июнь заполняются нерабочими оплачиваемыми днями и как это исправить?

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

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

В этой статье мы подробно разберем техническую природу этой программной ошибки, проанализируем её последствия для расчета среднего заработка, выясним различия в логике отражения памятных дат лета 2020 года и рассмотрим все возможные способы исправления ситуации: от временных ручных манипуляций в регистрах до глобального обновления программных продуктов 1С.

Техническая причина сбоя: анализируем программный код

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

Изначально разработчики фирмы 1С проектировали данный механизм под непрерывный период нерабочих дней, объявленный весной 2020 года в связи с неблагоприятной эпидемиологической обстановкой. Функция была написана по упрощенной схеме и возвращала объект типа СтандартныйПериод. Особенность этого типа данных в платформе 1С заключается в том, что он может содержать в себе строго одну дату начала и одну дату окончания. Он физически не умеет хранить «рваные» интервалы или списки разрозненных периодов с рабочими днями между ними.

Проанализируем упрощенный алгоритм работы старой версии этой функции:


Функция ПериодОплатыНерабочихДней2020() Экспорт
    // Выбираются все записи из регистра сведений ПериодыНерабочихДнейКалендаря
    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |	ПериодыНерабочихДней.ДатаНачала КАК ДатаНачала,
        |	ПериодыНерабочихДней.ДатаОкончания КАК ДатаОкончания
        |ИЗ
        |	РегистрСведений.ПериодыНерабочихДнейКалендаря КАК ПериодыНерабочихДней";
    
    Выборка = Запрос.Выполнить().Выбрать();
    
    МинимальнаяДата = '39991231';
    МаксимальнаяДата = '00010101';
    
    Пока Выборка.Следующий() Цикл
        Если Выборка.ДатаНачала < МинимальнаяДата Тогда
            МинимальнаяДата = Выборка.ДатаНачала;
        КонецЕсли;
        Если Выборка.ДатаОкончания > МаксимальнаяДата Тогда
            МаксимальнаяДата = Выборка.ДатаОкончания;
        КонецЕсли;
    КонецЦикла;
    
    // Возвращается единый объединенный период
    Возврат Новый СтандартныйPeriod(МинимальнаяДата, МаксимальнаяДата);
КонецФункции

До определенного момента в регистре сведений ПериодыНерабочихДнейКалендаря хранились только весенние периоды, которые шли практически непрерывно друг за другом (с конца марта до середины мая). Программа успешно справлялась с задачей. Однако позже, в соответствии с Указом Президента РФ от 29.05.2020 № 345, день проведения Парада Победы — 24 июня 2020 года — был объявлен нерабочим днем с сохранением заработной платы.

Фирма 1С выпустила обновление классификаторов, и в регистр ПериодыНерабочихДнейКалендаря добавилась новая изолированная строка с периодом действия с 24.06.2020 по 24.06.2020. Из-за этого простейший алгоритм поиска минимума и максимума в функции ПериодОплатыНерабочихДней2020() дал критический сбой. Функция взяла самую раннюю дату начала из регистра (30.03.2020) и самую позднюю дату окончания (24.06.2020), объединив их в один колоссальный непрерывный интервал нерабочих дней.

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

Критическое влияние на расчет среднего заработка

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

  1. Исключение периодов из расчета среднего заработка. Согласно официальным разъяснениям Минтруда РФ (в частности, Письму от 18.05.2020 № 14-1/В-585), дни, которые официально являлись оплачиваемыми нерабочими (код ОН), а также начисленные за них суммы, подлежат обязательному исключению из расчета среднего заработка для отпусков, командировок и других аналогичных случаев.
  2. Занижение или завышение отпускных. Когда программа ошибочно помечает весь май и июнь кодом ОН, она полностью выбрасывает эти месяцы из расчетного периода для среднего заработка будущих периодов. Это приводит к грубейшим искажениям сумм отпускных и компенсаций, нарушая права работников или приводя к нецелевому расходу средств работодателя.

Именно поэтому оставлять эту проблему нерешенной или просто «подправлять циферки в табеле вручную» категорически не рекомендуется. Требуется исправить сам механизм определения периодов и перезаполнить графики работы.

Различия в логике отражения дат: 24 июня и 1 июля 2020 года

При настройке производственных календарей и графиков работы важно понимать, что разработчики 1С заложили принципиально разный подход к учету двух главных летних нерабочих дней 2020 года:

Разница в трактовке этих дней требует аккуратности при их автоматическом или ручном вводе в систему.

Как решить проблему: пошаговые инструкции

Рассмотрим несколько вариантов решения проблемы в зависимости от возможности оперативного обновления вашей информационной базы.

Способ 1. Временное ручное редактирование регистра сведений

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

  1. Откройте меню «Функции для технического специалиста» (в старых версиях — «Все функции»). Для этого нажмите на главное меню в левом верхнем углу программы, перейдите в раздел «Настройки» и активируйте отображение этого режима, если он скрыт.
  2. Найдите в списке объектов Регистры сведений и выберите регистр Периоды нерабочих дней календаря.
  3. В открывшейся таблице вы увидите записи о периодах нерабочего времени. Найдите изолированную запись, соответствующую дню проведения Парада: с 24.06.2020 по 24.06.2020.
  4. Временно удалите эту запись или перенесите её в архив (например, изменив даты на неактуальные, если удаление заблокировано правами доступа).
  5. Вернитесь в графики работы сотрудников (раздел Настройка — Графики работы сотрудников), откройте проблемные графики за май и июнь и нажмите кнопку «Заполнить». Вы увидите, что рабочие дни мая и июня вернулись в нормальное состояние, а код ОН исчез с рабочих дат.
  6. Важно: После выполнения автозаполнения графиков день 24 июня временно станет обычным рабочим днем в графике. Вам потребуется зайти в график работы на дату 24 июня и вручную скорректировать её — указать 0 часов в строке явки и прописать запланированное количество часов (например, 8 часов) в строке Оплачиваемые нерабочие дни.

Способ 2. Установка официального патча (расширения) от 1С

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

  1. Перейдите в раздел Администрирование — Обслуживание — Обновление программы — Установленные исправления (патчи).
  2. Если у вас настроена автоматическая загрузка патчей через интернет-поддержку, система самостоятельно найдет и установит необходимый патч для вашего релиза (для программ ЗУП и Комплексная автоматизация).
  3. Если автоматическая загрузка отключена, скачайте файл патча со страницы релиза на портале 1С:Обновление программ и загрузите его вручную через кнопку «Установить исправление...».
  4. Перезапустите сеанс работы с программой и перезаполните графики. Код функции ПериодОплатыНерабочихДней2020() будет скорректирован патчем динамически.

Способ 3. Кардинальное обновление программы и производственного календаря

Наиболее надежным и правильным решением является обновление конфигурации до актуальных версий (для ЗУП — это релизы ветки 3.1.14.60/61, 3.1.10.470 и выше; для КА — релизы 2.4.12.75 и старше). В этих обновлениях разработчики полностью переработали архитектуру учета нерабочих дней:

  1. Выполните обновление конфигурации до актуального релиза в режиме Конфигуратора или через встроенный помощник обновлений.
  2. После обновления обязательно зайдите в раздел Настройка — Производственные календари и обновите ваш производственный календарь. Это можно сделать, нажав кнопку «Заполнить по умолчанию» или загрузив актуальные данные с веб-сервиса ИТС напрямую из формы календаря. При успешном обновлении день 24 июня выделится особым цветом (розовым/светло-красным), обозначающим оплачиваемый нерабочий день.
  3. Обратите внимание на кардинальное изменение интерфейса настроек! Перейдите в раздел Настройка — Расчет зарплаты — Настройка состава начислений и удержаний. На вкладке Почасовая оплата или в общих настройках расчета вместо одного глобального флага теперь присутствует табличная часть со списком конкретных периодов нерабочих дней 2020 года.
  4. Убедитесь, что напротив каждого нужного периода (включая период весеннего карантина и отдельно период 24 июня) установлены соответствующие флаги активности. Это позволит системе обрабатывать каждый интервал независимо, не объединяя их в одну общую "кашу".
  5. Откройте ваши графики работы сотрудников и нажмите кнопку «Заполнить». Программа автоматически расставит рабочие смены в мае и июне, а день 24.06.2020 заполнит кодом ОН с сохранением нормы времени и запланированных часов.

Специфика региональных производственных календарей

Проанализируем еще одну тонкость, с которой сталкиваются организации, имеющие филиалы в субъектах РФ с собственными праздничными днями (Татарстан, Башкортостан, Крым и др.).

Для таких регионов в программе создаются отдельные региональные производственные календари, являющиеся подчиненными по отношению к общегосударственному календарю РФ. При автоматическом обновлении классификаторов ИТС иногда может происходить сбой: общегосударственный календарь обновляется корректно, а в региональных календарях сведения о нерабочем дне 24 июня не появляются автоматически.

Если вы столкнулись с такой ситуацией, выполните следующие действия:

  1. Откройте региональный производственный календарь.
  2. Найдите дату 24 июня 2020 года, нажмите на нее правой кнопкой мыши и выберите пункт «Изменить день», установив для нее статус нерабочего (оплачиваемого) дня.
  3. Запишите и закройте календарь.
  4. Убедитесь, что в подчиненных графиках работы сотрудников, привязанных к данному региональному календарю, также установлена галочка При заполнении учитывать нерабочие дни, после чего перезаполните графики.

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

← На главную