Функция УсловияДляСтроковогаТипа(Знач
вхОтбор)
ЛЗ = Строка(вхОтбор.ЛевоеЗначение);//Для
сравнения по шаблонам
ВС = Строка(вхОтбор.ВидСравнения);
ПЗ = вхОтбор.ПравоеЗначение;//Параметры
вставлять или так или с "%" в тексте запроса
Если ВС = "Содержит"
Тогда
Возврат " ПОДОБНО ""%" + ПЗ + "%""";
ИначеЕсли
ВС = "Не содержит" Тогда
Возврат " НЕ
ПОДОБНО ""%" + ПЗ + "%""";
ИначеЕсли
ВС = "Начинается с" Тогда
Возврат " ПОДОБНО
""" + ПЗ + "%""";
ИначеЕсли
ВС = "Не начинается с" Тогда
Возврат " НЕ
ПОДОБНО """ + ПЗ + "%""";
ИначеЕсли
ВС = "Соответствует шаблону" Тогда
Возврат " ПОДОБНО
&" + ЛЗ;
ИначеЕсли
ВС = "Не соответствует шаблону" Тогда
Возврат " НЕ
ПОДОБНО &" + ЛЗ;
ИначеЕсли
ВС = "Заполнено" Тогда
Возврат "
<>""""";
ИначеЕсли
ВС = "Не заполнено" Тогда
Возврат " =
""""";
Иначе
Возврат Неопределено;
КонецЕсли;
КонецФункции
Функция УсловияДляЧисловогоТипа(Знач
вхОтбор)
ЛЗ = Строка(вхОтбор.ЛевоеЗначение);
ВС = Строка(вхОтбор.ВидСравнения);
Если ВС = "Равно" Тогда
Возврат " = &" + ЛЗ;
ИначеЕсли
ВС = "Не равно" Тогда
Возврат "
<> &" + ЛЗ;
ИначеЕсли
ВС = "Больше" Тогда
Возврат " >
&" + ЛЗ;
ИначеЕсли
ВС = "Больше или равно" Тогда
Возврат " >=
&" + ЛЗ;
ИначеЕсли
ВС = "Меньше" Тогда
Возврат " <
&" + ЛЗ;
ИначеЕсли
ВС = "Меньше или равно" Тогда
Возврат " <=
&" + ЛЗ;
ИначеЕсли
ВС = "В списке" Тогда
Возврат " В
(&" + ЛЗ + ")";
ИначеЕсли
ВС = "Не в списке" Тогда
Возврат "НЕ
" + ЛЗ + " В (&" + ЛЗ + ")";
ИначеЕсли
ВС = "Заполнено" Тогда
Возврат "
<> 0";
ИначеЕсли
ВС = "Не заполнено" Тогда
Возврат " =
0";
Иначе
Возврат Неопределено;
КонецЕсли;
КонецФункции
Процедура
ПриКомпоновкеРезультата(ДокументРезультат,
ДанныеРасшифровки, СтандартнаяОбработка)
СтандартнаяОбработка
= Ложь;
СхемаКомпоновкиДанных
= ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
Настройки = КомпоновщикНастроек.ПолучитьНастройки();
исГород
=Ложь;
исТелефон
= Ложь;
исПочта
= Ложь;
исУК =
Ложь;
исДолгСУчетомОплатыТекущегоМесяцаМин
= Ложь;
исДолгСУчетомОплатыТекущегоМесяцаМакс
= Ложь;
исМесяцевДолгаОт
= Ложь;
исМесяцевДолгаДо
= Ложь;
Для Каждого Эл Из Настройки.Отбор.Элементы Цикл
Если
Эл.Использование Тогда
Если
Строка(Эл.ЛевоеЗначение) = "Город" И
Строка(Эл.ВидСравнения)
= "Равно" Тогда
исГород = Истина;
пзГород = Эл.ПравоеЗначение;
КонецЕсли;
Если
Строка(Эл.ЛевоеЗначение) = "Телефон"
Тогда
усТелефон = УсловияДляСтроковогаТипа(Эл);
исТелефон = Истина;
пзТелефон = Эл.ПравоеЗначение;
КонецЕсли;
Если
Строка(Эл.ЛевоеЗначение) = "Почта" Тогда
усПочта = УсловияДляСтроковогаТипа(Эл);
исПочта = Истина;
пзПочта = Эл.ПравоеЗначение;
КонецЕсли;
Если
Строка(Эл.ЛевоеЗначение) = "УК" И
Строка(Эл.ВидСравнения)
= "Равно" Тогда
исУК = Истина;
пзУК = Эл.ПравоеЗначение;
КонецЕсли;
Если
Строка(Эл.ЛевоеЗначение) = "ДолгСУчетомОплатыТекущегоМесяцаМин" Тогда
усДолгСУчетомОплатыТекущегоМесяцаМин = УсловияДляЧисловогоТипа(Эл);
исДолгСУчетомОплатыТекущегоМесяцаМин = Истина;
пзДолгСУчетомОплатыТекущегоМесяцаМин = Эл.ПравоеЗначение;
КонецЕсли;
Если Строка(Эл.ЛевоеЗначение) = "ДолгСУчетомОплатыТекущегоМесяцаМакс"
Тогда
усДолгСУчетомОплатыТекущегоМесяцаМакс = УсловияДляЧисловогоТипа(Эл);
исДолгСУчетомОплатыТекущегоМесяцаМакс = Истина;
пзДолгСУчетомОплатыТекущегоМесяцаМакс = Эл.ПравоеЗначение;
КонецЕсли;
Если
Строка(Эл.ЛевоеЗначение) = "МесяцевДолгаОт" Тогда
усМесяцевДолгаОт = УсловияДляЧисловогоТипа(Эл);
исМесяцевДолгаОт = Истина;
пзМесяцевДолгаОт = Эл.ПравоеЗначение;
КонецЕсли;
Если
Строка(Эл.ЛевоеЗначение) = "МесяцевДолгаДо" Тогда
усМесяцевДолгаДо = УсловияДляЧисловогоТипа(Эл);
исМесяцевДолгаДо = Истина;
пзМесяцевДолгаДо = Эл.ПравоеЗначение;
КонецЕсли;
КонецЕсли;
КонецЦикла;
МойЗапрос
= Новый Запрос;
МойЗапрос.Текст
= "ВЫБРАТЬ
| Партнеры.УК_ЛицевойСчетЕИРЦ КАК ЛС,
| Партнеры.Ссылка КАК Ссылка,
| F1_СоглашениеОРассрочкеПлатежа.Должник КАК Должник,
| Партнеры.ДолгСУчетомОплатыТекущегоМесяца
КАК ДолгСУчетомОплатыТекущегоМесяца,
| Партнеры.ДолгСУчетомОплатыТекущегоМесяца
КАК ДолгСУчетомОплатыТекущегоМесяцаМин,
| Партнеры.ДолгСУчетомОплатыТекущегоМесяца
КАК ДолгСУчетомОплатыТекущегоМесяцаМакс,
| Партнеры.F1_ТелефонСтрока КАК Телефон,
| Партнеры.УК_Почта КАК Почта,
| Партнеры.F1_Город КАК Город,
| Партнеры.F1_УправляющаяКомпания КАК УК,
| Партнеры.F1_МесяцевДолга КАК МесяцевДолга,
| Партнеры.F1_МесяцевДолга
КАК МесяцевДолгаОт,
| Партнеры.F1_МесяцевДолга
КАК МесяцевДолгаДо
|ИЗ
| Справочник.Партнеры КАК Партнеры
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.F1_СоглашениеОРассрочкеПлатежа
КАК F1_СоглашениеОРассрочкеПлатежа
| ПО (F1_СоглашениеОРассрочкеПлатежа.Должник = Партнеры.Ссылка)
|ГДЕ
| F1_СоглашениеОРассрочкеПлатежа.Должник ЕСТЬ NULL
| И
1 = 1
| И 2 = 2
| И 3 = 3
| И 4 = 4
| И 5 = 5
| И 6 = 6
| И 7 = 7
| И 8 = 8";
//Дополнительные поля с
"Мин" и "Макс" нужны для идентификации в отборах
//Добавляем условия в запрос и
задаем параметры
Если исГород
Тогда
МойЗапрос.Текст
= СтрЗаменить(МойЗапрос.Текст,
"1 = 1", "Партнеры.F1_Город В (&Город)");
МойЗапрос.УстановитьПараметр("Город",
пзГород);
КонецЕсли;
Если исТелефон
Тогда
МойЗапрос.Текст
= СтрЗаменить(МойЗапрос.Текст,
"2 = 2", "Партнеры.F1_ТелефонСтрока" + усТелефон);
МойЗапрос.УстановитьПараметр("Телефон",
пзТелефон);
КонецЕсли;
Если исПочта
Тогда
МойЗапрос.Текст
= СтрЗаменить(МойЗапрос.Текст,
"3 = 3", "Партнеры.УК_Почта" + усПочта);
МойЗапрос.УстановитьПараметр("Почта",
пзПочта);
КонецЕсли;
Если исУК
Тогда
МойЗапрос.Текст
= СтрЗаменить(МойЗапрос.Текст,
"4 = 4", "Партнеры.F1_УправляющаяКомпания = &УК");
МойЗапрос.УстановитьПараметр("УК",
пзУК);
КонецЕсли;
Если исДолгСучетомОплатыТекущегоМесяцаМин
Тогда
МойЗапрос.Текст
= СтрЗаменить(МойЗапрос.Текст,
"5 = 5", "Партнеры.ДолгСУчетомОплатыТекущегоМесяца"
+ усДолгСучетомОплатыТекущегоМесяцаМин);
МойЗапрос.УстановитьПараметр("ДолгСучетомОплатыТекущегоМесяцаМин",
пзДолгСучетомОплатыТекущегоМесяцаМин);
КонецЕсли;
Если исДолгСучетомОплатыТекущегоМесяцаМакс
Тогда
МойЗапрос.Текст
= СтрЗаменить(МойЗапрос.Текст,
"6 = 6", "Партнеры.ДолгСУчетомОплатыТекущегоМесяца"
+ усДолгСУчетомОплатыТекущегоМесяцаМакс);
МойЗапрос.УстановитьПараметр("ДолгСучетомОплатыТекущегоМесяцаМакс",
пзДолгСучетомОплатыТекущегоМесяцаМакс);
КонецЕсли;
Если исМесяцевДолгаОт
Тогда
МойЗапрос.Текст
= СтрЗаменить(МойЗапрос.Текст,
"7 = 7", "Партнеры.F1_МесяцевДолга" + усМесяцевДолгаОт);
МойЗапрос.УстановитьПараметр("МесяцевДолгаОт", пзМесяцевДолгаОт);
КонецЕсли;
Если исМесяцевДолгаДо
Тогда
МойЗапрос.Текст
= СтрЗаменить(МойЗапрос.Текст,
"8 = 8", "Партнеры.F1_МесяцевДолга" + усМесяцевДолгаДо);
МойЗапрос.УстановитьПараметр("МесяцевДолгаДо", пзМесяцевДолгаДо);
КонецЕсли;
Результат = МойЗапрос.Выполнить();
Если Результат.Пустой()
Тогда
Возврат;
КонецЕсли;
Выгрузка = Результат.Выгрузить();
//Из ТЗ выгружаем колонку с
ссылками и засовываем ее в строку
ВыгрузкаДляБота
= ЗначениеВСтрокуВнутр(Выгрузка.ВыгрузитьКолонку("Ссылка"));
ДанныеРасшифровки
= Новый ДанныеРасшифровкиКомпоновкиДанных;
КомпоновщикМакета
= Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки
= КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных,
Настройки, ДанныеРасшифровки);
ВнешнийНаборДанных
= Новый Структура("НаборДанных2", Выгрузка);
ПроцессорКомпоновкиДанных
= Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ВнешнийНаборДанных,
ДанныеРасшифровки);
ДокументРезультат.Очистить();
ПроцессорВывода
= Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
КонецПроцедуры
|