Загрузка данных


&НаКлиенте
Процедура Заполнить(Команда)

	Если Не ЗначениеЗаполнено(Объект.НачалоПериода) Тогда
		Сообщить("Укажите начало периода.");
		Возврат;
	КонецЕсли;

	Если Не ЗначениеЗаполнено(Объект.КонецПериода) Тогда
		Сообщить("Укажите конец периода.");
		Возврат;
	КонецЕсли;

	ЗаполнитьНачисленияНаСервере();

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


&НаСервере
Процедура ЗаполнитьНачисленияНаСервере()

	Объект.Начисления.Очистить();

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

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

	Запрос.УстановитьПараметр("НачалоПериода", НачалоДня(Объект.НачалоПериода));
	Запрос.УстановитьПараметр("КонецПериода", КонецДня(Объект.КонецПериода));

	Результат = Запрос.Выполнить();
	Выборка = Результат.Выбрать();

	КоличествоСтрок = 0;

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

		НоваяСтрока = Объект.Начисления.Добавить();

		НоваяСтрока.Сотрудник = Выборка.Сотрудник;
		НоваяСтрока.Должность = Выборка.Должность;
		НоваяСтрока.Оклад = Выборка.Оклад;
		НоваяСтрока.ПроцентПремии = Выборка.ПроцентПремии;
		НоваяСтрока.СуммаУслуг = Выборка.СуммаУслуг;

		НоваяСтрока.Премия = НоваяСтрока.СуммаУслуг * НоваяСтрока.ПроцентПремии / 100;
		НоваяСтрока.Итого = НоваяСтрока.Оклад + НоваяСтрока.Премия;

		КоличествоСтрок = КоличествоСтрок + 1;

	КонецЦикла;

	Сообщить("Расчёт зарплаты заполнен. Строк: " + КоличествоСтрок);

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