Каталог решений - Динамическое заполнение параметров

Динамическое заполнение параметров

Динамическое заполнение параметров

В наличии

Недавно столкнулся с проблемой.
Была обработка с запросами где было условие типа "Подразделение <> &Подр…"
Клиент расширялся и Подразделение разбилось на несколько…
Надо было исправить…

Категория:

Описание

 

Недавно столкнулся с проблемой.

Была обработка с запросами где было условие типа «Подразделение <> &Подр…»

Клиент расширялся и Подразделение разбилось на несколько…

Надо было исправить…

Решение:

1.//ВЫБИРАЕМ ВСЕ ПОДРАЗДЕЛЕНИЯ ОТНОСЯЩИЕСЯ К ГРУППЕ Которая была разбита

 

ЗапросПодразделения = Новый Запрос;

ЗапросПодразделения.Текст = "

|ВЫБРАТЬ

|ПодразделенияОрганизаций.Ссылка КАК Подр

|ИЗ

|Справочник.ПодразделенияОрганизаций КАК ПодразделенияОрганизаций

|ГДЕ

|ПодразделенияОрганизаций.Родитель.Ссылка = &ПодразделениеДоговорников";

 

2.//СТРОИМ ЭЛЕМЕНТ ЗАПРОСА ОТНОСИТЕЛЬНО КОЛИЧЕСТВА ПОДПОДРАЗДЕЛЕНИЙ ДЛЯ КОРНЕВОГО ПОДРАЗДЕЛЕНИЯ"

ТекстЗапроса = "В (";

НомерТекПеременной = 0;

Пока ВыборкаПодрДог.Следующий() Цикл 

Если НомерТекПеременной <> 0 Тогда

ТекстЗапроса = ТекстЗапроса + ", ";

КонецЕсли;

НомерТекПеременной = НомерТекПеременной + 1;

ТекПеременнаяСтрока = "&Подр" + НомерТекПеременной;

ТекстЗапроса = ТекстЗапроса + ТекПеременнаяСтрока;

КонецЦикла;

ТекстЗапроса = ТекстЗапроса + ")";

//ЭЛЕМЕНТ ВИДА ТекстЗапроса = "В (&Подр1, &Подр2, .... )"

3. Меняем условие в исходном запросе

"НЕ ПОДРАЗДЕЛЕНИЕ " + ТекстЗапроса + ")" +"

4. Динамически заполняем параметры

 

//ДИНАМИЧЕСКОЕ ЗАПОЛНЕНИЕ

 

ВыборкаПодрДог.Сбросить();

НомерТекПеременной = 0;

Пока ВыборкаПодрДог.Следующий() Цикл

НомерТекПеременной = НомерТекПеременной + 1;

ТекПеременнаяСтрока = "Подр" + НомерТекПеременной;

Запрос.УстановитьПараметр(ТекПеременнаяСтрока, ВыборкаПодрДог.Подр);

КонецЦикла;

 

Все))

has been added to your cart:
Оформление заказа