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