Что такое сложные периодические расчеты

1С:Предприятие 8. Сложные периодические расчеты

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

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

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

Работа механизма сложных периодических расчетов обеспечивается двумя объектами прикладного решения:

План видов расчета и Регистр расчета.

Что такое сложные периодические расчеты. Смотреть фото Что такое сложные периодические расчеты. Смотреть картинку Что такое сложные периодические расчеты. Картинка про Что такое сложные периодические расчеты. Фото Что такое сложные периодические расчеты

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

Что такое сложные периодические расчеты. Смотреть фото Что такое сложные периодические расчеты. Смотреть картинку Что такое сложные периодические расчеты. Картинка про Что такое сложные периодические расчеты. Фото Что такое сложные периодические расчеты

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

Что такое сложные периодические расчеты. Смотреть фото Что такое сложные периодические расчеты. Смотреть картинку Что такое сложные периодические расчеты. Картинка про Что такое сложные периодические расчеты. Фото Что такое сложные периодические расчеты

План видов расчета

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

Что такое сложные периодические расчеты. Смотреть фото Что такое сложные периодические расчеты. Смотреть картинку Что такое сложные периодические расчеты. Картинка про Что такое сложные периодические расчеты. Фото Что такое сложные периодические расчеты

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

Что такое сложные периодические расчеты. Смотреть фото Что такое сложные периодические расчеты. Смотреть картинку Что такое сложные периодические расчеты. Картинка про Что такое сложные периодические расчеты. Фото Что такое сложные периодические расчеты

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

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

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

Например, вид расчета Алименты может зависеть по базовому периоду от следующих видов расчета:

Что такое сложные периодические расчеты. Смотреть фото Что такое сложные периодические расчеты. Смотреть картинку Что такое сложные периодические расчеты. Картинка про Что такое сложные периодические расчеты. Фото Что такое сложные периодические расчеты

А вид расчета Оклад может вытесняться видом расчета Невыход:

Что такое сложные периодические расчеты. Смотреть фото Что такое сложные периодические расчеты. Смотреть картинку Что такое сложные периодические расчеты. Картинка про Что такое сложные периодические расчеты. Фото Что такое сложные периодические расчеты

Формы плана видов расчета
Для того чтобы пользователь мог просматривать и изменять данные, содержащиеся в плане видов расчета, система поддерживает несколько форм его представления. Система может автоматически генерировать все нужные формы; наряду с этим разработчик имеет возможность создать собственные формы, которые система будет использовать вместо форм по умолчанию:

Что такое сложные периодические расчеты. Смотреть фото Что такое сложные периодические расчеты. Смотреть картинку Что такое сложные периодические расчеты. Картинка про Что такое сложные периодические расчеты. Фото Что такое сложные периодические расчеты

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

Что такое сложные периодические расчеты. Смотреть фото Что такое сложные периодические расчеты. Смотреть картинку Что такое сложные периодические расчеты. Картинка про Что такое сложные периодические расчеты. Фото Что такое сложные периодические расчеты

Для просмотра и изменения данных отдельных видов расчета используется форма вида расчета. Как правило, она представляет данные в удобном для восприятия и редактирования виде:

Что такое сложные периодические расчеты. Смотреть фото Что такое сложные периодические расчеты. Смотреть картинку Что такое сложные периодические расчеты. Картинка про Что такое сложные периодические расчеты. Фото Что такое сложные периодические расчеты

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

Регистр расчета

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

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

Что такое сложные периодические расчеты. Смотреть фото Что такое сложные периодические расчеты. Смотреть картинку Что такое сложные периодические расчеты. Картинка про Что такое сложные периодические расчеты. Фото Что такое сложные периодические расчеты

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

Что такое сложные периодические расчеты. Смотреть фото Что такое сложные периодические расчеты. Смотреть картинку Что такое сложные периодические расчеты. Картинка про Что такое сложные периодические расчеты. Фото Что такое сложные периодические расчеты

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

