Создание документа НачисленияСотрудникам
Для того, чтобы иметь возможность регистрировать в базе данных начисления производимые сотрудникам OOO "На все руки мастер", нам понадобится специальный документ.
Откроем конфигуратор и создадим новый документ. Назовем его "НачисленияСотрудникам".
Этот документ будет иметь табличную часть "Начисления", содержащую следующие реквизиты:
· | "Сотрудник", тип СправочникСсылка.Сотрудники, |
· | "ГрафикРаботы", тип СправочникСсылка.ВидыГрафиковРаботы, |
· | "ДатаНачала", тип Дата, |
· | "ДатаОкончания", тип Дата, |
· | "ВидРасчета", тип ПланВидовРасчетаСсылка.ОсновныеНачисления, |
· | "Результат", тип Число, длина 15, точность 2. |
Реквизиты "ДатаНачала" и "ДатаОкончания" понадобятся нам для того, чтобы задавать период, в котором должна действовать запись расчета.
На закладке "Движения" запретим оперативное проведение документа, отметим, что документ будет создавать движения по регистру расчета "Начисления" и запустим конструктор движений.[341]
В окне конструктора выберем табличную часть "Начисления" нажмем "ЗаполнитьВыражения". Для реквизитов "ПериодДействияКонец" и "БазовыйПериодКонец" укажем выражение "КонецДня(ТекСтрокаНачисления.ДатаОкончания)"
Реквизиту "ИсходныеДанные" поставим в соответствие реквизит табличной части "Результат", а для реквизита "Результат" наоборот удалим выражение, присвоенное ему конструктором:
Нажмем "ОК" и посмотрим текст обработчика, созданный конструктором:
Процедура ОбработкаПроведения(Отказ, Режим)
//{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
// Данный фрагмент построен конструктором.
// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
Для Каждого ТекСтрокаНачисления Из Начисления Цикл
// регистр Начисления
Движение = Движения.Начисления.Добавить();[342]
Движение.Сторно = Ложь;
Движение.ВидРасчета = ТекСтрокаНачисления.ВидРасчета;
Движение.ПериодДействияНачало = ТекСтрокаНачисления.ДатаНачала;
Движение.ПериодДействияКонец = КонецДня(ТекСтрокаНачисления.ДатаОкончания);
Движение.ПериодРегистрации = ТекСтрокаНачисления.ДатаНачала;
Движение.БазовыйПериодНачало = ТекСтрокаНачисления.ДатаНачала;
Движение.БазовыйПериодКонец = КонецДня(ТекСтрокаНачисления.ДатаОкончания);
Движение.Сотрудник = ТекСтрокаНачисления.Сотрудник;
Движение.ГрафикРаботы = ТекСтрокаНачисления.ГрафикРаботы;
Движение.ИсходныеДанные = ТекСтрокаНачисления.Результат;
КонецЦикла;
// записываем движения регистров
Движения.Начисления.Записать();
//}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
КонецПроцедуры
Начислим оклад за март всем сотрудникам OOO "На все руки мастер", как показано на рисунке:
[343]
Проведем документ и посмотрим, какие движения он сформировал в регистре "Начисления":
Обратите внимание на то, что платформа привела период регистрации каждой записи к началу периода регистра расчета (в обработчике проведения мы указывали значение даты документа – 08.04.2004). Кроме этого заметьте, что с каждой записью мы сохранили в реквизите "ИсходныеДанные" размер оклада сотрудника, введенный в документе, чтобы в дальнейшем рассчитать сумму оплаты по окладу.
Для дальнейшего изучения работы регистра расчета нам понадобится служебный отчет, с помощью которого мы сможем посмотреть содержимое записей перерасчета.[344]