что такое сложные периодические расчеты
3. Сложные периодические расчеты
3. Сложные периодические расчеты
Сложные периодические расчеты являются наиболее трудными для освоения. С одной стороны, типовые конфигурации переложили максимум возможностей по их настройке на конечного пользователя и, для разработчика, нет такого большого поля деятельности, а значит, нет опыта практической работы с подобными задачами. С другой стороны, принципы ведения периодических расчетов полностью отличаются от принципов бухгалтерского и оперативного учета, что приводит к необходимости изучения непривычных понятий новой прикладной области. Специфические механизмы, такие, как получение данных графика, базы или перерасчет, не имеют аналогов. Для решения подобных задач необходимо глубокое изучение теории и устройства соответствующих объектов, без чего реализация задания на экзамене является невозможной. Каждая задача включает в себя несколько различных механизмов расчета.
Оборотной стороной сложности устройства рассматриваемого раздела является то, что логика задач обычно достаточно проста, стандартизирована и не требует особых программистских ухищрений для своей реализации.
Задача 3.1.
Начисление зарплаты сотрудникам предприятия осуществляется ежемесячно с использованием метода отклонений. Все сотрудники работают по пятидневному графику работы, однако в решении необходимо предусмотреть возможность работы по нескольким различным графикам.
Сотрудники предприятия получают оплату по окладу пропорционально отработанному времени в часах. Часовая ставка рассчитывается как начальное значение оклада, деленное на количество рабочих часов в том же периоде, что и фактически отработанные часы. Первоначальное значение оклада может изменяться не чаще, чем один раз в день, но берется на начало расчетного периода. Дополнительно, сотрудникам компании может быть начислена премия процентом от начисленного в том же расчетном периоде оклада. Процент премии в течение периода начисления не меняется и задается в документе «Начисление зарплаты».
По мере необходимости любой сотрудник может быть отправлен в командировку. В этом случае начисление но окладу и премии не происходит. Часы, проведенные в командировке, определяются по пятидневному графику работы. Часовая ставка для расчета командировки определяется как сумма всех начислений за два предыдущих месяца, деленная на количество рабочих часов в двух предыдущих месяцах. Следует учесть, что данные о командировке не могут вводиться в систему задним числом.
Механизм перерасчетов в рамках данной задачи использовать не надо.
Ввод всех начислений происходит документом «Начисление зарплаты». Считать, что все данные вводятся только в пределах одного месяца, например, можно указать начисление оклада с 10.01 по 31.01, а запись: оклад с 10.01 по 03.02 вводить нельзя.
Для анализа сделанных сотрудникам предприятия начислений в конфигурации необходимо предусмотреть отчет следующего вида:
Отчет может быть построен за любой расчетный период.
1С:Предприятие 8. Сложные периодические расчеты
Механизм сложных периодических расчетов позволяет реализовывать различные модели расчета заработной платы. Работа механизма основана на двух составляющих.
С одной стороны механизм сложных периодических расчетов содержит средства для описания различных видов расчета, которые будут использоваться в прикладном решении. Например, это могут быть такие виды расчета как оклад, алименты, штраф и т.д. Помимо собственно описания этих видов расчета, существует возможность задать правила, по которым одни виды расчета будут влиять на другие виды расчета.
С другой стороны этот механизм предоставляет возможность хранения промежуточных данных, которые используются для выполнения расчетов, и конечных результатов расчетов.
Работа механизма сложных периодических расчетов обеспечивается двумя объектами прикладного решения:
План видов расчета и Регистр расчета.
План видов расчета используется для описания видов расчета и их взаимного влияния друг на друга. В прикладном решении может существовать произвольное количество планов видов расчета, в зависимости от реализуемой модели учета:
Регистр расчета используется для хранения записей о тех или иных видах расчета, которые необходимо выполнить, а также для хранения промежуточных данных и самих результатов выполненных расчетов. Прикладное решение может содержать несколько регистров расчета, предназначенных для отражения данных определенного раздела учета:
План видов расчета
Структура плана видов расчета
План видов расчета представляет собой список видов расчета. Каждый вид расчета имеет код, наименование и набор реквизитов, содержащих дополнительную информацию о данном виде расчета:
Например, план видов расчета ОсновныеНачисленияОрганизаций может выглядеть следующим образом:
Создание и редактирование видов расчета может выполняться как разработчиком (предопределенные виды расчета), так и пользователем, в процессе работы с прикладным решением. Однако пользователь не может удалять виды расчета, созданные разработчиком.
Виды расчета, созданные в плане видов расчета, могут влиять друг на друга. Система поддерживает два вида такого влияния: зависимость по базовому периоду и вытеснение по периоду действия.
Для каждого вида расчета можно указать перечень видов расчета, от которых он будет зависеть по базовому периоду, и которые будут вытеснять его по периоду действия.
Например, вид расчета Алименты может зависеть по базовому периоду от следующих видов расчета:
А вид расчета Оклад может вытесняться видом расчета Невыход:
Формы плана видов расчета
Для того чтобы пользователь мог просматривать и изменять данные, содержащиеся в плане видов расчета, система поддерживает несколько форм его представления. Система может автоматически генерировать все нужные формы; наряду с этим разработчик имеет возможность создать собственные формы, которые система будет использовать вместо форм по умолчанию:
Для просмотра видов расчета используется форма списка. Она позволяет выполнять навигацию по списку, добавлять, помечать на удаление и удалять виды расчетов. Форма списка позволяет выполнять сортировку и отбор отображаемой информации по нескольким критериям:
Для просмотра и изменения данных отдельных видов расчета используется форма вида расчета. Как правило, она представляет данные в удобном для восприятия и редактирования виде:
Кроме этих двух форм для видов расчета поддерживается форма выбора конкретных видов расчета из списка. Она, обычно, содержит минимальный набор информации, необходимой для выбора того или иного вида расчета.
Регистр расчета
Структура регистра расчета
Информация в регистре расчета хранится в виде записей, каждая из которых содержит значения измерений и соответствующие им значения ресурсов.
Измерения регистра описывают разрезы, в которых хранится информация, а ресурсы регистра непосредственно содержат хранимую информацию. Например, для регистра расчета ОсновныеНачисленияСотрудниковОрганизаций, который имеет следующую структуру:
записи, хранимые в базе данных, будут выглядеть следующим образом:
Связь с планом видов расчета
Регистр расчета связан с одним из планов видов расчета, существующих в прикладном решении. Эта связь обуславливает наличие у каждой записи регистра поля Вид расчета, благодаря которому механизмы регистра могут отслеживать взаимное влияние записей расчета друг на друга.
Связь с графиком времени
Для регистра расчета может быть указана связь с графиком времени. График времени представляет собой регистр сведений, в котором содержится временная схема исходных данных, участвующих в расчетах. Измерениями этого графика могут быть, например, график работы и дата, а ресурсом – количество рабочих часов в этой дате. Тогда можно будет связать запись регистра расчета с каким-либо конкретным графиком работы и в дальнейшем, средствами встроенного языка получать информацию о количестве рабочих часов, необходимую для выполнения расчетов.
Например, график времени, имеющий следующую структуру:
может содержать информацию о количестве рабочих часов:
В этих объектах система будет хранить информацию о том, какие записи регистра расчета утратили свою актуальность и подлежат перерасчету в результате работы механизмов зависимости по базовому периоду и вытеснения по периоду действия.
Уникальность записей
Система обеспечивает контроль уникальности записей, хранящихся в регистре расчета. Поэтому в регистре расчета не может находиться двух записей, относящихся к одной и той же строке одного и того же документа.
Механизмы, реализуемые регистром расчета
Вытеснение по периоду действия
Механизм вытеснения по периоду действия позволяет рассчитывать фактический период действия записи регистра расчета на основании анализа других записей, содержащихся в регистре.
В общем случае, запись регистра расчета содержит две даты, определяющие период, на который распространяется действие данной записи. Этот период называется периодом действия записи. Однако, если вид расчета, к которому относится данная запись, может быть вытеснен другим видом расчета, то период действия данной записи является лишь «запрашиваемым» периодом, то есть «мы хотим, чтобы запись действовала в этом периоде». Реально, фактический период действия данной записи можно будет определить лишь после анализа всех записей видов расчета, которые вытесняют данный вид расчета по периоду действия. Фактический период действия будет представлять собой набор периодов, являющихся подмножеством исходного периода действия данной записи. Если не будет найдено ни одной записи, вытесняющей данную по периоду действия, то фактический период действия данной записи будет равен ее периоду действия. Другим крайним случаем вытеснения по периоду действия является полное вытеснение данной записи другими записями. В этом случае фактический период действия записи будет отсутствовать.
Каждая запись регистра расчета содержит вид расчета, к которому она относится. Чтобы определить, какие записи должны вытеснять данную запись по периоду действия, регистр расчета использует связь с планом видов расчета, в котором описано взаимное влияние видов расчета друг на друга. Использование этой связи позволяет регистру расчета определять фактический период действия каждой записи.
Зависимость по базовому периоду
Механизм зависимости по базовому периоду позволяет получать значение базы для записи регистра расчета на основании анализа других записей, содержащихся в регистре.
Регистр расчета поддерживает два вида зависимости по базовому периоду:
В случае зависимости по периоду действия для получения базы будут выбираться те записи, для которых найдено пересечение их фактического периода действия с базовым периодом данной записи. Значение базы, которая будет получена от конкретной влияющей записи, в общем случае не равно результату, который содержит эта запись. База будет рассчитана пропорционально тому, какую часть от фактического периода влияющей записи составляет перекрывающийся, с указанным базовым периодом, участок. При этом будут использованы данные графика, связанного с этой записью.
В случае зависимости по периоду регистрации для получения базы будут выбираться результаты расчета тех записей, которые попадают в базовый период данной записи значением своего поля «Период регистрации».
Наиболее сложным вариантом зависимости по базовому периоду является случай, когда для вида расчета данной записи установлено свойство «Период действия является базовым периодом». Это свойство означает, что в качестве базового периода данной записи будет использоваться не базовый период, который указан в соответствующих полях записи, а фактический период действия записи, получаемый в результате работы механизма вытеснения по периоду действия и являющийся, в общем случае, набором некоторых периодов.
Формирование записей перерасчета
Механизм формирования записей перерасчета отслеживает факт появления в регистре записей, влияющих на результат расчета уже существующих записей. Возможность влияния новых записей на существующие определяется в результате анализа взаимного влияния видов расчета и на основании работы механизмов вытеснения по периоду действия и зависимости по базовому периоду.
Результатом работы механизма формирования записей перерасчета является набор записей перерасчета, содержащий информацию о том, какие записи регистра должны быть рассчитаны заново (перерассчитаны).
Система может автоматически генерировать эту форму. Наряду с этим разработчик имеет возможность создать собственные формы, которые система будет использовать вместо формы умолчанию, в том числе и форму набора записей, которая позволяет добавлять, изменять и удалять записи регистра расчета.
Функциональные возможности регистра расчета
Основными функциональными возможностями, которые предоставляет регистр расчета разработчику, являются:
Что такое сложные периодические расчеты
Основа любого расчета, как понятия является вид расчета (собственно определение того, что именно рассчитывается). Виды расчета хранятся в плане (планах) вида расчета. (ПВР)
Результат расчета хранится в записях Регистра Расчета. В одном регистре расчета могут храниться записи, содержащие виды расчета, принадлежащие только одному ПВР.
Период действия записи регистра расчета. Имеет смысл для записей, протяженных во времени. Например, командировка, зарегистрированная в марте может иметь период действия с 20 по 25 февраля. Если запись не имеет протяженности во времени, то для такой записи не имеет смысла понятие периода действия.
Если работник проболел в феврале, но принес больничный только в марте, то в марте и будет начислен больничный, но за февраль. (Это вполне логично, так как зарплата за февраль уже начислена, а, возможно, и выдана и нет никакой возможности включить новые начисления и выплаты в уже сформированные документы) Таким образом, период действия записи может отличаться от периода регистрации.
Теперь по поводу протяженности периода действия. Если, например, регистр расчета имеет периодичность в месяц, то невозможна запись, у которой, например, период действия c 01.01.2009 по 15.02. 2009. Придется делать две записи с периодами: с 01.01.2009 по 31.12.2009 и с 01.02.2009 по 15.02.2009.
Вытисняющие расчеты
Речь о том, что не все периоды действия всех записей могут мирно сосуществовать друг с другом. Действительно, пусть сотрудник получает оклад за январь и командировочные за 3 дня января-месяца. Понятно, что оклад, в этом случае должен быть начислен не за весь январь, а за январь без злополучных 3-х дней! Ведь иначе работнику переплатят и работодатель уволит расчетчика зарплаты!
Таким образом, говорят, что период действия командировки вытисняет период действия оклада. При этом период действия оклада не меняется! Меняется фактический период действия оклада. В нашем случае, фактический период действия оклада будет состоять из двух диапазонов дат, отстоящих друг от друга на 3 командировочных дня. Отметим, что если бы не было командировки, то фактический период действия оклада совпадал бы с периодом действия.
Важно:
Важно учитывать, что вытеснение срабатывает только при вводе вытесняющих расчетов текущим или будущим периодом. При вводе расчетов за предыдущий период («задним числом») механизм вытеснения не действует. Это связано с тем, что записи, введенные в систему рань¬ше (то есть с меньшим периодом регистрации), имеют больший приоритет в конкуренции за период действия, чем более поздние записи (с большим периодом регист¬рации), причем это не зависит от настройки списка вы¬тесняющих расчетов
Что такое сторнирование? Дело в том, что оклад уже начислен и выплачен, следовательно, изменить что-либо в прошлом периоде невозможно, ибо в комплект поставки платформы 1С до сих пор не входит машина времени! За неимением таковой, придется выкручиваться в текущем периоде, а именно, необходимо отменить в текущем периоде ту часть оклада, которая попадает на больничный, а так же, необходимо позволить больничному иметь ненулевой фактический период действия в текущем периоде.
Именно сторно запись выправляет ситуацию.
Пусть в феврале сотрудник проболел пять дней, но расчетчик начислил ему полный оклад. В марте это выяснилось, ибо появился больничный. Тогда расчетчик вводит сторно запись c с периодом регистрации март, которая:
— отменяет начисление оклада за период болезни (например, 4000р)
— позволяет больничному иметь ненулевой фактический период в феврале, в результате чего сотруднику будет начислен больничный за февраль в марте.
Попросту говоря, мы как бы сделали «дырку» в фактическом периоде действия оклада в прошлом периоде и в это, в хорошем смысле слова, отверсие втиснулся больничный.
Итак, один вид расчета может вытеснять другие виды расчета и при этом изменять период действия вытесняемого расчета.
Зависимость по базовому периоду
Ведущие расчеты и перерасчет
Платформа позволяет автоматически отслеживать изменения ведущих расчетов, и формировать список расчетов, кото¬рые необходимо перерасчитать.
План видов расчета
Планы видов расчета — это прикладные объекты конфигурации. Они используются в механизме сложных периодических расчетов и служат для описания видов расчета и их взаимного влияния друг на друга.
Структура
План видов расчета представляет собой список видов расчета. Каждый вид расчета имеет код, наименование и набор реквизитов, содержащих дополнительную информацию о данном виде расчета:
Например, план видов расчета Начисления может выглядеть следующим образом:
Создание и редактирование видов расчета может выполняться как разработчиком (предопределенные виды расчета), так и пользователем, в процессе работы с прикладным решением. Однако пользователь не может удалять виды расчета, созданные разработчиком.
Виды расчета, созданные в плане видов расчета, могут влиять друг на друга. Система поддерживает два вида такого влияния: зависимость по базовому периоду и вытеснение по периоду действия.
Для каждого вида расчета можно указать перечень видов расчета, от которых он будет зависеть по базовому периоду, и которые будут вытеснять его по периоду действия.
Кроме этих зависимостей, для вида расчета могут быть указаны так называемые ведущие виды расчета, — те, от которых он не зависит напрямую, но которые могут оказывать на него влияние через другие виды расчетов.
Формы плана видов расчета
Для того чтобы пользователь мог просматривать и изменять данные, содержащиеся в плане видов расчета, система поддерживает несколько форм его представления. Система может автоматически генерировать все нужные формы; наряду с этим разработчик имеет возможность создать собственные формы, которые система будет использовать вместо форм по умолчанию:
Форма списка
Для просмотра видов расчета используется форма списка. Она позволяет выполнять навигацию по списку, добавлять, помечать на удаление и удалять виды расчетов. Форма списка позволяет выполнять сортировку и отбор отображаемой информации по нескольким критериям:
Форма вида расчета
Для просмотра и изменения данных отдельных видов расчета используется форма вида расчета. Как правило, она представляет данные в удобном для восприятия и редактирования виде:
Кроме этих двух форм для видов расчета поддерживается форма выбора конкретных видов расчета из списка. Она, обычно, содержит минимальный набор информации, необходимой для выбора того или иного вида расчета.
Объект 1С «Планы видов расчета»
Виды расчета — это объекты базы данных, о писывающие алгоритмы, по которым рассчитывается некоторая информация (например, часть заработной платы: оклад, премия и т.д.). Являются элементами плана видов расчёта.
Структура объекта 1С «Планы видов расчета»
План видов расчета представляет собой список видов расчета. Каждый вид расчета имеет код, наименование и набор реквизитов, содержащих дополнительную информацию о данном виде расчета.
Создание и редактирование видов расчета может выполняться:
Пользователь не может удалять виды расчета, созданные разработчиком.
Виды расчета, созданные в плане видов расчета, могут влиять друг на друга. Система поддерживает два вида такого влияния:
Для каждого вида расчета можно указать перечень видов расчета, от которых он будет зависеть по базовому периоду, и которые будут вытеснять его по периоду действия (подробнее. ).
Например, вид расчета «Алименты» может зависеть по базовому периоду от таких видов расчета, как «Оклад», «ТарифДневной», «ДоплатаПерсональная» и т.д. А вид расчета «Оклад» может вытесняться видом расчета «Невыход»:
Настройка Плана видов расчета в 1С
Некоторые начисления, например «Оклад»,
Свойства вкладки «Расчет»:
Заполняя либо очищая программно это свойство, можно «обычный» элемент делать предопределенным, и наоборот. Если оно заполнено, то другой стандартный реквизит, «Предопределенный», принимает значение «Истина».
Свойства предопределенного элемента плана расчетов в 1С:
Ведущими должны быть как минимум все базовые и вытесняющие виды расчета, т.к. от их изменений напрямую зависит текущий вид расчета.
Особенности работы с планами видов расчета:
Особенности зависимостей планов видов расчета:
Формы плана видов расчета
Для того чтобы пользователь мог просматривать и изменять данные, содержащиеся в плане видов расчета, система поддерживает несколько форм его представления:
Форма вида расчета
Форма вида расчета используется для просмотра и изменения данных отдельных видов расчета. Как правило, она представляет данные в удобном для восприятия и редактирования виде.
Форма списка планов вида расчета
Форма списка планов вида расчета для просмотра видов расчета используется форма списка. Она позволяет:
Кроме этих двух форм для видов расчета поддерживается форма выбора конкретных видов расчета из списка. Она, обычно, содержит минимальный набор информации, необходимой для выбора того или иного вида расчета.
Добавить комментарий Отменить ответ
Для отправки комментария вам необходимо авторизоваться.
Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.