Расчет заработной платы на Платформе 1С 8: можно ли обойтись без реквизита КатегорияРасчета?
Все, кто работает в 1С 8 с расчетными механизмами, знают, что такое План видов расчета (ПВР), а также знают, каким образом изначально организуется порядок следования расчета отдельных начислений и удержаний в соответствии с "глубиной" их зависимости по базе.
Изначально, с самых первых версий ЗУП, в объекты конфигурации План видов расчета вводится реквизит КатегорияРасчета, значение которого пользователь должен задавать в соответствии с определенным "уровнем глубины" базовой зависимости каждого вида расчета (ВР). Например, ВР Оклад по дням, Оклад по часам, Оплата сверхурочных часов - не зависят по базе от других ВР, поэтому им пользователь назначает категорию расчета Первичное. Виды расчета Месячная премия и Квартальная премия - зависят по базе только от "первичных" ВР, поэтому им назначается категория расчета Зависимое первого уровня. Виды расчета Районный коэффициент и Северная надбавка зависят по базе как от "первичных" ВР, так и от "зависимых первого уровня" - следовательно, им назначается категория Зависимое второго уровня - и т.п.
Ручное назначение категории расчета чревато ошибками и неприятностями для пользователя. Если категория расчета установлена "меньшая", чем требуется, это приведет к неправильному значению суммы базы и ошибке при расчетах. А если такой вид расчета входит в базу других видов расчета, а те, в свою очередь, третьих, и т.д., то последствия всего лишь одной ошибки назначения категории расчета будут носить лавинообразный характер...
Современная версия ЗУП, правда, отслеживает ситуацию, когда в состав базы некоторого ВР вводится такой, категория расчета которого имеет больший либо равный уровень - в этом случае программа предлагает пользователю "повысить" категорию расчета данного ВР. Например, если в состав базы ВР Месячная премия (категория расчета Зависимое первого уровня) ввести вид расчета с такой же категорией, то будет предложено повысить категорию Месячной премии до Зависимое второго уровня. Однако для тех видов расчета, в базу которых входит Месячная премия, категория расчета не изменится, и пользователю все равно надо будет изменить все категории вручную, что по-прежнему чревато серьезными ошибками.
Таким образом, в общем случае неправильно установленное значение категории расчета влечет за собой длинный и широкий "хвост" ошибок расчета для всей информационной базы ЗУП. А учитывая, что состав базовых ВР у отдельных видов расчета может достигать нескольких десятков, а также то, что "глубина зависимости" по базе у некоторых созданных пользователем ВР может достигать четвертого и даже пятого уровня, ошибка в значении категории расчета может грозить срывом расчетного регламента у всего предприятия - и чем предприятие крупнее, тем последствия такого срыва значительнее.
Автор уже третий год ведет учебные занятия по курсу "Решение расчетных задач на Платформе 1С 8", и практически на каждом потоке находятся учащиеся, задающие один и тот же резонный вопрос: А зачем вообще нужен реквизит КатегорияРасчета, если структура ("дерево") базовой зависимости потенциально определяется из содержания табличных частей БазовыеВидыРасчета всех ПВР, следовательно, категория расчета в принципе может быть получена автоматически, расчетным путем?
В предлагаемой статье сделана попытка дать пример реализации такого алгоритма автоматического определения "категории расчета" каждого ВР перед началом расчетов.
Довольно широко известен алгоритм, который позволяет получить "дерево базовой зависимости" для видов расчета всех ПВР ЗУП примерно такого вида (приводится фрагмент для ВР Районный коэффициент):
|
Вид расчета |
План видов расчета |
|
Районный коэффициент |
Основные начисления организаций |
|
Доплата за вечерние часы |
Основные начисления организаций |
|
Доплата за ночные часы |
Основные начисления организаций |
|
Доплата за работу в праздники и выходные |
Основные начисления организаций |
|
Квартальная премия |
Дополнительные начисления организаций |
|
Месячная премия |
Дополнительные начисления организаций |
|
Доплата за вечерние часы |
Основные начисления организаций |
|
Доплата за ночные часы |
Основные начисления организаций |
|
Доплата за работу в праздники и выходные |
Основные начисления организаций |
|
Оклад по дням |
Основные начисления организаций |
|
Оклад по часам |
Основные начисления организаций |
|
Оплата по дневному тарифу |
Основные начисления организаций |
|
Оплата по производственным нарядам |
Основные начисления организаций |
|
Оплата по часовому тарифу |
Основные начисления организаций |