&НаКлиенте
Процедура Заполнить(Команда)
Если Не ЗначениеЗаполнено(Объект.НачалоПериода) Тогда
Сообщить("Укажите начало периода.");
Возврат;
КонецЕсли;
Если Не ЗначениеЗаполнено(Объект.КонецПериода) Тогда
Сообщить("Укажите конец периода.");
Возврат;
КонецЕсли;
ЗаполнитьНачисленияНаСервере();
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьНачисленияНаСервере()
Объект.Начисления.Очистить();
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Сотрудники.Ссылка КАК Сотрудник,
| Сотрудники.Должность КАК Должность,
| Сотрудники.Должность.Оклад КАК Оклад,
| Сотрудники.Должность.ПроцентПремии КАК ПроцентПремии,
| ЕСТЬNULL(Продажи.СуммаУслуг, 0) КАК СуммаУслуг
|ИЗ
| Справочник.Сотрудники КАК Сотрудники
| ЛЕВОЕ СОЕДИНЕНИЕ
| (ВЫБРАТЬ
| ПродажиОбороты.Сотрудник КАК Сотрудник,
| СУММА(ПродажиОбороты.СуммаОборот) КАК СуммаУслуг
| ИЗ
| РегистрНакопления.Продажи.Обороты(
| &НачалоПериода,
| &КонецПериода,
| ,
| ) КАК ПродажиОбороты
| СГРУППИРОВАТЬ ПО
| ПродажиОбороты.Сотрудник) КАК Продажи
| ПО Продажи.Сотрудник = Сотрудники.Ссылка
|ГДЕ
| НЕ Сотрудники.ПометкаУдаления";
Запрос.УстановитьПараметр("НачалоПериода", НачалоДня(Объект.НачалоПериода));
Запрос.УстановитьПараметр("КонецПериода", КонецДня(Объект.КонецПериода));
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
КоличествоСтрок = 0;
Пока Выборка.Следующий() Цикл
НоваяСтрока = Объект.Начисления.Добавить();
НоваяСтрока.Сотрудник = Выборка.Сотрудник;
НоваяСтрока.Должность = Выборка.Должность;
НоваяСтрока.Оклад = Выборка.Оклад;
НоваяСтрока.ПроцентПремии = Выборка.ПроцентПремии;
НоваяСтрока.СуммаУслуг = Выборка.СуммаУслуг;
НоваяСтрока.Премия = НоваяСтрока.СуммаУслуг * НоваяСтрока.ПроцентПремии / 100;
НоваяСтрока.Итого = НоваяСтрока.Оклад + НоваяСтрока.Премия;
КоличествоСтрок = КоличествоСтрок + 1;
КонецЦикла;
Сообщить("Расчёт зарплаты заполнен. Строк: " + КоличествоСтрок);
КонецПроцедуры