30.10.2019

Если регистр расчета поддерживает период действия то. Свойство базовое измерения регистра расчета. Свойство записи регистра расчета ПериодРегистрации - это


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

2. 1. Назначение Каждый план видов расчета описывает схему взаимодействия записей регистра расчета и позволяет задать правила, по которым будут производиться расчеты записей, их взаимное расположение во времени и правила их перерасчета. Планов видов расчета может быть несколько. Распределение видов расчета по планам не является произвольным, так как у плана есть некоторые общие характеристики, которые будут действовать на все входящие в него виды расчетов. Например, поддержка взаимного вытеснения по периоду действия характерна для основных начислений и отклонений (оклад, отпуск) и не характерна для налогов и удержаний (НДФЛ, алименты). Замечание. Виды расчета в V 8 не являются объектами конфигурации, как это было в 7. 7. Они хранятся в планах видов расчета, т. е. являются объектами данных, а не метаданных.

2. 2. Предопределенные виды расчета В плане видов расчетов еще на этапе разработки прикладного решения могут быть заведены предопределенные виды расчетов. Остальные ВР вводятся в планы в режиме 1 С: Предприятие

2. 3. Взаимосвязь видов расчета Для каждого ВР указываются базовые, ведущие и вытесняющие его виды расчетов Базовые - это такие виды расчета, результаты которых используются при расчете данного вида расчета. Например, сумма по окладу используется при расчете доплаты к окладу, а основные начисления являются базовыми для расчета НДФЛ. Ведущие - это виды расчета, при изменении результатов которых нужно пересчитать данный вид расчета. Например, при изменении оплаты по окладу «задним числом» необходимо пересчитать оплату отпуска, поскольку при расчете отпускных используется средняя зарплата сотрудника за предыдущие месяцы. Список ведущих видов расчета может не совпадать со списком базовых.

продолжение Вытесняющие - это виды расчета, период действия которых не должен пересекаться с периодом данного вида расчета. Вытесняющие виды расчета имеют больший приоритет вытеснения, поэтому они вытесняют по времени данный вид расчета. Например, оплата отпуска вытесняет оплату по окладу, а оплата по больничному вытесняет оплату отпуска и оплату по окладу. При вытеснении записи с определенным периодом действия ее фактический период действия может измениться, т. е. уменьшится или разделится на несколько интервалов. Например, запись об отпуске с 10 по 20 число месяца вытесняет запись об окладе, у которой период действия - весь месяц. Тогда фактический период действия записи об окладе будет состоять из двух интервалов: с 1 по 9 число и с 21 по конец месяца.

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

2. 5. Предопределенные табличные части плана видов расчета Для хранения базовых, вытесняющих и ведущих ВР в Планах видов расчета предусмотрены следующие предопределенные табличные части: Базовые. Виды. Расчета, Вытесняющие. Виды. Расчета, Ведущие. Виды. Расчета. Обращение из программы к данным ТЧ – по правилам обращения к ТЧ объектов конфигурации (см. Синтаткиспомощник)

3. Регистры (см. д-т «Перенос данных» в ТК) расчета (РР) Регистры расчета предназначены для хранения записей расчета (промежуточных и итоговых результатов) – см. Журнал расчетов в V 7. 7. Отличительной особенностью регистра расчета является то, что он не предназначен для интерактивного редактирования пользователем. Разработчик может, при необходимости, предоставить пользователю возможность редактировать регистр расчета, но предназначение регистра расчета заключается в том, чтобы его модификация производилась на основе алгоритмов работы объектов базы данных, а не в результате непосредственных действий пользователя.

