К статье
Практический материал

Разработка и Конфигурация · 10 мин

Как создать план видов расчета в 1С

Как создать план видов расчета в 1С: настройка предопределённых видов расчёта, зависимостей от базы, вытеснения и формул. Практические примеры и типичные ошибки.

План видов расчета — объект метаданных, который описывает логику начислений и удержаний: оклад, премии, больничные, алименты, налоги. Без него регистр расчета не сможет хранить записи, а документы — формировать проводки по зарплате. По сути, это «словарь» всех способов, которыми система считает деньги сотрудникам.

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

Ниже разобран полный цикл: от создания объекта в конфигураторе до проверки расчёта на тестовых данных. Инструкция ориентирована на управляемые формы, но общая логика одинакова для любой современной платформы 1С:Предприятие 8.

Где находится объект и что нужно подготовить

Откройте конфигуратор в режиме «Конфигурация → Открыть конфигурацию». В дереве метаданных найдите ветку «Планы видов расчета». В типовых конфигурациях там уже есть объекты — например, «Начисления» и «Удержания». В пустой конфигурации ветка будет пустой, и объект создаётся через контекстное меню «Добавить».

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

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

Создание плана видов расчета в конфигураторе

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

На закладке «Расчёт» укажите ключевые параметры: признак использования периода действия и зависимость от базы. Зависимость по периоду действия означает, что база для расчёта (например, для премии «процентом от оклада») будет собираться за фактически отработанный период с учётом вытеснений. Зависимость по периоду регистрации берёт данные за календарный период без учёта вытеснения.

На закладке «Прочее» создайте нужные реквизиты — например, «КатегорияНачисления» или «СпособОтраженияВУчёте». Эти поля будут заполняться у каждого вида расчета и использоваться в формулах и отчётах.

Порядок создания плана видов расчета
  1. 1
    Откройте конфигуратор и ветку «Планы видов расчета»
  2. 2
    Добавьте новый объект, задайте имя и синоним
  3. 3
    На закладке «Расчёт» укажите зависимость от базы и использование периода действия
  4. 4
    Добавьте реквизиты на закладке «Прочее»
  5. 5
    Создайте предопределённые виды расчета с формулами
  6. 6
    Свяжите план с регистром расчета и обновите конфигурацию базы данных

Настройка предопределённых видов расчета

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

Для каждого предопределённого вида укажите формулу расчёта. Формулы пишутся на встроенном языке с использованием предопределённых параметров: Результат = ТарифнаяСтавкаМесячная * ВремяВДнях / НормаВремениВДнях. Набор доступных показателей зависит от того, какие из них вы определили в конфигурации.

Особое внимание уделите закладкам «Базовые» и «Вытесняющие» у каждого вида расчета. Базовые — это начисления, от суммы которых зависит текущий расчёт (для премии от оклада база — оклад). Вытесняющие — те, что отменяют текущий за период совпадения: например, больничный вытесняет оклад за дни болезни. Ошибка в этих списках — самая частая причина неверных сумм.

Связь с регистром расчета

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

В регистре определите измерения (например, «Сотрудник», «Организация»), ресурсы («Результат», «ОтработаноДней») и реквизиты. Если планируются перерасчёты, добавьте связанный объект «Перерасчёты» — он позволит системе автоматически отслеживать записи, требующие повторного расчёта после изменения исходных данных.

После обновления конфигурации базы данных проверьте, что движения документа-начисления формируют записи в регистре. Обычно документ содержит табличную часть с сотрудниками и видами расчета, а в процедуре ОбработкаПроведения формируются записи регистра с последующим вызовом расчёта.

bsl
// Пример формирования записи регистра расчета в модуле документа
Движение = Движения.НачисленияОрганизации.Добавить();
Движение.ПериодРегистрации = Дата;
Движение.ПериодДействияНачало = НачалоМесяца(Дата);
Движение.ПериодДействияКонец = КонецМесяца(Дата);
Движение.ВидРасчета = СтрокаТаблицы.ВидРасчета;
Движение.Сотрудник = СтрокаТаблицы.Сотрудник;
Движения.НачисленияОрганизации.Записать();
// Расчёт записей выполняется отдельно через процедуру расчета регистра

Проверка расчёта на тестовых данных

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

Затем проверьте вытеснение: введите больничный на часть месяца и перепроведите расчёт. Сумма оклада должна уменьшиться пропорционально дням болезни. Если уменьшения не произошло — проверяйте список вытесняющих видов у оклада и признак периода действия в плане.

Третий тест — зависимость от базы. Добавьте премию «процентом от оклада» и убедитесь, что её база учитывает фактически рассчитанный (уже уменьшенный больничным) оклад, а не первоначальную сумму.

Контрольные точки

Как проверить результат

Запись в регистре расчета после проведения документа
Норма

Запись есть, результат соответствует ручному расчёту по формуле

Тревожный признак

Записи нет или результат равен нулю при корректных исходных данных

Вытеснение оклада больничным
Норма

Оклад пересчитан пропорционально фактически отработанным дням

Тревожный признак

Оклад начислен за полный месяц несмотря на больничный

База для зависимого расчёта
Норма

Премия считается от фактического результата базового вида

Тревожный признак

Премия считается от плановой суммы или база пуста

Типичные ошибки и ограничения

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

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

Типичные ошибки
01
Не настроен список вытесняющих видов расчета — оклад не уменьшается при больничном или отпуске
02
Записи регистра сформированы, но процедура расчёта не вызвана — результат остаётся пустым
03
Вид расчета удалён при наличии записей в регистре — отчёты показывают ошибки и битые ссылки
04
Зависимость от базы указана по периоду регистрации вместо периода действия — премия считается без учёта вытеснений
05
Изменена формула без перерасчёта прошлых периодов — старые и новые данные стали несопоставимы

Учитывайте и ограничения механизма: план видов расчета не предназначен для разовых операций без периодической логики — для них проще использовать обычные регистры накопления. А для сложных многоуровневых расчётов с произвольными алгоритмами формулы плана могут оказаться недостаточны, и часть логики придётся переносить в программный код.

Итог

Что важно запомнить

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

Частые вопросы

Можно ли добавить новый вид расчета без конфигуратора?

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

Чем план видов расчета отличается от плана видов характеристик?

План видов характеристик описывает произвольные свойства объектов (цвет, размер, дополнительные реквизиты) и не содержит расчётной логики. План видов расчета предназначен именно для периодических расчётов: поддерживает период действия, зависимость от базы, вытеснение и связь с регистрами расчета.

Нужно ли создавать отдельные планы для начислений и удержаний?

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

Почему результат расчёта не пересчитывается после изменения данных?

Записи регистра расчета не пересчитываются автоматически. Нужно либо перепровести документ с вызовом процедуры расчёта, либо использовать механизм перерасчётов: он фиксирует затронутые записи, а отдельная процедура или регламентное задание выполняет повторный расчёт.

Как изменить формулу, если по виду расчета уже есть данные?

Измените формулу в конфигураторе, обновите конфигурацию базы данных и выполните перерасчёт всех затронутых периодов. Без перерасчёта старые записи сохранят результат по прежней формуле, и данные разных периодов станут несопоставимыми. Перед изменением сделайте резервную копию и зафиксируйте контрольные суммы для сверки.

Что делать, если вытеснение не срабатывает?

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