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

В режиме "Конфигуратор"

страница

В режиме «Конфигуратор»

Для этого в окне редактирования объекта конфигурации Отчет НачисленияСотрудникам перейдем на закладку Формы, нажмем кнопку открытия и создадим основную форму отчета.

Затем в правом верхнем окне редактора форм перейдем на закладку Команды и на закладке Команды формы создадим команду формы Перерассчитать (рис. 18.25).

Рис. 18.25. Добавление команды формы

Теперь нужно установить Действие для этой команды.

Для этого нажмем кнопку открытия в строке Действие.

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

В модуле формы будет создан шаблон клиентской процедуры Перерассчитать(), в которую мы поместим вызов процедуры ПерерассчитатьНачисления() из общего модуля ПроведениеРасчетов (листинг 18.8).

Листинг 18.8. Текст обработчика команды «Перерассчитать»

&НаКлиенте

Процедура Перерассчитать(Команда)

 

ПроведениеРасчетов.ПерерассчитатьНачисления(ПредопределенноеЗначение("ПланВидовРасчета.ОсновныеНачисления.Оклад"));

ПроведениеРасчетов.ПерерассчитатьНачисления(ПредопределенноеЗначение("ПланВидовРасчета.ОсновныеНачисления.Премия"));

 

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

Саму процедуру перерасчета поместим в общем модуле ПроведениеРасчетов (листинг 18.9).

Листинг 18.9. Процедура перерасчета начислений

Процедура ПерерассчитатьНачисления(ТребуемыйВидРасчета) Экспорт

 

// Здесь следует выбрать из набора записей перерасчета записи в следующей последовательности:

// записи документа1 для сотрудников из списка,

// записи документа2 для сотрудников из списка и т. д.

Запрос = Новый Запрос(

"ВЫБРАТЬ

| НачисленияПерерасчет.ОбъектПерерасчета,

| НачисленияПерерасчет.Сотрудник

|ИЗ

| РегистрРасчета.Начисления.Перерасчет КАК НачисленияПерерасчет

|ГДЕ

| НачисленияПерерасчет.ВидРасчета = &ТребуемыйВидРасчета

|ИТОГИ ПО

| НачисленияПерерасчет.ОбъектПерерасчета");

 

Запрос.УстановитьПараметр("ТребуемыйВидРасчета", ТребуемыйВидРасчета);

СписокСотрудников = Новый СписокЗначений;

 

// Перебрать группировку по регистратору.

ВыборкаПоРегистратору = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

Пока ВыборкаПоРегистратору.Следующий() Цикл

Регистратор = ВыборкаПоРегистратору.ОбъектПерерасчета;

 

// Перебрать группировку по сотрудникам для выбранного регистратора

// и создать список сотрудников.

ВыборкаПоСотрудникам = ВыборкаПоРегистратору.Выбрать();

СписокСотрудников.Очистить();

Пока ВыборкаПоСотрудникам.Следующий() Цикл

СписокСотрудников.Добавить(ВыборкаПоСотрудникам.Сотрудник);

КонецЦикла;

 

// Получить набор записей регистра расчета для выбранного регистратора.

НаборЗаписей = РегистрыРасчета.Начисления.СоздатьНаборЗаписей();

НаборЗаписей.Отбор.Регистратор.Значение = Регистратор;

НаборЗаписей.Прочитать();

 

РассчитатьНачисления(НаборЗаписей, ТребуемыйВидРасчета, СписокСотрудников);

НаборЗаписей.Записать( , Истина);

 

// Очистить перерассчитанные записи в перерасчете.

НаборЗаписейПерерасчета = РегистрыРасчета.Начисления.Перерасчеты.Перерасчет.СоздатьНаборЗаписей();

НаборЗаписейПерерасчета.Отбор.ОбъектПерерасчета.Значение = Регистратор;

НаборЗаписейПерерасчета.Записать();

 

КонецЦикла;

 

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

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

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

После того как расчет записей выполнен, мы записываем набор записей без формирования записей перерасчета и очищаем записи перерасчета по тому объекту перерасчета, который только что обработали.

Вернемся в форму отчета НачислениеСотрудникам.

Итак, мы указали для команды Перерассчитать действие, то есть процедуру для ее выполнения. Но чтобы можно было воспользоваться этой командой, нужно создать в форме кнопку и связать ее с этой командой (в строке ИмяКоманды).

Проще всего это сделать перетаскиванием команды из окна Команды формы в окно элементов формы.

Перетащим мышью команду Перерассчитать в группу элементов формы КоманднаяПанель.

При этом в форме появится кнопка Перерассчитать, а связь кнопки с командой будет установлена автоматически (рис. 18.26).

Рис. 18.26. Добавление кнопки в форму