В запрос 1с можно передать в качестве параметра массив, простой пример реализации:
//КОД
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 3
| СУММА(ОсновныеНачисленияРаботниковОрганизаций.Результат) КАК Результат,
| ГОД(ОсновныеНачисленияРаботниковОрганизаций.ПериодРегистрации) КАК Год
|ИЗ
| РегистрРасчета.ОсновныеНачисленияРаботниковОрганизаций КАК ОсновныеНачисленияРаботниковОрганизаций
|ГДЕ
| ОсновныеНачисленияРаботниковОрганизаций.Сотрудник = &Сотрудник
| И (НЕ ОсновныеНачисленияРаботниковОрганизаций.ВидРасчета В (&МассивВидовРасчета))
| И ОсновныеНачисленияРаботниковОрганизаций.ВидРасчета.КодДоходаФСС_НС = &КодДохода
|
|СГРУППИРОВАТЬ ПО
| ГОД(ОсновныеНачисленияРаботниковОрганизаций.ПериодРегистрации)
|
|УПОРЯДОЧИТЬ ПО
| Год УБЫВ,
| Результат";
МассивВидовРасчета = Новый Массив();
//Добавляем ВР исключающие отпуск
МассивВидовРасчета.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоКоду("000ОК"));
МассивВидовРасчета.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоКоду("00041"));
МассивВидовРасчета.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоКоду("00042"));
МассивВидовРасчета.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоКоду("00037"));
Запрос.УстановитьПараметр("Сотрудник",Сотрудник);
Запрос.УстановитьПараметр("МассивВидовРасчета", МассивВидовРасчета);
Запрос.УстановитьПараметр("КодДохода", Перечисления.ДоходыФСС_НС.Облагается);
Результат = Запрос.Выполнить().Выгрузить();
//КОД
В примере отчета для ЗУП я выбираю только те начисления которые не находятся в массиве, принадлежат этому сотруднику и облагаются взносами в ФСС. При передачи массива в качестве параметра главное правильно подобрать условие.
//КОД
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 3
| СУММА(ОсновныеНачисленияРаботниковОрганизаций.Результат) КАК Результат,
| ГОД(ОсновныеНачисленияРаботниковОрганизаций.ПериодРегистрации) КАК Год
|ИЗ
| РегистрРасчета.ОсновныеНачисленияРаботниковОрганизаций КАК ОсновныеНачисленияРаботниковОрганизаций
|ГДЕ
| ОсновныеНачисленияРаботниковОрганизаций.Сотрудник = &Сотрудник
| И (НЕ ОсновныеНачисленияРаботниковОрганизаций.ВидРасчета В (&МассивВидовРасчета))
| И ОсновныеНачисленияРаботниковОрганизаций.ВидРасчета.КодДоходаФСС_НС = &КодДохода
|
|СГРУППИРОВАТЬ ПО
| ГОД(ОсновныеНачисленияРаботниковОрганизаций.ПериодРегистрации)
|
|УПОРЯДОЧИТЬ ПО
| Год УБЫВ,
| Результат";
МассивВидовРасчета = Новый Массив();
//Добавляем ВР исключающие отпуск
МассивВидовРасчета.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоКоду("000ОК"));
МассивВидовРасчета.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоКоду("00041"));
МассивВидовРасчета.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоКоду("00042"));
МассивВидовРасчета.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоКоду("00037"));
Запрос.УстановитьПараметр("Сотрудник",Сотрудник);
Запрос.УстановитьПараметр("МассивВидовРасчета", МассивВидовРасчета);
Запрос.УстановитьПараметр("КодДохода", Перечисления.ДоходыФСС_НС.Облагается);
Результат = Запрос.Выполнить().Выгрузить();
//КОД
В примере отчета для ЗУП я выбираю только те начисления которые не находятся в массиве, принадлежат этому сотруднику и облагаются взносами в ФСС. При передачи массива в качестве параметра главное правильно подобрать условие.
Комментариев нет:
Отправить комментарий