Как устранить ошибку пересечения периодов при начислении зарплаты в 1С:УПП 1.3?

Программист 1С v8.3 (Обычные формы) Бухгалтерский учет Промышленность, строительство и АПК
← На главную

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

Анализируем причину возникновения ошибки

Давайте выясним причину, по которой система блокирует проведение документа. В 1С:УПП 1.3 используется механизм регистров расчета с поддержкой периода действия. Если для двух начислений в одном и том же периоде (например, в рамках одного месяца) не настроены правила «взаимоотношений», программа считает это логической ошибкой: сотрудник не может одновременно работать по окладу и находиться в отпуске.

Посмотрим на фрагмент кода в регистре расчета ОсновныеНачисленияРаботниковОрганизаций, который отвечает за проверку перекрытия. Система перебирает периоды и сравнивает дату начала текущей записи с датой окончания предыдущей:


Периоды.Сортировать("ДатаНачала");
ПрошлаяДатаНачала = '0001-01-01';
ПрошлаяДатаОкончания = '0001-01-01';
// ... инициализация переменных ...
Для Каждого СтрокаПериода Из Периоды Цикл
    Если СПроверкойПерекрытия И СтрокаПериода.ДатаНачала < ПрошлаяДатаОкончания Тогда
        ТекстИсключения = ТекстИсключения + "(" + Формат(СтрокаПериода.ДатаНачала, "ДФ='дд МММ гг \"г.\"'") + " - " + Формат(ПрошлаяДатаОкончания, "ДФ='дд МММ гг \"г.\"'") + ")";
        ТекстИсключения = ТекстИсключения + Символы.ВК + "Вид расчета \"" + ПрошлыйВидРасчета + "\" введен документом " + ПрошлыйРегистраторПредставление;
        ВызватьИсключение ТекстИсключения;
    КонецЕсли;
КонецЦикла;

Если условие СтрокаПериода.ДатаНачала < ПрошлаяДатаОкончания выполняется, система прерывает проведение и выводит сообщение пользователю. Это означает, что для Вида расчета не задано вытеснение.

Способ 1. Настройка механизма вытеснения

Это самый правильный и методически верный способ решения проблемы. Мы должны «объяснить» системе, что Корпоративная оплата отпуска имеет приоритет над Окладом по дням и должна уменьшать (вытеснять) время работы по окладу.

Разберем по шагам, как это сделать:

  1. Перейдем в план видов расчета «Основные начисления организаций».
  2. Найдем в списке предопределенный вид расчета Оклад по дням (или тот основной заработок, который используется в вашей организации) и откроем его карточку.
  3. Перейдем на закладку «Прочее».
  4. В правой колонке под названием «Вытесняющие виды расчета» нажмем кнопку «Добавить».
  5. Выберем из списка ваш пользовательский вид расчета — Корпоративная оплата отпуска.
  6. Нажмем «ОК» для сохранения настроек.

Важный нюанс: также рекомендуется проверить закладку «Ведущие виды расчета» для самой Оплаты отпуска. Там должен быть указан Оклад по дням. Это необходимо для того, чтобы при изменении оклада система автоматически понимала, что средний заработок для отпуска также может потребовать пересчета.

Способ 2. Проверка последовательности ввода документов

В УПП 1.3 критически важен порядок регистрации событий. Рассмотрим правильный алгоритм действий, который поможет избежать технических ошибок в регистрах:

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

Если вы уже создали документ начисления зарплаты, а потом ввели отпуск, документ начисления зарплаты нужно перезаполнить или пересчитать (правой кнопкой мыши по строке сотрудника — «Рассчитать»), чтобы программа учла новое вытеснение.

Способ 3. Анализ настроек вида расчета

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

Помните: механизм вытеснения (периода действия) работает только в Основных начислениях. Если выплата не имеет протяженности во времени (например, разовая премия), она не может вытеснять оклад. Проверьте, чтобы ваш вид расчета отпуска был именно в «Основных начислениях» и у него был установлен признак «Использовать период действия».

Способ 4. Отключение контроля пересечений (не рекомендуется)

Если вам необходимо срочно провести документ и вы осознаете риски (например, понимаете, что сотруднику будет выплачен и полный оклад, и отпускные за одни и те же дни), контроль можно временно отключить.

Для этого в интерфейсе «Расчет зарплаты организаций» перейдем в меню:

Настройка параметров учета -> закладка Расчет зарплаты

Здесь необходимо снять флажок «Проверять пересечение периодов начислений при регистрации отклонений». Однако помните, что это «грязное» решение, которое в будущем может привести к путанице в отчетности по отработанному времени (табель П-12).

Технические нюансы исправления «битых» записей

Иногда после изменения настроек вытеснения документ все равно не проводится. Это может быть связано с тем, что в наборе записей регистра расчета остались старые, некорректные данные. Проанализируем, как очистить регистр:

Используя данные методы, вы сможете корректно настроить учет и избавиться от ошибок при расчете заработной платы в 1С:УПП 1.3.

← На главную