584 документа
← К списку

В 1C:EDT

страница

В 1C:EDT

Добавьте объект конфигурации – документ с именем НачисленияСотрудникам.

Задайте представление объекта как Начисление сотрудникам.

Установите свойства документа, отвечающие за его нумерацию:

  • Тип номера``– Число,
  • Длина номера – 5.

Включите ваш документ в подсистему Расчет зарплаты.

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

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

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

Теперь вам нужно сформировать движения документа. Запретите оперативное проведение документа. Для этого установите свойство Оперативное проведение в значение Запретить. После этого укажите, что документ будет создавать движения по регистру расчета Начисления(рис. 19.1).

Рис. 19.1. Движения документа

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

Текст процедуры должен выглядеть следующим образом (листинг 19.1).

Листинг 19.1. Текст процедуры обработчика «ОбработкаПроведения()»

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

 

Движения.Начисления.Записывать = Истина;

 

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

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

 

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

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

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

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

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

Движение.ПериодРегистрации = Дата;

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

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

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

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

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

 

КонецЦикла;

 

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

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

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

В строке Для Каждого ТекСтрокаНачисления Из Начисления Цикл вы обращаетесь по имени (Начисления) к табличной части вашего документа и обходите в цикле эту табличную часть.

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

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

В заключение настройте командный интерфейс. В подсистеме Расчет зарплаты сделайте доступной команду Начисление сотрудникам: создать.