При работе в программе 1С:Зарплата и Управление Персоналом 3.1 пользователи часто сталкиваются с методологической и технической сложностью: сотрудник отправлен в командировку, там он работал сверх установленной нормы, бухгалтер вводит документ Работа сверхурочно, но в печатной форме табеля Т-13 и в самом документе Табель отображается только код «К» (Командировка), а заветные часы с кодом «С» бесследно исчезают. Давайте разберем, почему так происходит, и как мы можем решить эту задачу несколькими способами.
Для начала проанализируем ситуацию с точки зрения логики конфигурации. В 1С:ЗУП 3.1 заложен жесткий механизм приоритетов состояний сотрудников. Когда мы проводим документ Командировка, система фиксирует состояние сотрудника как «В командировке». Согласно законодательству и алгоритмам программы, в этот период за работником сохраняется средний заработок.
Технически проблема кроется в процедурах общего модуля, в частности, как упоминалось в обсуждении, за это отвечает функция УчетРабочегоВремениРасширенный.ЗапросВТСоответствиеСостоянийВидамУчетаВремени. Программа формирует виртуальную таблицу, в которой каждому состоянию соответствует определенный вид времени. Для состояния «Командировка» приоритет выше, чем для «Явки». Поскольку Работа сверхурочно в типовой логике является дополнением к «Явке» (основному рабочему времени), то при отсутствии «Явки» (которую вытеснила командировка) системе «не к чему прикрепить» сверхурочные часы.
Проанализируем ситуацию: программа считает, что если человек в командировке, то всё его время уже оплачено по среднему заработку, и дополнительные часы не могут быть классифицированы как стандартная «сверхурочка» поверх графика, так как самого графика (явки) в этот день для системы нет.
Рассмотрим первый способ, который часто предлагают консультанты — включение функционала внутрисменных командировок. Чтобы проверить этот вариант, выполним следующие действия:
Командировка установим галочку Командировка на часть дня (внутрисменная).Разберем, к чему это приведет. В этом случае в табеле за этот день будет отражена Явка. Если мы введем документ Работа сверхурочно, то часы кода «С» благополучно появятся в табеле, так как они будут идти «в связке» с явкой. Однако у этого метода есть существенный минус: код «К» (Командировка) в табеле за этот день отображаться не будет, либо будет отображаться некорректно в зависимости от версии релиза. Если для вашей кадровой службы критично наличие кода «К» в Т-13, этот метод вам не подойдет.
Это самый быстрый и надежный способ для тех, кому нужно получить корректную печатную форму Т-13 «здесь и сейчас». Выясним, как это реализовать:
Командировка (для расчета среднего заработка).Работа сверхурочно (для начисления оплаты в 1.5 и 2-кратном размере).Табель за соответствующий месяц.К 8.К 8 С 1.Важный момент: В 1С:ЗУП 3.1 документ Табель является преимущественно информационным (если в настройках не выбран расчет «по табелю»). Оплата сверхурочных все равно рассчитается документом Начисление зарплаты и взносов на основании проведенного документа Работа сверхурочно. Ручная правка в табеле просто позволит вывести нужные символы в отчет Т-13.
Многие методологи рекомендуют использовать документ Работа в выходные и праздничные дни вместо сверхурочных, даже если работа была в будний день по графику сотрудника, но во время командировки. Посмотрим на преимущества этого подхода:
В отличие от «сверхурочки», вид времени «РВ» (Работа в выходные) в системе имеет особый статус и может сочетаться с командировкой (код «К/РВ») в типовой конфигурации без дополнительных доработок.
С точки зрения денег: оплата будет произведена в двойном размере (или в одинарном с предоставлением отгула), что часто соответствует требованиям ТК РФ при работе сверх нормы в командировке. В табеле Т-13 автоматически проставится К/РВ, что визуально подтверждает работу сверх нормы в период отсутствия.
Если проблема возникает регулярно, проанализируем возможность автоматизации. Мы можем создать собственный вид времени, например, «СК» (Сверхурочные в командировке).
Разберем по шагам:
?(ВремяВЧасах > 2, 2 * СтоимостьЧаса * 2 + (ВремяВЧасах - 2) * СтоимостьЧаса * 2, ВремяВЧасах * СтоимостьЧаса * 1.5)
После этого, при заполнении документа Данные для расчета зарплаты или Индивидуальный график (или ручной правке табеля), вы сможете использовать этот вид времени, и система не будет конфликтовать с документом Командировка так явно, как при использовании типовых механизмов.
Подводя итог, можно сказать, что поведение программы обусловлено приоритетами в регистре сведений ПредельныеСостоянияСотрудников и логикой работы компоновки данных в модулях учета времени. При формировании запроса для табеля система выполняет соединение данных графиков, отклонений и фактических данных. Если обнаружено состояние «Командировка», оно подавляет все виды времени, не помеченные как «совмещаемые» в программном коде.
Посмотрим на фрагмент логики, которую система использует при определении видов времени (упрощенно):
// Внутренняя логика ЗУП при определении основного вида времени
Если Состояние = Справочники.СостоянияСотрудников.Командировка Тогда
ВидВремени = Справочники.ВидыИспользованияРабочегоВремени.Командировка;
// Типовой код здесь не предусматривает добавление 'С',
// если только это не РВ или не специфические настройки внутрисменки
КонецЕсли;
Для исправления этой ситуации на уровне конфигурации (через расширение) потребуется вмешательство в механизм формирования ВТ (виртуальных таблиц) в модуле УчетРабочегоВремениРасширенный, что является достаточно трудоемкой задачей и может повлиять на расчет среднего заработка в будущем. Поэтому наиболее рекомендуемым остается Вариант 2 (ручная правка табеля) или Вариант 3 (использование РВ).
Таким образом, мы выяснили, что отсутствие сверхурочных в табеле при командировке — это не ошибка пользователя, а особенность архитектуры 1С:ЗУП 3.1. Выбор конкретного способа решения зависит от того, что для вас важнее: автоматизация расчета или строгое соответствие печатной формы Т-13 кадровым приказам.