23.11.2023

1 с предприятие виды расчетов. ЗУП:введение


Вид расчета - это составляющая суммы зарплаты. Различают виды расчета начисления и удержания. Название и правила расчета начислений и удержаний описывают вид расчета. Название заносится в печатные формы расчетного листа и расчетной ведомости.

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

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

Планы видов расчетов в ЗУП составляют несколько списков. Каждый план видов расчета предназначен для описания однотипных видов расчета.

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

Виды расчета из одного плана видов расчета можно охарактеризовать схожими правилами и общими параметрами.

Для понимания алгоритмов и процесса расчета определим специальные термины.

Вид расчета

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

Вид расчета содержит:

  • способ (алгоритм) расчета, который задается формулой;
  • показатели формулы, которые используются в формуле расчета;
  • правила учета и налогообложения;
  • связи с иными видами расчетов (вытесняющие, базовые и зависимые виды расчетов

Зависимые и базовые виды расчетов

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

Очередность расчетов

в конфигурации это уровни зависимости начислений друг от друга. В данном продукте предлагают использовать четыре уровня зависимости записей: первичные; зависимые первого уровня; зависимые второго уровня; зависимые третьего уровня.

Категория начислений и удержаний определяет последовательность их расчета: сперва - рассчитываются первичные, после - первого уровня и т.д. Следовательно, результат первичного начисления не зависим от результатов других начислений.

Период регистрации и период действия

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

Период действия - это продолжительность расчета во времени, за которую производится начисление.

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

Базовый период

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

Ведущие и ведомые виды расчетов

Ведущие - это виды расчета, при изменении которых нужно пересчитать ведомые. Пример: при расчете премии как процента от оплаты по окладу за текущий месяц, изменение суммы оплаты по окладу (ведущий) влечет изменение суммы премии (ведомый).

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

Периодические начисления/удержания -

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

Разовые начисления/удержания

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

Способы расчета

Под данным термином понимают алгоритм расчета начисления или удержания. Это могут быть:

  • предопределенные алгоритмы, которые используют в регламентированном учете;
  • формулы с неограниченным количеством ключевых показателей, которые описывает пользователь (используют во всех видах учета).

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

План видов расчета — объект 1С 8.2 и 8.3, хранящий в себе сведений о типах видов расчетов и определяющий влияние разных расчетов друг на друга. Он так же, как и , похож на справочник, однако имеет свои особенности.

Рассмотрим особенности настройки плана видов расчета.

Особенности настройки плана видов расчетов в 1С

Самая интересная вкладка, с точки зрения разработчика, плана вида расчетов — Расчет. Рассмотрим свойства подробнее:

Использует период действия — свойство плана видов расчетов, определяющий, требуется ли использование периода в данном виде расчета. Например, вид расчета «Штраф» не требует использования периода действия в отличие от оклада.

Получите 267 видеоуроков по 1С бесплатно:

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

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

Базовые планы видов расчета — список планов расчетов, которые могут быть выбраны в качестве базы для объекта. Доступны для редактирования только в том случае, если Зависимость от базы установлено в значение, отличное от не зависит .

Свойства элемента плана расчетов в 1С

Рассмотрим свойства предопределенного элемента плана расчетов подробнее:

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

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

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

Расчет базы производится за базовый период, указанный в записи регистра расчета. Базовый период — это период, за который выбираются начисления из регистра расчета для определения базы. Базовый период может составлять менее месяца (например, при расчете надбавки за совмещение профессий, если совмещение длилось менее месяца) или несколько расчетных периодов (например, базовый период квартальной премии составляет 3 месяца).

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

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

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

Рис. Зависимость от базы

Рис. Частичное пересечение базового периода и периода действия

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

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

Например, если после расчета обнаружено, что работнику присвоена неверная тарифная ставка и результат оплаты по окладу необходимо рассчитать заново, то последовательно должны быть перерассчитаны и все надбавки, зависимые от оплаты по окладу, а также премии и северная надбавка. Задача непростая, особенно, если учесть что в обшем случае все эти начисления могут быть зарегистрированы в информационной базе несколькими документами. Программа позволяет автоматически отслеживать такие ситуации и определять список документов, которые требуется перерассчитать. Для использования механизма у каждого зависимого вида расчета необходимо указать список ведущих видов расчета.

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

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

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

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

Списки базовых и ведущих видов расчета настраиваются в форме зависимого вида расчета.

При настройке ведущих видов расчета необходимо так же, как и при настройке вытесняющих видов расчета, соблюдать правило: если вид расчета А является ведущим для вида расчета В, который в свою очередь является ведущим для вида расчета С, то в список ведущих для вида расчета С должны быть включены как вид расчета В, так и вид расчета А. В противном случае программа выдаст сообщение об ошибке: «Неполный список ведущих видов расчета!». Например, если в список ведущих начислений внесена Квартальная премия, то должны быть внесены и все ведущие начисления для квартальной премии, такие как Оклад по дням Оклад по часам и т.д.

Рис. Настройка базовых и ведущих видов расчета

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

Теория

Регистр расчета(РР) - объект метаданных конфигурации, служащий для реализации периодических расчетов в системе 1С. Из очевидных областей применения регистров расчета можно выделить следующие: расчет заработной платы, расчет квартплаты, расчет арендной платы.

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

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

механизма вытеснения по периоду действия «:

Здесь мы видим что вид расчёта «Командировка» обладает протяжённостью во времени и действует с 10 по 20 апреля, «Командировка» указана как вытесняющий вид расчёта для вида расчета «Оклад». «Оклад» также обладает протяжённостью во времени и действует с 1 по 30 апреля. Так как «Командировка» указана как вытесняющий вид расчёта для вида расчета «Оклад»(имеет больший приоритет, чем оклад) и действует на периоде действия оклада, то происходит вытеснение оклада командировкой и формируется «Фактический период действия оклада».»Фактический период действия оклада» это период действия оклада после вытеснения командировкой, в нашем случае он состоит из 2 периодов — с 1 по 9 апреля и с 21 по 30 апреля и в сумме составляет 19 дней. Механизм вытеснения по периоду действия работает только для протяжённых во времени расчетов.

На рисунке выше графически показан принцип «механизма зависимости по базовому периоду «:

Допустим, в конце апреля 2017 мы хотим начислить сотруднику премию в размере 10% от оклада. В качестве базовых видов расчёта для премии указан оклад.

Но в качестве «базы» для расчета премии мы возьмём не весь месяц апрель, а только интервал с 10 по 20 апреля(11 дней). Рассчитаем базу для премии, оклад сотрудника составляет 60000 рублей, в месяце имеем 30 дней, дневной оклад = 60000/30 = 2000 руб. Далее 2000*11 = 22000 руб. База для расчета премии составляет 22000 рублей.

Рассчитаем премию: (22000/100)*10 = 2200 руб. Премия в размере 10% от оклада составляет 2200 рублей.

С регистром расчета тесно связан прикладной объект метаданных «План видов расчета».

План видов расчета(ПВР) - объект метаданных конфигурации, хранящий в себе сведения о типах видов расчетов и определяющий влияние разных расчетов друг на друга.

Один план видов расчета может использоваться в нескольких регистрах расчета, но один регистр расчета не может использовать несколько планов видов расчета одновременно.

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

Механизмы расчета в системе 1С Предприятие устроены таким образом, что сперва требуется сделать записи в регистр расчета и только после этого выполнить расчет на основе этих данных. К примеру, нельзя рассчитать премию на основе оклада пока этот самый оклад не записан в регистр расчета.

Практика

Рассмотрим подробнее регистры расчета на практике:

Шаг 1 .Начнём с плана видов расчета. План видов расчета необходимо создать перед созданием регистра расчета. План видов расчета создаём перед регистром расчёта потому, что перед созданием таблицы для хранения рассчитанных данных(т.е. регистра расчета) необходимо задать алгоритмы расчета этих данных(т.е. план видов расчета).

Создадим план видов расчета «Основные начисления». Сразу же перейдём на вкладку «Расчет». Здесь мы сразу же видим флаг «Использует период действия «, при установке данного флага все виды расчета входящие в данный план будут обладать протяжённостью во времени (например Оклад, Командировка), а также для данного плана видов расчета включается «механизма вытеснения по периоду действия «. Если флаг «Использует период действия» не установлен, то виды расчета не будут обладать протяжённостью во времени(например Премия, Штраф) и «механизма вытеснения по периоду действия» действовать не будет. Также на данной вкладке есть разделы «Зависимость от базы» и «Базовые планы видов расчета» — они служат для реализации «механизма зависимости по базовому периоду «, но об нём поговорим позже. Пока оставим «Зависимость от базы» в режиме «Не зависит».

Создадим предопределённый вид расчета «Оклад». На вкладке «Основное» всё просто. Задаём имя и код вида расчета.

Благодаря тому, что мы установили флаг «Использует период действия » у нас появилась вкладка «Вытесняющие » и включился «механизм вытеснения по периоду действия «.

На данной вкладке мы указываем виды расчета, которые будут вытеснять оклад по периоду действия(например Командировка).

Примечание : в «Вытесняющие» можно добавить виды расчета принадлежащие только данному плану видов расчета.

Также есть вкладка «Ведущие » — на ней указываются виды расчета при изменении которых должен пересчитываться текущий вид расчёта. Здесь можно указать и виды расчёта из других планов видов расчёта. Например, вид расчета «Оклад» является ведущим для вида расчёта «Премия» т.е. при изменении оклада у нас должна пересчитаться и премия т.к. премия начисляется в зависимости от оклада. В данном случае вид расчёта «Оклад» принадлежит ПВР «Основные начисления» использующем период действия, а вид расчета «Премия» принадлежит ПВР «Дополнительные начисления» не использующем период действия.

Шаг 2 .Создадим справочник «Графики» со структурой по-умолчанию. В справочнике «Графики» будем хранить режимы работы сотрудников(пятидневка, шестидневка и.т.д.).

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

Создадим непериодический независимый регистр сведений «Графики работы» с 2 измерениями «Дата» и «График» и ресурсом «Количество часов».

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

Шаг 4 .Создадим документ «Начисление зарплаты» со структурой реквизитов показанной ниже:

Реквизиты:

Оперативное проведение ставим в значение «Запретить» т.к. оно не имеет смысла для механизма периодических расчётов в 1С — ни премию, ни оклад, ни штраф мы никогда не начисляем в реальном времени.

Создадим форму документа с настройками по-умолчанию.

Шаг 5 . Наконец-то мы дошли и до создания регистров расчета.

Объект метаданных регистр расчета расположен в ветке «Регистры расчета» конфигуратора.

Создадим регистр расчета «Основные начисления». Настройки регистра расчета рассмотрим ниже:

1.В поле «План видов расчета» указываем ПВР «Основные начисления» созданный на шаге 1.

2.Ставим флаг «Период действия» в значение «Истина» т.к. ПВР, указанный на шаге 1 обладает протяжённостью во времени.

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


P.S. Если указать ПВР, обладающий протяжённостью во времени у РР с флагом «Период действия» в значении «Ложь», то данный ПВР будет работать как ПВР не обладающий протяжённостью во времени.

3.После установки флага «Период действия» в значение «Истина» у нас становятся доступны поля «График», «Значение графика», «Дата графика».

В поле «График» указываем регистр сведений «Графики работы», созданный на шаге 3.

В поле «Значение графика» указываем ресурс «КоличествоЧасов» регистра сведений «Графики работы».

В поле «Дата графика» указываем измерение «Дата» регистра сведений «Графики работы».

4.В поле «Периодичность» указываем значение «Месяц» это значит, что данные в регистр у нас будут заноситься ежемесячно.

Ниже представлена структура метаданных регистра:

Флаг «Базовое» у измерения влияет только на производительность, его можно и не проставлять, но если поставить, то поле «Сотрудник» будет проиндексировано.

Измерение «Сотрудник» — оно применяется в «механизме вытеснения по периоду действия » и «механизме зависимости по базовому периоду «.

Ресурс «Сумма» — туда запишется рассчитанная зарплата.

Реквизит «График» указан как реквизит, а не измерение регистра т.к. ни его, ни он ничего не вытесняет — по сути справочное поле. Важно!!! Не забудьте заполнить поле «Связь с графиком» у реквизита «График», там должно быть указано измерение «График» регистра сведений «Графики работы» иначе размер заработной платы не будет рассчитываться.

Реквизит «Параметр» будет хранить значение оклада.

Вот теперь когда мы указали связь с РС «Графики работы» у нас будет рассчитываться заработная плата сотрудника пропорционально количеству отработанных дней.

В качестве регистратора указываем документ «Начисление зарплаты «, созданный на шаге 4.

Шаг 6 . Делаем движения по регистру расчета «Основные начисления».

Вернёмся к документу «Начисление зарплаты» созданному на шаге 4.

Опишем обработку проведения в модуле объекта документа:

Фрагмент кода обработки проведения документа

1С (Код)

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

Процедура ОбработкаПроведения(Отказ, РежимПроведения)

// регистр ОсновныеНачисления

Движения. ОсновныеНачисления. Записывать= Истина;

Движения. ОсновныеНачисления. Очистить() ;

ПериодРегистрации=НачалоМесяца(Дата) ;

Для Каждого ТекСтрокаОсновныеНачисленияИз ОсновныеНачисленияЦикл

Движение= Движения. ОсновныеНачисления. Добавить() ;

Движение. Сторно= Ложь;

Движение. ВидРасчета= ТекСтрокаОсновныеНачисления. ВидРасчета;

Движение. ПериодДействияНачало= ТекСтрокаОсновныеНачисления. ДатаНачала;

Движение. ПериодДействияКонец= КонецДня(ТекСтрокаОсновныеНачисления. ДатаОкончания) ;

Движение. ПериодРегистрации = ПериодРегистрации;

Движение. Сотрудник= ТекСтрокаОсновныеНачисления. Сотрудник;

Движение. График= ТекСтрокаОсновныеНачисления. График;

Движение. Параметр= ТекСтрокаОсновныеНачисления. Размер;

КонецЦикла;

КонецПроцедуры

Создадим тестовый документ и проведём его:

Перейдём в «Движения документа»:

Видим, что период регистрации установился как начало месяца т.к. периодичность РР указана «Месяц». Так же видим, что заполнились все поля кроме суммы(ЗП ещё не рассчитана).

Шаг 7 .Напишем код расчета заработной платы.

Создадим общий модуль «Расчет» со следующими флагами:

В данном общем модуле у нас и будет происходить сам расчёт.

Напишем в модуле «Расчет» экспортную функцию «Рассчитать начисления»:

Так как мы заполнили в настройках РР «Основные начисления» поля «График», «Значение графика», «Дата графика» у нас стала доступна виртуальная таблица регистра расчета ДанныеГрафика, в запросе к виртуальной таблице нас интересуют поля:

«КоличествоЧасовФактическийПериодДействия» — содержит рассчитанное на основании данных графика количество фактически отработанных часов

«КоличествоЧасовПериодДействия» — содержит рассчитанное на основании данных графика количество рабочих часов в периоде расчёта

Процедура расчета заработной платы

1С (Код)

Процедура РассчитатьНачисления(Регистратор, НаборЗаписей) Экспорт //Оклад Запрос=Новый Запрос; Запрос.Текст="ВЫБРАТЬ | ЕСТЬNULL(ОсновныеНачисленияДанныеГрафика.КоличествоЧасовФактическийПериодДействия, 0) КАК ЧасовФакт, | ОсновныеНачисленияДанныеГрафика.Параметр, | ЕСТЬNULL(ОсновныеНачисленияДанныеГрафика.КоличествоЧасовПериодДействия, 0) КАК ЧасовПлан, | ОсновныеНачисленияДанныеГрафика.НомерСтроки |ИЗ | РегистрРасчета.ОсновныеНачисления.ДанныеГрафика(| Регистратор = &Регистратор | И ВидРасчета = &ВидРасчетаОклад) КАК ОсновныеНачисленияДанныеГрафика"; Запрос.УстановитьПараметр("Регистратор", Регистратор); // передаём документ регистратор чтобы поиск выполнялся только по текущему документу Запрос.УстановитьПараметр("ВидРасчетаОклад", ПланыВидовРасчета.ОсновныеНачисления.Оклад); //устанавливаем вид расчёта оклад т.к. рассчитываем оклад Выборка=Запрос.Выполнить().Выбрать(); СтруктураПоиска=Новый Структура; СтруктураПоиска.Вставить("НомерСтроки",0); //создадим структуру для поиска данных для расчёта по номеру строки Для Каждого Запись Из НаборЗаписей Цикл //цикл по набору записей текущего документа СтруктураПоиска.НомерСтроки=Запись.НомерСтроки; //заполняем номер строки для поиска Если Выборка.НайтиСледующий(СтруктураПоиска) Тогда //ищем в выборке данные для расчёта по текущему номеру строки Запись.Сумма =?(Выборка.ЧасовПлан=0,0, Выборка.ЧасовФакт/Выборка.ЧасовПлан * Выборка.Параметр); //рассчитываем ЗП пропорционально отработанным дням, в Параметр - текущий оклад КонецЕсли; Выборка.Сбросить(); //сбросим выборку, нужно чтобы следующая запись набора записей делала поиск по выборке сначала КонецЦикла; НаборЗаписей.Записать(,Истина); //записываем рассчитанные записи в базу, передаём параметр Замещать = Истина КонецПроцедуры

//Оклад

Запрос=Новый Запрос;

Запрос. Текст="ВЫБРАТЬ

| ЕСТЬNULL(ОсновныеНачисленияДанныеГрафика.КоличествоЧасовФактическийПериодДействия, 0) КАК ЧасовФакт,

| ОсновныеНачисленияДанныеГрафика.Параметр,

| ЕСТЬNULL(ОсновныеНачисленияДанныеГрафика.КоличествоЧасовПериодДействия, 0) КАК ЧасовПлан,

| ОсновныеНачисленияДанныеГрафика.НомерСтроки

|ИЗ

| РегистрРасчета.ОсновныеНачисления.ДанныеГрафика(

| Регистратор = &Регистратор

Ведущие виды расчета

1. Введение

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

2. Варианты зависимости между видами расчетов

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

Наряду с ведущими, для ВР могут быть указаны базовые и вытесняющие ВР. Базовые - это ВР, обороты которых за определенный период являются исходными данными для расчета данного ВР. Например, ВР "Премия" рассчитывается на основании ВР "Оклад", то есть "Оклад" является базовым ВР для "Премии".

Вытесняющие - это ВР, которые влияют на фактический период действия и которые могут вытеснять данный ВР по периоду действия. Например, сотрудник за один и тот же день не может получать оклад и выплаты по больничному листу. ВР "Больничный" вытесняет ВР "Оклад".

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

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

3. Информация о ведущих видах расчета из различных источников

Документация 1С, как всегда, не балует нас подробной информацией и детальными инструкциями. В о ведущих ВР сказано лишь, что "на закладке "Ведущие" указываются те виды расчета, которые определяют работу механизма перерасчетов соответствующего регистра расчета (т.е. того, которому назначен данный план видов расчета)".

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

В содержится более подробная информация. Там указано, что ведущие виды расчета используются для перерасчета неактуальных записей в регистрах расчета. Необходимость указания ведущих видов расчета продемонстрирована на примере. Пусть ВР "А" является базовым для ВР "Б", а тот в свою очередь является базовым для ВР "В". Если механизм перерасчетов будет опираться только на базовые ВР, то при изменениях по ВР "А" выяснится необходимость перерасчета только для ВР "Б". И только после внесения изменений (перерасчета) по ВР "Б" выяснится необходимость перерасчета для "В". Правильное использование ведущих ВР позволяет избежать подобных многоэтапных перерасчетов. В данном примере для ВР "В" нужно указать ведущие ВР "А" и "В".

В дано определение, которое совсем не способствуют пониманию сути вопроса: "Ведущий вид расчета - вид расчета, результат которого косвенно влияет на данный вид расчета". Получается, что ВР, который прямо влияет на данный вид расчета, не должен быть включен в список ведущих ВР. Это не правильно. И дальше: "Если результат ведущего вида расчета изменился, данный вид расчета надо рассчитать заново." Нас интересует только результат или любая характеристика ВР, которая может повлиять на данный ВР?

В указано следующее: "В табличной части "Ведущие виды расчета" указываются виды расчета, при вводе (изменении) которых результат текущего вида расчета должен быть пересчитан (например "Оклад по дням" является ведущим видом расчета для видов расчета "Доплата за вредность" и "Премия процентом")".

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

Если "Невыход" вытесняет "Оклад" по периоду действия, а "Премия" зависит по базовому периоду от "Оклада", то в качестве ведущих для "Премии" нужно указывать следующие ВР: "Оклад", "Невыход" . То есть, при формировании списка ведущих ВР нужно учитывать транзитивные (или каскадные) зависимости.

Этот пример также подробно рассмотрен в .

Определение из книги почти ничего не добавляет к материалам предыдущих источников: "Ведущими называют виды расчетов, при вводе или изменении которых необходимо перерассчитать результат уже существующих расчетов". Но в этой книге приведен хороший пример. "Премия" зависит по базе от "Доплаты за разъезды", которая в свою очередь зависит по базе от "Командировки". Ведущими ВР для "Премии" являются "Доплата за разъезды" и "Командировка". Это транзитивная (или каскадная) зависимость по базе.

В тема ведущих расчетов не рассмотрена подробно, дается отсылка к .

Наиболее полный список причин, по которым ВР надо включать в список ведущих ВР, приведен в . Предназначение ведущих ВР - "отразить влияние видов расчета друг на друга. Влияние может возникать:

При настройке базы,

При определении вытеснения,

От каскадной зависимости видов расчета,

От специфики решаемой задачи."

3. Выводы

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

Базовые ВР для данного ВР,

Вся цепочка ВР, от которых базовые ВР зависят прямо или транзитивно (каскадно), это может быть зависимость по базе или вытесняющая зависимость:

ВР, прямо вытесняющие базовые ВР,

ВР, транзитивно (каскадно) вытесняющие базовые ВР,

ВР, которые являются базовыми для базовых или вытесняющих ВР.

В большинстве случаев работает упрощенное правило, сформулированное в в виде примера: ведущие - это базовые ВР и ВР, вытесняющие базовые.

Источники:

1. 1С:Предприятие 8.2. Руководство разработчика. - М.: Фирма "1С".

2. Габец А.П., Козырев Д.В., Кухлевский Д.С., Хрусталева Е.Ю. Реализация прикладных задач в системе 1С:Предприятие 8.2.

3. ИТС. Документ "Ведущие виды расчета".

4. ИТС "Глоссарий разработчика".

5. Материалы курса "Конфигурирование в системе 1С:Предприятие 8. Решение расчетных задач". - 1С-Учебный центр №3.

6. Материалы курса "Конфигурирование платформы 1С:Предприятие 8.2". - 1С-Учебный центр №1.

7. Материалы курса "Профессиональное программирование в 1С:Предприятии 8.x: Базовый курс." - www.Spec8.ru.

8. Материалы форума devtrainingforum.v8.1c.ru.

9. Радченко М.Г., Хрусталева Е.Ю. 1С:Предприятие 8.2. Практическое пособие разработчика.


© 2024
exotop.ru - ExoTop - интернет и технологии