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