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

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С никогда не сталкивались в своей практике с компонентой «Расчет»,поэтому, когда им приходится сдавать экзамены на Специалиста по Платформе 8.0, где в каждомзадании есть задача по сложным периодическим расчетам, возникают сложности, прежде всего сложности понимания.

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

Для примера будем использовать каркасную конфигурацию, устанавливаемую на экзаменах.

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

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

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

Сотрудник

Период

Вид расчета

Результат

Данные

Комментарий

Измерение

Служебный

Служебный

Реквизит

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

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

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

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

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

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

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

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

Вид расчета

Описание

Пример

По базовому периоду

Результат расчета зависимого периода зависит от результата базового периода. Если результат базового периода изменится, то результат зависимого периода нужно пересчитать.

Премия зависит по базовому периоду от оклада.

Вытеснение по периоду

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

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

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

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

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

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

Период

Описание

Период регистрации

В каком периоде зарегистрировано событие, т.е. обычно когда введен документ.

Период действия

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

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

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

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

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

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

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

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

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

Измерение, которое связывается с регистром расчета обычно носит смысл «вид графика».

Дата

Вид графика

Значение

11.01.05 пт

Пятидневка

11.01.05 пт

Шестидневка

12.01.05 сб

Пятидневка

12.01.05 сб

Шестидневка

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

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

Перерасчет

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

Для этого и служат перерасчеты.

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

По сути перерасчеты - это список записей регистра расчета, которые нужно перерасчитать .

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

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

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

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

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

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

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

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

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

Начальная подготовка

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

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

Базовые

Вытесняющие

Ведущие

Оклад

Невыход, Командировка

Премия

Невыход, Командировка

Оклад, Невыход, Командировка

Командировка

Невыход

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

В регистре расчета зарплаты сделаем измерение «Сотрудник» типа «ФизическиеЛица » - чтобы в регистре был разрез аналитики по сотрудникам.

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

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

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

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

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

Для К аждого ТекСтрокаСписок Из Список Цикл

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

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

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

Движение.В идРасчета = ТекСтрокаСписок.ВидРасчета ;

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

Движение.П ериодДействияКонец = КонецДня ();

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

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

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

Движение.С отрудник = ТекСтрокаСписок.Сотрудник ;

Движение.Г рафикРаботы = ТекСтрокаСписок.График ;

Движение.Р езультат = 0;

Движение.Д анные = ТекСтрокаСписок.Размер ;

КонецЦикла ;

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

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

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

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

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

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

ВЫБРАТЬ

РасчетыПерерасчет.О бъектПерерасчета ,

РасчетыПерерасчет.В идРасчета ,

РасчетыПерерасчет.С отрудник

ИЗ

РегистрРасчета.Р асчеты.Перерасчет КАК РасчетыПерерасчет

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

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

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

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

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

Изучаем графики.

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

Создадим новый запрос по регистру расчета используя виртуальную таблицу РегистрыРасчета.Р асчеты.ДанныеГрафика . У этой виртуальной таблицы можно задать параметр - условие отбора записей, например Сотрудник=&ВыбСотрудник и ВидРасчета=&ВидРасчета и График=&ВидГрафика .

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

Колонка результата

Значение

ЗначениеПериодДействия

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

ЗначениеФактическийПериодДействия

Сколько сотрудник фактически проработал в часах

ЗначениеБазовыйПериод

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

ЗначениеПериодРегистрации

Сколько рабочих часов в периоде регистрации (месяц январь)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Периодичность

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

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

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

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

Перерасчеты
Регистр расчета может включать в себя специальные объекты - Перерасчеты:

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

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

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

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

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

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

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

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

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

  • зависимость по периоду действия;
  • зависимость по периоду регистрации.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Отчеты и обработки

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

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

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

Рис. П2.20. Пример настройки ролей в конфигурации

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

Рис. П2.21. Настройка прав для каждой роли в свойствах объекта метаданных в Конфигураторе

Каждому пользователю, работающему в системе «1С:Предприятие» ставится в соответствие одна или несколько ролей (см. Практикум 1-2).

При попытке пользователя выполнить действие, на которое у него нет разрешения, действие выполнено не будет, а система выдаст окно предупреждения «Нарушение прав доступа!»

1 ФИФО – от англ. «First Input, First Output» - «первый пришел, первый ушел»

2 КУДиР – аббревиатура «Книга учета доходов и расходов»

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

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

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

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

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

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

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

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

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

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

Ввод всех начислений происходит документом «Начисление зарплаты». Считать, что все данные вводятся только в пределах одного месяца, например, можно указать начисление по тарифу с 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. Укажем созданную форму справочника в качестве значения свойства «Форма выбора» элемента формы документа «ОсновныеНачисленияСотрудник »;

Loading...Loading...