3. 1. Структура Регистра Расчета Структура регистра расчета определяет, какая именно информация и в каких разрезах будет храниться в регистре. Разработчик указывает измерения, ресурсы и реквизиты регистра: Измерения - это разрезы хранимой информации. Например, у регистра Основные. Начисления могут быть измерения Сотрудник, Организация, Подразделение, а у регистра Налоги измерения: Сотрудник и Организация. Ресурсы - результаты расчета, например, ресурс Результат для регистра Основные. Начисления. Ресурсы могут быть только числового типа. Реквизиты -дополнительная характеристика записи расчета. Реквизиты могут быть почти любого сохраняемого в базе данных типа. Например, реквизиты Дни и Часы для регистра Основные. Начисления, реквизит Сумма для хранения исходных данных расчета и т. д.

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

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

3. 4. зависимость записей по базовому периоду Этот механизм позволяет основывать расчет зависимых (вторичных) записей регистра на данных, полученных в результате расчета первичных записей. Регистр расчета (через соответствующий план ВР) может поддерживать два вида зависимости от базы: Зависимость по периоду действия зависимость по периоду регистрации.

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

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

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

5. Частичное попадание записей регистра расчета в базовый период Рассмотрим случай, когда, базовый период не кратен периоду регистра расчета. Например, существует какая-нибудь "особая" премия (действующая в мае), которая имеет базовый период с 15. 04. 2009 по 15. 04. 2009 (для примера также можно привести следующие варианты базовых периодов: 2 последних недели, первая и последняя неделя предыдущего месяца, два последних дня, понедельники, и т. д.). При получении базы система должна сложить результаты всех записей, попавших в этот период. Очевидно, что может возникнуть ситуация, когда записи будут лежать в рассмотренном базовом периоде не полностью, а «частично» Конечно, речь идет только о тех записях, которые содержат виды расчета, заданные в плане видов расчета в качестве базовых для данной премии. Для определенности предположим, что «особая» премия в качестве базового вида расчета содержит «Оклад» . Попасть в базовый период записи могут «по периоду регистрации» или «по периоду действия» .

Продолжение Рассмотрим первый случай, когда записи попадают в базовый период по периоду регистрации. В этом случае в плане видов расчета, связанном с регистром расчета, должен быть установлен признак «Зависит по периоду регистрации» . Напомним, что период регистрации - это всегда конкретная дата, соответствующая началу периода регистра расчета. Если период регистрации (т. е. конкретная дата) не попадает в базовый период, то эта запись не будет учтена при расчете базы. То есть, если установлена зависимость базы по периоду регистрации, то «частичных» результатов не будет: или запись будет целиком учтена, или целиком не учтена. В нашем случае в базовый период «особой» премии не попадет ни одна запись, поскольку период с 15. 04. 2009 по 15. 04. 2009 не охватывает ни одну дату начала периода регистра расчета.

Продолжение Рассмотрим второй случай, когда записи попадают в базовый период по периоду действия. В этом случае в плане видов расчета, связанном с регистром расчета, должен быть установлен признак «Зависит по периоду действия» . Здесь нужно определить, какая часть результата должна быть взята при расчете базы. Чтобы придать «дискретность» таким результатам, используется объект «График» . Используя сведения графика, можно посчитать, какая часть всего результата «базовой записи» приходится на каждый день, и взять только те дни, который попали в базовый период.

6. Перерасчеты Система позволяет автоматически отслеживать записи, требующие перерасчета. Такая ситуация может возникнуть, когда их результаты каким-то образом связаны с другими видами расчета, а те были изменены (удалены или добавлены новые записи). Например, при изменении начислений сотрудника нужно пересчитать налоги. Тогда для вида расчета «НДФЛ» начисления будут являться ведущими видами расчета, что настраивается в плане видов расчета на закладке «Ведущие» . Допустим, у нас есть регистры расчета Основные. Начисления, Премии и Удержания. Налоги рассчитываются после всех начислений и премий, так как используют их результаты. Для автоматического отслеживания актуальности записей о налогах по каждому сотруднику необходимо у регистра Удержания создать перерасчет с измерением Сотрудник. В качестве данных ведущих регистров назначается измерение

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

6. Приемы программирования Для работы с РР средствами встроенного языка применяются следующие объекты (см. Синтаксис-Помощник - самостоятельно)

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

