Механизм сложных периодических расчетов. Планы видов расчетов Если контрагент – физическое лицо

Для того чтобы можно было рассчитывать зарплату в конфигурации, работающей на платформе 1С Предприятие 8, необходимо умение работать с объектами конфигурации которые для этого и предназначены. Для реализации возможности расчета заработной платы, в конфигурации необходимо использовать такие объекты как планы видов расчета и регистры расчета. Без этих объектов реализовать расчет достаточно проблематично, если совсем не возможно. В этой статье хочу поведать какие объекты предназначены для расчета зарплаты и как с ними работать.
Основные используемые понятия:
Вид расчета – начисление или удержание, которое может быть применено к сотруднику.
План видов расчета – объект конфигурации, предназначенный для хранения однотипных видов расчета.
База – совокупность видов расчета, которые и являются основой для расчета конкретного вида расчета.
Период регистрации – это дата, когда документ зарегистрирован в системе. И если периодичность регистра расчета месяц, то период регистрации системой автоматически приводится к началу месяца.
Период действия – это интервал, в котором действует вид расчета. Например, зарегистрировать документ можно в одном месяце, а период действия будет находиться в другом месяце.
Сокращения, встречающиеся в тексте:
ПВР – план видов расчета;

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

Рисунок 1

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

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

Рисунок 2

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

Рисунок 3

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

Рисунок 4

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

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

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

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

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

Рисунок 5

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

Спасибо за внимание! Если есть вопросы, постараюсь на них ответить.​

Конфигурация: Бухгалтерия предприятия

Версия конфигурации: 3.0.40.40

Дата публикации: 22.09.2015

В программе 1С:Бухгалтерия 8.3 предусмотрен отдельный документ Оказание Услуг для отражения в бухгалтерском учете операции по оказанию услуг нескольким контрагентам. Данный документ будет удобен если вы разным контрагентам предоставляете Акты и Счета-Фактуры по одной услуге, к примеру: Аренда офиса, Ежемесячный платеж за интернет, доставка журналов... и так далее.

Первоначально зайдем в раздел Продажи (1) и выберем Оказание Услуг (2) .

Нажимаем Создать .

В документе заполняем пункты:

Организация (1) - ваша организация, от лица которой будут выставлены акты, счета-фактуры или УПД.
Вид расчетов (2) - предназначен для разделения расчетов с контрагентом по разным услугам.
Номенклатура (3) - оказываемая услуга
Через кнопку Добавить или Подбор заполняем контрагентов (4) которым будет оказана услуга. И переходи в закладку Счета-Фактуры (5)

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

Заполняем счета учета доходов, счет учета НДС и счета расходов. Переходим в раздел Дополнительно.

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

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

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

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

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

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

Свойства плана видов расчетов

Редактирование плана видов расчетов выполняется в окне редактирования.

Ввод по строке

На закладке "Формы" формируются поля ввода по строке. Отличительной особенностью плана видов расчетов является наличие предопределенных видов расчетов.

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

На закладке "Прочее" задается режим блокировки объекта (автоматический или управляемый) и устанавливается признак полнотекстового поиска по объектам данного типа.

Сложные расчеты

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

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

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

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

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

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

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

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

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

Взаимосвязь видов расчета

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

Ниже приведено описание этих взаимосвязей между видами расчета:

Базовые - это такие виды расчета, результаты которых используются при расчете данного вида расчета. Например, сумма по окладу используется при расчете доплаты к окладу, а основные начисления являются базовыми для расчета НДФЛ.

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

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

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

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

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

Вопрос 14.01 экзамена 1С:Профессионал по платформе. Планы видов расчета предназначены...

  1. для описания множеств возможных видов расчета
  2. для накопления информации о периодических расчетах
  3. для хранения информации о перерасчетах
  4. верно все вышеперечисленное
  5. верны утверждения 1 и 3

Правильный ответ первый, разбор в посте.

Вопрос 14.02 экзамена 1С:Профессионал по платформе. Виды расчета - это...

  1. объекты базы данных
  2. объекты конфигурации
  3. объекты встроенного языка

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

Вопрос 14.16 экзамена 1С:Профессионал по платформе. Новые виды расчета...

  1. можно создавать только в режиме "1С:Предприятие"
  2. можно создавать только в режиме "Конфигуратор"
  3. можно создавать в режиме "1С:Предприятие" и в режиме "Конфигуратор"

Правильный ответ третий, можно создать и в Конфигураторе (предопределенные), и в режиме Предприятие.

Вопрос 14.21 экзамена 1С:Профессионал по платформе. Регистры расчета служат...

  1. для накопления информации о периодических расчетах
  2. для описания множеств однотипных видов расчета
  3. для хранения сведений о перерасчетах

Правильный ответ первый.

Вопрос 14.44 экзамена 1С:Профессионал по платформе. Выберите правильный ответ:

  1. Регистр расчета может быть связан с несколькими планами видов расчета
  2. Регистр расчета может быть связан только с одним планом видов расчета
  3. Регистр расчета может быть связан только с тремя планами видов расчета

Правильный ответ второй, см. в посте скриншот регистра расчета.

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

    Многие программисты 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 января. Надеюсь вам понятно, что период был разбит на два, т.к. невыход вытеснил оклад.

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

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

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

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

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

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

    Значение

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

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

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

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

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

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

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

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