Что такое сложные периодические расчеты. Смотреть фото Что такое сложные периодические расчеты. Смотреть картинку Что такое сложные периодические расчеты. Картинка про Что такое сложные периодические расчеты. Фото Что такое сложные периодические расчеты

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

Например, график времени, имеющий следующую структуру:

Что такое сложные периодические расчеты. Смотреть фото Что такое сложные периодические расчеты. Смотреть картинку Что такое сложные периодические расчеты. Картинка про Что такое сложные периодические расчеты. Фото Что такое сложные периодические расчеты

может содержать информацию о количестве рабочих часов:

Что такое сложные периодические расчеты. Смотреть фото Что такое сложные периодические расчеты. Смотреть картинку Что такое сложные периодические расчеты. Картинка про Что такое сложные периодические расчеты. Фото Что такое сложные периодические расчеты

Что такое сложные периодические расчеты. Смотреть фото Что такое сложные периодические расчеты. Смотреть картинку Что такое сложные периодические расчеты. Картинка про Что такое сложные периодические расчеты. Фото Что такое сложные периодические расчеты

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

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

Механизмы, реализуемые регистром расчета

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

В общем случае, запись регистра расчета содержит две даты, определяющие период, на который распространяется действие данной записи. Этот период называется периодом действия записи. Однако, если вид расчета, к которому относится данная запись, может быть вытеснен другим видом расчета, то период действия данной записи является лишь «запрашиваемым» периодом, то есть «мы хотим, чтобы запись действовала в этом периоде». Реально, фактический период действия данной записи можно будет определить лишь после анализа всех записей видов расчета, которые вытесняют данный вид расчета по периоду действия. Фактический период действия будет представлять собой набор периодов, являющихся подмножеством исходного периода действия данной записи. Если не будет найдено ни одной записи, вытесняющей данную по периоду действия, то фактический период действия данной записи будет равен ее периоду действия. Другим крайним случаем вытеснения по периоду действия является полное вытеснение данной записи другими записями. В этом случае фактический период действия записи будет отсутствовать.

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

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

Регистр расчета поддерживает два вида зависимости по базовому периоду:

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

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

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

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

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

Что такое сложные периодические расчеты. Смотреть фото Что такое сложные периодические расчеты. Смотреть картинку Что такое сложные периодические расчеты. Картинка про Что такое сложные периодические расчеты. Фото Что такое сложные периодические расчеты

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

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

Источник

3. Сложные периодические расчеты

3. Сложные периодические расчеты

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

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

Задача 3.1.

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

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

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

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

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

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

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

Источник

Что такое сложные периодические расчеты

Что такое сложные периодические расчеты. Смотреть фото Что такое сложные периодические расчеты. Смотреть картинку Что такое сложные периодические расчеты. Картинка про Что такое сложные периодические расчеты. Фото Что такое сложные периодические расчеты

v8: Сложные периодические расчеты в 8.0 для чайников

Описание регистров расчетов для тех, кто никогда не сталкивался с ними, например для тех, кто в 7.7 не конфигурировал в «Зарплате и Кадрах», а понадобилось поработать в «Зарплате управлении персоналом» в 8.0, или кто сдает экзамен специалиста по платформе 8.0.Автор статьи: Гений 1С | Редакторы: Волшебник
Последняя редакция №15 от 15.08.06 | История
URL: http://kb.mista.ru/article.php?id=95

Ключевые слова: регистр расчета, зарплата, ЗУП

Введение

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

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

Что такое расчеты

В принципе, конечный продукт расчета зарплаты – это набор записей регистра расчета вида:

СотрудникПериодВид расчетаРезультатДанныеКомментарий
ИзмерениеСлужебныйСлужебныйРесурсРесурсРеквизит
Иванов1 января – 31 январяОклад10001000
Петров1 январь – 31 январяОклад6001000
Петров1 января – 10 февраляНевыход00Болезнь

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

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

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

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

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