продолжение Если Движение. Вид. Расчета=Планы. Видов. Расчета. Виды. Расчетов. штра ф Тогда Движение. Результат=Тек. Строка. Список. Величина; Конец. Если; Если Движение. Вид. Расчета=Планы. Видов. Расчета. Виды. Расчетов. Больн ичный Тогда Движение. Результат=Тек. Строка. Список. Величина; Конец. Если; онец. Цикла; // записываем движения регистров (поле результат означивается только для тех ВР, //которые в документ введены готовым значением) Движения. Журнал. Расчета. Записать();

продолжение //получим список всех сотрудников, содержащихся в документе Запрос = Новый Запрос; Запрос. Текст= " |ВЫБРАТЬ РАЗЛИЧНЫЕ | Начисление. Зарплаты. Список. Сотрудник |ИЗ | Документ. Начисление. Зарплаты. Список | КАК Начисление. Зарплаты. Список | |ГДЕ | Начисление. Зарплаты. Список. Ссылка = &Текущий. Документ"; Запрос. Установить. Параметр("Текущий. Документ", ссылка); //сформируем список сотрудников Табл. Знач = Запрос. Выполнить(). Выгрузить(); Массив. Сотрудников = Табл. Знач. Выгрузить. Колонку("Сотрудник"); Список. Сотрудников = Новый Список. Значений;

продолжение Раcсчитать. Начисления(Движения. Журнал. Расчета, Планы. Видов. Расч ета. Виды. Расчетов. Оклад, Список. Сотрудников); Движения. Журнал. Расчета. Записать(, Истина); Раcсчитать. Начисления(Движения. Журнал. Расчета, Планы. Видов. Расчета. Виды. Расчетов. премия, Список. Сотрудников); Движения. Журнал. Расчета. Записать(, Истина);

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

продолжение Если выб. Вид. Расчета = Планы. Видов. Расчета. Виды. Расчетов. премия Тогда Ресурсы=Новый Массив(1); Ресурсы="Журнал. Расчета. Результат"; Измерения=Новый Структура ("Сотрудник", "Журнал. Расчета. Сотрудник"); Для каждого Движение из Набор. Движений Цикл Если Движение. Вид. Расчета = Планы. Видов. Расчета. Виды. Расчетов. Премия Тогда База. Расчета=Движение. Получить. Базу(Ресурсы, Измерения); Движение. Результат=Движение. Сумма*База. Расчета. Результат/10 0; Конец. Если; Конец. Цикла; Конец. Если; Конец. Процедуры

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

Теория

Регистр расчета(РР) - объект метаданных конфигурации, служащий для реализации периодических расчетов в системе 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) КАК ЧасовПлан,

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

|ИЗ

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

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

Новый объект "План видов расчета" -- отдаленный аналог видов расчета в 7.7. Виды расчета являются объектами данных, а не метаданных. Могут быть предопределенные виды расчета.

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

Новый объект "Регистр расчета" -- отдаленный аналог журнала расчета в 7.7

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

Встроенный язык

Для значительного расширения возможностей платформы была разработана новая унифицированная объектная модель языка 1С:Предприятия 8.0. Это позволило резко расширить возможности платформы, ускорить ее освоение, повысить понятность программных модулей.

Введены новые литералы и типы данных, например, литералы Неопределенно, Null, Истина и Ложь (тип данных "булево"). Тип "дата" включает в себя время.

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

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

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

Функциональность внешней компоненты v7plus.dll включена в платформу в виде объектов "Почта", "Системная Информация", "Интернет Соединение", "FTP Соединение и т.д. Есть средства для работы с XML-документами, а также для последовательного чтения и записи больших текстовых файлов.

Условие задачи

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

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

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

сотрудника складываются из двух частей:

Некоторой фиксированной суммы, компенсирующей его транспортные расходы;

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

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

Механизм перерасчетов в рамках данной задачи использовать не надо.

