Использование таблицы в качестве параметра
Теги: 1С

# Код реализации

```1c
ТЗЦеныТиповРабот = Новый ТаблицаЗначений;
ТЗЦеныТиповРабот.Колонки.Добавить("ТипРабот", Новый ОписаниеТипов("Строка",КвалификаторСтроки));
ТЗЦеныТиповРабот.Колонки.Добавить("Цена", Новый ОписаниеТипов("Число",КвалификаторЧисла));
Для Каждого СтрокаТЗ Из ЦеныТиповРабот Цикл
	НоваяСтрока = ТЗЦеныТиповРабот.Добавить();
	ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаТЗ);
	НоваяСтрока.ТипРабот = СокрЛП(СтрокаТЗ.ТипРабот);
КонецЦикла;

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

Результат = Запрос.Выполнить().Выгрузить();
ДЛя каждого СтрокаТЗ из Результат Цикл
	НоваяСтрока = РезультатОтчет.Добавить();
	ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаТЗ);
КонецЦикла;
```