Для примера заведем план видов расчета Основной и в нем предопределенные виды расчета оклад, премия, невыход, командировка.

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






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

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

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

Премия зависит по базе от оклада, но также косвенно зависит и от невыхода.

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

Графики времени

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

График времени – это простой регистр сведений, одно измерение которого хранит дату, другое связывается с измерением регистром расчета, а один из ресурсов используется для учета времени.
Измерение, которое связывается с регистром расчета обычно носит смысл «вид графика».




ДатаВид графикаЗначение
11.01.05 птПятидневка8
11.01.05 птШестидневка8
12.01.05 сбПятидневка0
12.01.05 сбШестидневка8

Почему используется измерение «дата», а не периодический регистр сведений? Все очень просто – если 11 января в пятницу по пятидневке у нас 8 рабочих часов, то это еще не значит, что на следующий день у нас будет опять же 8 рабочих часов. А ведь если бы мы использовали периодический регистр, значение на следующий день бралось бы из предыдущего дня при отсутствии записей.

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

Перерасчет

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

Если мы рассчитаем базовые записи, то система отметит в перерасчетах, что нам нужно рассчитать зависимые записи. Как только мы рассчитаем зависимые записи, перерасчеты очистятся. По сути перерасчеты – это список записей регистра расчета, которые нужно перерасчитать. Если в перерасчетах не заводить ни одного измерения, то при изменении базовых расчетов в список перерасчета занесутся все зависимые записи. Если мы заведем измерение «Сотрудник» в перерасчете, то при изменении базового расчета по сотруднику в перерасчеты добавятся зависимые записи только по этому сотруднику.

Практическое задание

Достаточно теории. Попробуем изучить детали на практике. За основу возьмем каркасную конфигурацию.

Постановка задачи:

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

Пусть за невыходы с сотрудника взымается штраф в размере половины оклада за период невыхода.

Ход выполнения:

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

Определим виды расчета и зависимости между ними:

Вид расчетаБазовыеВытесняющиеВедущие
ОкладНевыход,Командировка
ПремияОкладНевыход,Командировка
КомандировкаОклад
НевыходОклад

Занесем эти виды расчета в план видов расчета «Основной» и в свойствах видов расчета поставим зависимости согласно таблице.

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

В нем две даты в шапке – «дата» и «период регистрации», а также по две даты «дата начала» и «датаконца» в каждой строчке.

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

Модуль документа будет выглядеть примерно так:

Реквизит «Сторно» нужен чтобы сторнировать записи (аналог минуса).

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

Все документы датировать будем 20.01.2003, период регистрации будем ставить 02.01.2003 (специально указываю не начальные и конечные данные, здесь это неважно, все равно при записи в ПериодРегистрации преобразуется в начало периода 01.01.2003). Январь 2003 года используем, потому что за этот период заполнены графики работ.

Заведем перерасчет «Перерасчет», добавим в него измерение «Сотрудник», связанное с измерением «Сотрудник».

Играем с Перерасчетами

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

Сформируем три документа – первым начислим оклад сотрудникам А и Б. Сотрудник А работает с 1 по 31 января, Б работает с 1 по 20 января. Вторым начислим премию сотруднику Б за период с 1 по 31 января, третьим назначим невыход сотруднику А с 20 по 25 января.

Играем с Фактическим периодом действия

Создадим новый запрос – на этот раз в него добавим данные таблицы РегистрыРасчета.Расчеты.ФактическийПериодДействия.

Сформируем запрос и увидим, что сотруднику А период действия оклада разбит на два периода – с 1 по 19 и с 26 по 31 января. Надеюсь вам понятно, что период был разбит на два, т.к. невыход вытеснил оклад.

Думаю, механизмы работы регистра расчета проясняются на глазах.

Теперь попробуем начислить зарплату по окладу сотрудника.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *