Базовые планы видов расчета

Базовые планы видов расчета

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

Не знаю насколько просто и доступно получиться разобрать вопросы т.к. на мой взгляд, раздел всё-таки достаточно сложный для начинающих программистов. Если кому-нибудь что-нибудь будет понятно, то дайте мне знать. Если мало, что понятно, то тоже дайте мне знать. Если СОВСЕМ НИЧЕГО НЕПОНЯТНО, то хотя бы запомните, что раздел этот всё — таки достаточно приятный т.к. речь идёт о начислении заработной платы!

Вопрос 1 4.1 Планы видов расчета предназначены…

1. для описания множеств возможных видов расчета

2. для накопления информации о периодических расчетах

3. для хранения информации о перерасчетах

4. верно все вышеперечисленное

5. верны утверждения 1 и 3

Пару слов о процессе начисления заработной платы (далее — ЗП). Есть понятие начисление, а есть выплата.

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

Например, в сентябре известно, что за август сотрудник сколько-то отработал. Начисление фиксируется за сентябрь. Это необходимо для того, чтобы суммы ЗП (расходы предприятия) были отнесены к соответствующему периоду. Как только ЗП начислена, образовывается долг предприятия перед сотрудниками. В начале следующего месяца (сентябрь) происходит выплата ЗП сотрудникам ага, конечно!.

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

Объект конфигурации ПланВидовРасчета предназначен для того, чтобы описать все используемые виды расчета при начислении ЗП.

Вопрос 14.2 Виды расчета — это..

1. объекты базы данных

2. объекты конфигурации

3. объекты встроенного языка

Как известно, начисление ЗП состоит из видов расчета. По сути, вид расчета – это алгоритм начисления ЗП. Например, оклад в зависимости от отработанного времени. Алгоритмов может быть много, все зависит от специфики компании. Именно поэтому, у пользователя есть возможность создавать новые алгоритмы в режиме 1С Предприятия без участия разработчика. Это очень удобно т.к. не нужно каждый раз что-то менять в конфигураторе.

Пользователь с чем работает? С объектами базы данных.

Вопрос 14.3 Свойство «использует период действия» в плане видов расчета устанавливается, если…

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

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

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

4. верно утверждение 2 и 3

Свойство Использует период действия определяет будут ли в ПланВидовРасчета1 содержаться виды расчета, имеющие протяженность во времени. Например, оклад, начисление по больничному листу вычисляется за определенный период времени, а начисление премии не имеет явной привязки к периоду времени.

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

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

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

Вопрос 14.4 Зависимость от базы как Зависимость по периоду действия в плане видов расчета устанавливается, если…

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

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

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

Пару слов о зависимости от базы.

Например, сотрудник болел за период 03.10.2016 по 07.10.2016. Требуется выполнить начисление за период по больничному листу. Как это можно сделать? Например, так:

  1. Анализируем средний заработок за предыдущий период, например, за последние 2 месяца: 01.08.2016 по 30.09.2016. Сумма начислений за этот период составляет 60000р.
  2. Анализируем количество отработанных дней сотрудником, например, за последние 2 месяца. Отработанных дней за этот период 45.
  3. Получаем средний дневной заработок: 60000/45 = 1333р.
  4. Средний заработок умножаем на количество дней болезни и получаем сумму начислений по больничному листу: 1333*5 = 6666р.

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

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

Все зависит от того, как настроит пользователь.

А теперь, что касается правильного варианта ответа.

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

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

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

В нашем случае система накладывала бы отбор по полю ПериодДействия.

Например, у нас есть периоды с начислениями:

01.01.2015 – 31.01.2015 (Оклад = 20000р, Премия = 5000р).

01.02.2015 – 28.02.2015 (Оклад = 25000р, Премия = 2000р).

В какой-то момент вводится вид расчета, который зависит от базы (оклад и премия) и в качестве базового периода указан интервал 15.01.2015 – 20.02.2015. В случае, если выбран вариант Зависимость по периоду действия, то система при расчета поступит следующим образом:

  1. Выберет из регистра с данными базы, где фактический период действия попадает в базовый период. В нашем случае, это два периода: 01.01.2015 — 01.31.201 и 01.02.2015 – 28.02.2015
  2. Система в пропорции сосчитает значение базы за периоды неполных месяцев: 15.01.2015 – 31.01.2015 и 01.02.2015 – 20.02.2015

Каким образом система определит пропорцию для части месяца? Это уже другой вопрос. Если вкратце, то эта настройка задается в свойствах регистра начисления.

Вопрос 14.5 Зависимость от базы как Зависимость по периоду регистрации в плане видов расчета устанавливается, если…

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

2. предполагается, что ни один вид расчета в плане не будет обладать свойством действовать какой-то период времени

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

Здесь все просто.

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

Небольшой итог по зависимости от базы. Существует две зависимости. Каждая зависимость преследует свои задачи.

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

Вопрос 14.6 Базовые планы видов расчета — это…
1. планы видов расчета, с которыми связаны регистры расчета
2. те планы видов расчета, из которых будут браться виды расчета для вычисления расчетной базы
3. те планы видов расчета, у которых свойство «зависимость от базы» установлено в значение, отличное от «не зависит»

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

