В 1C:EDT
страницаВ 1C:EDT
Добавьте объект конфигурации – документ с именем НачисленияСотрудникам.
Задайте представление объекта как Начисление сотрудникам.
Установите свойства документа, отвечающие за его нумерацию:
- Тип номера``–
Число, - Длина номера –
5.
Включите ваш документ в подсистему Расчет зарплаты.
Затем создайте у документа табличную часть Начисления, содержащую следующие реквизиты:
Сотрудник, тип СправочникСсылка.Сотрудники;ГрафикРаботы, тип СправочникСсылка.ВидыГрафиковРаботы;ДатаНачала, тип Дата;ДатаОкончания, тип Дата;ВидРасчета, тип ПланВидовРасчетаСсылка.ОсновныеНачисления;Начислено, Число, длина15, точность2.
Реквизиты ДатаНачала и ДатаОкончания понадобятся вам для того, чтобы задавать период, в котором должна действовать запись расчета.
Теперь вам нужно сформировать движения документа. Запретите оперативное проведение документа. Для этого установите свойство Оперативное проведение в значение Запретить. После этого укажите, что документ будет создавать движения по регистру расчета Начисления(рис. 19.1).

Рис. 19.1. Движения документа
Можно сформировать движения документа в регистре с помощью конструктора движений, или же можно их написать руками в модуле объекта, в обработчике события ОбработкаПроведения.
Текст процедуры должен выглядеть следующим образом (листинг 19.1).
Листинг 19.1. Текст процедуры обработчика «ОбработкаПроведения()»
Процедура ОбработкаПроведения(Отказ, Режим)
Движения.Начисления.Записывать = Истина;
// Регистр Начисления
Для Каждого ТекСтрокаНачисления Из Начисления Цикл
Движение = Движения.Начисления.Добавить();
Движение.Сторно = Ложь;
Движение.ВидРасчета = ТекСтрокаНачисления.ВидРасчета;
Движение.ПериодДействияНачало = ТекСтрокаНачисления.ДатаНачала;
Движение.ПериодДействияКонец = КонецДня(ТекСтрокаНачисления.ДатаОкончания);
Движение.ПериодРегистрации = Дата;
Движение.БазовыйПериодНачало = ТекСтрокаНачисления.ДатаНачала;
Движение.БазовыйПериодКонец = КонецДня(ТекСтрокаНачисления.ДатаОкончания);
Движение.Сотрудник = ТекСтрокаНачисления.Сотрудник;
Движение.ГрафикРаботы = ТекСтрокаНачисления.ГрафикРаботы;
Движение.ИсходныеДанные = ТекСтрокаНачисления.Начислено;
КонецЦикла;
КонецПроцедуры
В целом в этой процедуре нет ничего принципиально нового по сравнению с прежними обработчиками проведения документов, создающими движения регистров.
Начисления – имя регистра расчета, и в выражениях Движения.Начисления.Записывать() и Движения.Начисления.Добавить() вы обращаетесь к методам набора записей этого регистра.
В строке Для Каждого ТекСтрокаНачисления Из Начисления Цикл вы обращаетесь по имени (Начисления) к табличной части вашего документа и обходите в цикле эту табличную часть.
В этом цикле вы добавляете к движениям новую запись и присваиваете ее полям значения из табличной части документа.
Для присвоения значений полям ПериодДействияКонец, БазовыйПериодКонец используется функция КонецДня(). Аналогичным образом вы поступали при создании отчетов, чтобы последний день периода попал в отчет.
В заключение настройте командный интерфейс. В подсистеме Расчет зарплаты сделайте доступной команду Начисление сотрудникам: создать.