Ввод всех начислений происходит документом «Начисление зарплаты». Считать, что все данные вводятся только в пределах одного месяца, например, можно указать начисление по тарифу с 10.01 по 31.01, а запись: тариф с 10.01 по 03.02 вводить нельзя.

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

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

Отчет может быть построен за любой расчетный период.


Решение

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

· Начисление за обучение слушателей по основному месту работы Результат = ТарифнаяСтавка * КоличествоОтработанныхЧасов;

Обратите внимание, для годовой премии сразу указан способ расчета общей суммы всех начислений, сделанных за прошедший год - «Получение базы».

2. На следующем этапе для вышеперечисленных видов расчета укажем зависимости между ними.

Таблица №5.1. Настройка зависимостей по вытеснению и по базе между видами расчетов, необходимых для решения задачи

Вид расчета Вытесняющий Базовый
ТРФ КМД -
ТРН - -
КМД - -
ПРМ - ТРФ, ТРН, КМД

3. Создадим вышеперечисленные виды расчетов в конфигурации. Настроим раздел «Расчет» для каждого используемого плана расчетов;

4. Создадим регистры расчетов;

5. Внесем необходимые изменения в структуру документа «Начисление зарплаты»;

6. Перейдем к проведению документа «Начисление зарплаты»:

a. Добавим в регистр необходимое количество записей:

i. Определим границы интервалов всех существующих периодов у каждой записи;

ii. Укажем значения измерений и реквизитов регистра;

b. Проведем расчет записей сформированных наборов для первичных видов расчета:

i. Если введены транспортные расходы - результат начисления

определим сразу, по данным документа;

ii. Расчет по тарифу на основном месте работы

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

2. Организуем цикл по записям набора. Для каждой записи реализуем прямое позиционирование на нужную строку в выборке запроса. Рассчитаем результат начисления;

3. Запишем набор, без пересчета фактического периода действия;

iii. Расчет начисления за выезд

1. Создадим оборотный регистр накопления «Оплаты

слушателей»;

2. Внесем изменения в алгоритм проведения документа «Приход денег», при выполнении которого должен заполняться данный регистр;

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

4. Организуем цикл по записям набора. Для каждой записи реализуем прямое позиционирование на нужную строку в выборке запроса. Рассчитаем результат начисления;

5. Запишем набор, без пересчета фактического периода действия;

d. Повторим действия, описанные в п.4 для записей вторичных видов расчета каждого уровня:

i. Расчет годовой премии

1. Создадим константу для хранения процента премии. Включим режим использования основной формы констант по умолчанию;

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

3. Организуем цикл по записям набора. Для каждой записи реализуем прямое позиционирование на нужную строку в выборке запроса. Рассчитаем результат начисления;

4. Запишем набор;

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

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


Управляемые формы

Условие задачи

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

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

Решение

1. Создадим основные формы документов. Откроем каждую форму в окне редактораформы. На закладке «Командный интерфейс» раскроем ветвь «Панель навигации - Перейти». Установим флажки «Видимость» для регистров.

2. Создадим не основную форму выбора справочника «Физические лица»;

a. Внесем необходимые изменения в структуру регистра «Сведения о сотрудниках»;

b. Создадим новую форму;

c. Откроем палитру свойств основного реквизита формы;

d. В разделе «Объект» установим флаг «Произвольный запрос»;

e. Откроем настройку списка;

f. Внесем необходимые изменения в текст запроса;

g. При создании формы на сервере определим значения внешних параметров запроса;

h. Определим собственную обработку выбора значения из формы справочника;

3. Организуем вызов формы справочника из формы документа

a. Создадим основную форму документа «Начисление зарплаты»;

b. Укажем созданную форму справочника в качестве значения свойства «Форма выбора» элемента формы документа «ОсновныеНачисленияСотрудник »;


© 2024
mamipizza.ru - Банки. Вклады и депозиты. Денежные переводы. Кредиты и налоги. Деньги и государство