1С: Получение полей отбора с формы списка
Задача: узнать состав текущего отбора на форме списка..и составить аналогичный запрос в БД, для получения выборки
Решение: Применимо в данный момент только к динамическому списку. Отборы получаем чтением данных из компоновщика настроек. Запрос (фактически условие) получается крайне грубым, но приемлемым для моих входящих данных. Итак код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
// Проработаем текущий отбор sql=""; для каждого стр из Список.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы цикл попытка ош=стр["Элементы"];исключение прервать; конецпопытки; для каждого эл из стр.Элементы цикл если эл.ВидСравнения=ВидСравненияКомпоновкиДанных.Содержит тогда sql=sql+" И "+эл.ЛевоеЗначение+" ПОДОБНО ""%"+эл.ПравоеЗначение+"%"""; конецесли; если эл.ВидСравнения=ВидСравненияКомпоновкиДанных.Равно тогда sql=sql+" И "+эл.ЛевоеЗначение+" = """+эл.ПравоеЗначение+""""; конецесли; если эл.ВидСравнения=ВидСравненияКомпоновкиДанных.Больше тогда sql=sql+" И "+эл.ЛевоеЗначение+" > """+эл.ПравоеЗначение+""""; конецесли; если эл.ВидСравнения=ВидСравненияКомпоновкиДанных.Меньше тогда sql=sql+" И "+эл.ЛевоеЗначение+" < """+эл.ПравоеЗначение+""""; конецесли; если эл.ВидСравнения=ВидСравненияКомпоновкиДанных.НеРавно тогда sql=sql+" И "+эл.ЛевоеЗначение+" <> """+эл.ПравоеЗначение+""""; конецесли; конеццикла; конеццикла; |