Наименование Базовые планы видов расчета говорит само за себя. В данной настройке указываются те виды расчета (Начисление) от которой зависит текущий вид расчета (ПланВидовРасчета1) по базе.

Вопрос 14.7 Отсутствие предопределенной табличной части «Базовые виды расчета» у видов расчета Плана видов расчета можно объяснить тем, что…

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

2. в регистре расчета не установлен признак «базовый период»

3. зависимость от базы в плане видов расчета не определена

4. верны 1 и 3 ответы

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

Вопрос 14.8 Вытесняющие виды расчета — это такие виды расчета…

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

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

3. которые исключают друг друга по периоду регистрации

Здесь все просто.

Пару слов о том, что такое «вытеснение».

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

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

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

Но т.к. сотрудник болел и был в командировке, то оплата по окладу, естественно, будет «вытесняться» (уменьшаться). Чем будет «вытесняться»? Другими видами расчета: начисление по больничному листу и начислением командировочных.

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

На примере данную «конкуренцию» хорошо видно.

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

Понравилось? Не забудь поддержать сайт!

1С:Предприятие 8.2 /
Разработчикам /
Практикум

Объект конфигурации План видов расчета

Создание плана видов расчета ОсновныеНачисления

Создание регистра расчета Начисления

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

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

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

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

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

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

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

В качестве примера рассмотрим начисление премии за апрель. Премия должна начисляться в размере 10% от суммы, начисленной в качестве оплаты по окладу. Следовательно, необходимо проанализировать все записи о начислениях оплаты по окладу, которые попадают в интересующий нас базовый период, а именно апрель. Допустим, общая сумма таких начислений составила 8 000 рублей → в этом случае премия должна быть начислена в размере 800 рублей.

Во-вторых, это влияние может быть не на исходные данные, а на сам период, за который производится расчет. В качестве примера можно привести расчет оплаты по окладу и невыход на работу. Предположим, мы начислили сотруднику оплату по окладу за март месяц. В этом случае период действия такого расчета будет с 1 марта по 31 марта. После этого мы получили информацию от руководителя отдела, что, оказывается, сотрудник отсутствовал на работе с 1 по 10 марта по неизвестной причине. В этом случае нам нужно будет произвести расчет Невыход, в котором можно рассчитать какие-то удержания с сотрудника. Но кроме этого необходимо будет пересчитать и оклад сотрудника, исходя из того, что фактический период действия расчета Оклад стал теперь с 11 марта по 31 марта. Такое влияние мы будем называть вытеснением по периоду действия. В результате если за полный месяц работы сотруднику должно было быть начислено 9 300 рублей, то теперь, за фактический период работы, начисление составит 6 300 рублей.

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

  • период действия;
  • фактический период;
  • базовый период.

Период действия является «запрашиваемым». То есть, указывая период действия, мы говорим, «Мы хотели бы, чтобы результат действовал в этом периоде».

Фактический период → это то, что получилось из периода действия после анализа всех периодов действия расчетов, которые вытесняют наш по периоду действия.

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

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

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

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

Объект конфигурации План видов расчета

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

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

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

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

Существует возможность указать один из двух видов зависимости от базы:

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

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

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

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

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

Создание плана видов расчета ОсновныеНачисления

1. Создадим новый объект конфигурации План видов расчета. Зададим ему имя → ОсновныеНачисления.

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

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

3. Перейдем на закладку Прочее и зададим предопределенные виды расчета. Как и в случае с бухгалтерией, расчеты в нашей фирме будут «скромные», поэтому мы создадим всего три элемента:

  • Невыход → с именем и наименованием Невыход и кодом Невыход;
  • Оклад — с именем, кодом и наименованием Оклад и вытесняющим его видом расчета Невыход;
  • Премия — с именем, кодом и наименованием Премия, с базовым видом расчета Оклад и ведущими видами расчета Невыход и Оклад.

Объект конфигурации Регистр расчета

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

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

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

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

Периодичность регистра расчета может быть определена одним из следующих значений:

  • День;
  • Месяц;
  • Квартал;
  • Год.

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

Например, если в регистр расчета с периодичностью месяц записать данные, где ПериодРегистрации задан как 08.04.2008, то регистр сохранит эти данные со значением поля ПериодРегистрации 01.04.2008 (см. рисунок 1).

Если в этой же ситуации периодичность регистра будет год, сохраненное значение периода регистрации будет 01.01.2008.

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

Рисунок 1

Рисунок 2

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

Таблица регистра расчета

Таблица фактического периода действия

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

Таблица регистра расчета

Таблица фактического периода действия

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

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

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

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

Следует сделать два замечания к указанному рисунку.

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

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

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

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

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

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

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

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

Создание регистра расчета Начисления

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

  • Регистр сведений ГрафикиРаботы;
  • Справочник ВидыГрафиковРаботы.

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

1. Создадим новый объект конфигурации Справочник с именем ВидыГрафиковРаботы.

2. В этом справочнике у нас будет два предопределенных графика работы :

  • ГрафикАдминистрации;
  • ГрафикМастеров.

3. После этого создадим объект конфигурации Регистр сведений с именем ГрафикиРаботы.

4. Этот регистр будет иметь два измерения:

  • ГрафикРаботы, тип СправочникСсылка.ВидыГрафиковРаботы;
  • Дата, тип Дата.

5. Затем создадим единственный ресурс регистра → Значение, с типом Число, длиной 1.

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

7. Теперь все готово для создания регистра расчета.

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

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

9. Установим, что

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

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

11. Затем перейдем на закладку Данные и создадим:

  • измерение Сотрудник, тип СправочникСсылка.Сотрудники, базовое;
  • ресурс Результат, тип Число, длина 15, точность 2;
  • реквизит ГрафикРаботы, тип СправочникСсылка.ВидыГрафиковРаботы, связь с графиком по измерению ГрафикРаботы;
  • реквизит ИсходныеДанные, тип Число, длина 15, точность 2.

Реквизит ГрафикРаботы мы будем использовать для того, чтобы связать запись регистра с используемым графиком работы, а реквизит ИсходныеДанные → чтобы хранить в нем данные, которые могут понадобиться при расчете или перерасчете (в нашем случае это будет расчет оклада).

12. Теперь перейдем на закладку Перерасчеты. Создадим объект конфигурации Перерасчет, который так и назовем → Перерасчет.

У него будет единственное измерение → Сотрудник, для которого в установке связи мы укажем измерение регистра Сотрудник и в качестве данных ведущих регистров выберем то же самое измерение Сотрудник регистра расчета Начисления.

На этом создание объекта конфигурации Регистр расчета Начисления завершено.

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

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

1. Создадим новый документ с именем НачисленияСотрудникам.

2. Перейдем на закладку Нумерация и установим:

  • Тип номера документа → Число;
  • Длина номера → 5.

3. Этот документ будет иметь табличную часть Начисления, содержащую следующие реквизиты:

  • Сотрудник, тип СправочникСсылка.Сотрудники;
  • ГрафикРаботы, тип СправочникСсылка.ВидыГрафиковРаботы;
  • ДатаНачала, тип Дата;
  • ДатаОкончания, тип Дата;
  • ВидРасчета, тип ПланВидовРасчетаСсылка.ОсновныеНачисления;
  • Результат, тип Число, длина 15, точность 2.

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

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

5. В окне конструктора выберем табличную часть Начисления и нажмем Заполнить выражения.

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

7. Для поля ПериодРегистрации укажем выражение Дата.

8. Реквизиту ИсходныеДанные поставим в соответствие реквизит табличной части Результат.

9. Для реквизита Результат удалим выражение, присвоенное ему конструктором.

10. Нажмем ОК и посмотрим текст обработчика, созданный конструктором.

11. Запустим 1С:Предприятие в режиме отладки и посмотрим, как работает наш документ.

Начислим оклад за сентябрь всем сотрудникам фирмы:

12. Проведем документ и посмотрим, какие движения он сформировал в регистре Начисления:

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

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

Иллюстрация механизмов вытеснения и зависимости от базы

1. Создадим новый объект конфигурации Отчет и назовем его Перерасчет.

2. Создадим основную схему компоновки данных, добавим Набор данных → запрос и откроем конструктор запроса.

3. Из виртуальной таблицы перерасчета Начисления.Перерасчет выберем все поля:

4. На этом создание запроса закончено, нажмем ОК.

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

6. На закладке Выбранные поля выберем для вывода в отчет поля ОбъектПерерасчета, ВидРасчета и Сотрудник. На этом создание схемы компоновки данных закончено.

7. Запустим 1С:Предприятие в режиме отладки, сформируем отчет Перерасчет и убедимся, что пока он не содержит никаких данных.

8. Создадим новый документ Начисление сотрудникам №–2, в котором начислим премию за сентябрь Гусакову и Деловому. Этим документом мы фиксируем тот факт, что данным сотрудникам нужно начислить премию по итогам работы за сентябрь. Поскольку размер премии нам не известен (он будет рассчитываться по некоторому алгоритму), поля Результат мы оставляем пустыми. ОК.

9. Теперь снова откроем документ Начисление сотрудникам №–1 и изменим оклад Гусакова с 10 000 на 7 000. Нажмем ОК. Сформируем отчет Перерасчет:

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

11. Перепроведем документ Начисление сотрудникам №–2 (премия) и сформируем отчет Перерасчет. Он снова не содержит никаких данных → система отметила тот факт, что мы «пересчитали» зависимые записи, и очистила таблицу перерасчета.

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

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

13. Этим документом мы зафиксируем тот факт, что Гусаков не выходил на работу 1 по 10 сентября. Очевидно, что в этом случае потребуется пересчитать его оплату по окладу и, как следствие, начисленную премию. Нажмем ОК и сформируем Перерасчет.

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

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

Перепроведем документы Начисление сотрудникам №–1 и №–2 и убедимся, что таблица перерасчета очистилась.

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

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