Динамическое заполнение параметров
Недавно столкнулся с проблемой.
Была обработка с запросами где было условие типа "Подразделение <> &Подр…"
Клиент расширялся и Подразделение разбилось на несколько…
Надо было исправить…
- Описание
- Подробнее
Описание
Недавно столкнулся с проблемой.
Была обработка с запросами где было условие типа «Подразделение <> &Подр…»
Клиент расширялся и Подразделение разбилось на несколько…
Надо было исправить…
Решение:
1.//ВЫБИРАЕМ ВСЕ ПОДРАЗДЕЛЕНИЯ ОТНОСЯЩИЕСЯ К ГРУППЕ Которая была разбита
ЗапросПодразделения = Новый Запрос;
ЗапросПодразделения.Текст = "
|ВЫБРАТЬ
|ПодразделенияОрганизаций.Ссылка КАК Подр
|ИЗ
|Справочник.ПодразделенияОрганизаций КАК ПодразделенияОрганизаций
|ГДЕ
|ПодразделенияОрганизаций.Родитель.Ссылка = &ПодразделениеДоговорников";
2.//СТРОИМ ЭЛЕМЕНТ ЗАПРОСА ОТНОСИТЕЛЬНО КОЛИЧЕСТВА ПОДПОДРАЗДЕЛЕНИЙ ДЛЯ КОРНЕВОГО ПОДРАЗДЕЛЕНИЯ"
ТекстЗапроса = "В (";
НомерТекПеременной = 0;
Пока ВыборкаПодрДог.Следующий() Цикл
Если НомерТекПеременной <> 0 Тогда
ТекстЗапроса = ТекстЗапроса + ", ";
КонецЕсли;
НомерТекПеременной = НомерТекПеременной + 1;
ТекПеременнаяСтрока = "&Подр" + НомерТекПеременной;
ТекстЗапроса = ТекстЗапроса + ТекПеременнаяСтрока;
КонецЦикла;
ТекстЗапроса = ТекстЗапроса + ")";
//ЭЛЕМЕНТ ВИДА ТекстЗапроса = "В (&Подр1, &Подр2, .... )"
3. Меняем условие в исходном запросе
"НЕ ПОДРАЗДЕЛЕНИЕ " + ТекстЗапроса + ")" +"
4. Динамически заполняем параметры
//ДИНАМИЧЕСКОЕ ЗАПОЛНЕНИЕ
ВыборкаПодрДог.Сбросить();
НомерТекПеременной = 0;
Пока ВыборкаПодрДог.Следующий() Цикл
НомерТекПеременной = НомерТекПеременной + 1;
ТекПеременнаяСтрока = "Подр" + НомерТекПеременной;
Запрос.УстановитьПараметр(ТекПеременнаяСтрока, ВыборкаПодрДог.Подр);
КонецЦикла;
Все))