# Виртуальные таблицы регистра расчета

## Задание 1

### Описание задачи

Создать документ "Начисление премии процентом", позволяющий ввести начисление премии процентом по базе от оклада.

### Требование к результату

Выгрузка информационной базы (.dt) с конфигурацией из предыдущего задания, содержащая документ **НачислениеПремииПроцентом**, позволяющий указать таблицу сотрудников и общий процент премии.
Документ должен рассчитывать премию, получая базу запросом к виртуальной таблице **Зарплата.БазаЗарплата** и умножая базу на процент.

### Процесс выполнения

Конфигурация из предыдущего задания.

1. Удостоверьтесь, что в плане видов расчета есть предопределенный вид расчета **ПремияПроцентом**, зависящий от базового **ОплатаПоОкладу** по периоду действия.

2. Добавьте документ **НачислениеПремииПроцентом** (можно скопировать другой зарплатный документ).

* Добавьте к нему табличную часть **Сотрудники** с реквизитом **Сотрудник** и реквизит шапки **ПроцентПремии**.
* Сделайте его регистратором регистра расчета **Зарплата**.
* Включите его в состав функциональной опции **ВестиРасчетЗарплаты** и подсистемы **Зарплата**.
* Выведите реквизиты на форму разумным образом.

3. В модуле документа создайте обработку проведения документа, в которой:

* Очистите набор записей Движения.Зарплата.
* Для каждой строки табличной части создайте движение, заполнив в нем вид расчета (**ПланыВидовРасчета.НачисленияУдержания.ПремияПроцентом**), сотрудника, период регистрации, период действия и базовый период. Период действия берите как начало и конец месяца даты документа. Сумму на этом этапе не заполняйте.
* Запишите набор записей Движения.Зарплата.
* Запросом получите таблицу базовых начислений:
```bsl
	Запрос = Новый Запрос(
		"ВЫБРАТЬ
		|	ЗарплатаБазаЗарплата.Сотрудник КАК Сотрудник,
		|	ЗарплатаБазаЗарплата.СуммаБаза КАК СуммаБаза
		|ИЗ
		|	РегистрРасчета.Зарплата.БазаЗарплата(
		|			&Измерения,
		|			&Измерения,
		|			,
		|			Регистратор = &Регистратор
		|				И ВидРасчета = &ВидРасчета) КАК ЗарплатаБазаЗарплата");
	Запрос.УстановитьПараметр("Регистратор", Ссылка);
	Запрос.УстановитьПараметр("ВидРасчета", ПланыВидовРасчета.НачисленияУдержания.ПремияПроцентом);
	Измерения = Новый Массив;
	Измерения.Добавить("Сотрудник");
	Запрос.УстановитьПараметр("Измерения", Измерения);
	База = Запрос.Выполнить().Выгрузить();
```
* Обойдя записи повторно, для каждой записи:
  * Найдите в таблице строку сотрудника.
  * Установите сумму как СуммаБаза * ПроцентПремии /  100.

4. Заполните и проведите документ. Удостоверьтесь в том, что движения по регистру формируются как процент от оклада за соответствующий период.
