1С-Предприятие 8.0. Практическое пособие разработчика

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


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

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

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

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

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

На закладке "Движения" запретим оперативное проведение документа, отметим, что документ будет создавать движения по регистру расчета "Начисления" и запустим конструктор движений.[341]

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

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

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



Процедура ОбработкаПроведения(Отказ, Режим)

   //{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ

   // Данный фрагмент построен конструктором.

   // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!

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

       // регистр Начисления

       Движение = Движения.Начисления.Добавить();[342]




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

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

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

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

       Движение.ПериодРегистрации = ТекСтрокаНачисления.ДатаНачала;

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

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

       Движение.Сотрудник = ТекСтрокаНачисления.Сотрудник;

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

       Движение.ИсходныеДанные = ТекСтрокаНачисления.Результат;

   КонецЦикла;

   // записываем движения регистров

   Движения.Начисления.Записать();

   //}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ

КонецПроцедуры

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

Начислим оклад за март всем сотрудникам OOO "На все руки мастер", как показано на рисунке:



[343]

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





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

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


Содержание раздела