Как заполнить табель учета рабочего времени сводно в 1С:ЗУП 3.1?

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

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

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

Разберем причины: почему в ЗУП 3.1 нет классического сводного табеля

Давайте разберемся, почему попытка просто записать общую сумму часов за месяц в одну ячейку (например, поставить «Я 168» на 1-е число месяца в обычном документе Табель) приводит к краху расчетов. В ЗУП 3.1 подневный учет является фундаментальной основой для работы механизмов вытеснения времени и расчета среднего заработка.

Если мы введем 168 часов явки на одно число месяца:

  1. Программа посчитает, что сотрудник отработал ровно 1 день продолжительностью 168 часов. В результате при расчете среднего заработка для отпусков и командировок количество отработанных дней за этот месяц будет равно единице, что критически занизит или завысит средний чек.
  2. Любое отклонение в этом месяце (например, больничный или отпуск на 14 дней) не сможет автоматически «вытеснить» отработанное время, поскольку программа не поймет, на какие именно дни месяца приходятся ваши сводные 168 часов.

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

Способ 1. Настройка сводного ввода времени через Шаблоны ввода исходных данных

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

Шаг 1. Перейдем в раздел Настройка — Шаблоны ввода исходных данных и создадим новый шаблон.

Шаг 2. На вкладке Операция укажем, что в документ будут вноситься данные по нескольким сотрудникам.

Шаг 3. На вкладке Виды времени выберем те виды времени, которые планируем вводить сводно (например, Явка, НочныеЧасы, Праздники).

Шаг 4. Важный нюанс! В нижней части вкладки в разделе «Время вводится» обязательно переключим флаг в положение «В целом за период». Именно эта настройка скажет программе, что нам не нужна подневная сетка на 31 день, а достаточно одного итогового поля для ввода общей суммы часов за месяц.

Шаг 5. Запишем шаблон. Теперь в разделе Зарплата — Данные для расчета зарплаты мы можем создавать документы по этому шаблону, быстро заполнять список сотрудников и проставлять им итоговые часы за месяц.

Способ 2. Использование сводных показателей расчета (Альтернативный вариант)

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

Мы создаем собственный показатель, например, ОтработаноЧасовСводно (раздел Настройка — Показатели расчета зарплаты). Настраиваем его так, чтобы он вводился только в месяце расчета через документ ДанныеДляРасчетаЗарплаты.

Затем в формулу начисления (например, ОплатаПоОкладу) вместо стандартного показателя времени мы подставляем наш новый показатель. Формула может выглядеть следующим образом:

Результат = Оклад * (ОтработаноЧасовСводно / НормаВремениВЧасах)

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

Критические подводные камни сводного ввода времени

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

1. Проблема двойного начисления при командировках и больничных (Конфликт вытеснения).
Представим, что у сотрудника по графику норма 160 часов. Он отработал половину месяца, а оставшиеся 80 часов провел в командировке. Если мы сводно введем в документ ДанныеДляРасчетаЗарплаты фактически отработанные 80 часов явки, программа при расчете документа НачислениеЗарплатыИВзносов столкнется с конфликтом. Происходит наложение планового времени, фактически введенного сводного времени и времени отклонения. В итоге дни командировки могут умножиться в расчете, а программа начислит сумму, в разы превышающую реальный оклад сотрудника.

2. Проблема при расчете увольнения посреди месяца.
В ЗУП 3.1 присутствует известная проблема: если по сотруднику в текущем месяце введен сводный документ расчета времени, то при проведении документа Увольнение до окончательного расчета месяца все суммы по окладу и связанным надбавкам удваиваются. Программа пытается рассчитать оклад и по графику, и по введенным сводным данным одновременно.

3. Путаница с ночными и праздничными часами.
Если вы используете вид времени РабочееВремя в формуле оклада, и при этом вводите сводно Явка = 120 часов и Ночные = 20 часов, программа может просуммировать их и рассчитать оклад исходя из 140 часов. Чтобы этого избежать, всегда проверяйте настройки начисления: на вкладке Учет времени должен стоять конкретный вид времени Явка, а не общее РабочееВремя.

Рекомендуемые и безопасные альтернативы в ЗУП 3.1

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

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

Вместо того чтобы ломать алгоритмы программы сводным вводом, мы можем использовать документ ИндивидуальныйГрафик (раздел Зарплата — Индивидуальные графики).

Этот документ вводится в конце месяца, когда все фактические выходы сотрудников уже известны. Табельщик или кадровик просто заполняет этот документ реальными подневными часами работы сотрудников. Документ ИндивидуальныйГрафик полностью замещает собой основной плановый график сотрудника на данный месяц. При этом документы отклонений (командировки, больничные) будут штатно вытеснять рабочее время без каких-либо математических ошибок.

Сценарий Б. Автоматизация подневного ввода через внешнюю обработку

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

Давайте посмотрим на пример концептуального кода, который может использоваться программистом для автоматического заполнения подневных данных из внешнего файла Excel (заполняемого мастерами на участках):


&НаСервере
Процедура ЗагрузитьДанныеИзФайлаНаСервере(ДокументСсылка, ПутьКФайлу)
    // Создаем объект для чтения Excel
    Эксель = Новый COMОбъект("Excel.Application");
    Книга = Эксель.Workbooks.Open(ПутьКФайлу);
    Лист = Книга.Sheets(1);
    
    ДокументОбъект = ДокументСсылка.ПолучитьОбъект();
    ДокументОбъект.ДанныеОВремени.Очистить();
    
    Строка = 2; // Предположим, данные начинаются со 2-й строки
    Пока ЗначениеЗаполнено(Лист.Cells(Строка, 1).Value) Цикл
        СотрудникСсылка = Справочники.Сотрудники.НайтиПоКоду(Лист.Cells(Строка, 1).Value);
        Если Не СотрудникСсылка.Пустая() Тогда
            НоваяСтрока = ДокументОбъект.ДанныеОВремени.Добавить();
            НоваяСтрока.Сотрудник = СотрудникСсылка;
            НоваяСтрока.ВидВремени = Справочники.ВидыИспользованияРабочегоВремени.Явка;
            // Заполняем подневные часы из колонок файла
            Для День = 1 По 31 Цикл
                НоваяСтрока["ВремяЗаДень" + День] = Лист.Cells(Строка, День + 1).Value;
            КонецЦикла;
        КонецЕсли;
        Строка = Строка + 1;
    КонецЦикла;
    
    ДокументОбъект.Записать(РежимЗаписиДокумента.Запись);
    Книга.Close(Ложь);
    Эксель.Quit();
КонецПроцедуры

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

← На главную