Имя: Пароль:
1C
 
Получить и использовать настройку отбора компоновки данных
0 Блондинка_
 
24.09.14
17:38
Добрый вечер!
Я домучила свой отчет с разузлованием номенклатуры программно и передачей данных в отчет на скд) Хотелось бы ускорить процесс разузлования, если пользователь задает определенную номенклатуру для которой хочет получить материалы. Пока что я разузловываю всю номенклатуру, которая есть в регистре основных спецификаций, а уже потом скд выполняет отбор.
Так вот перед формированием внешнего набора данных я хочу передать в условие запроса отбор, указанный в скд. Как преобразовать? Ведь то, что я получаю в настройках имеет тип ОтборКомпоновкиДанных, а мне нужно сделать из этого условие в запросе.
1 barrgand
 
24.09.14
17:46
(0) Слабо представляю о чем речь, но думаю без цикла не обойтись.
2 Euguln
 
24.09.14
17:48
Есть пример для построителя:
ДоступныеПоля    = ОтборПостроителя.ПолучитьДоступныеПоля();
    
    Для каждого ЭлементОтбора Из ОтборКомпоновщика.Элементы Цикл
        
        Если ТолькоИспользуемые И НЕ ЭлементОтбора.Использование Тогда
        
            Продолжить;    
        
        КонецЕсли;
        
        ВидСравненияПостроителя    = ПолучитьВидСравнения(ЭлементОтбора.ВидСравнения);
        Если ДоступныеПоля.Найти(Строка(ЭлементОтбора.ЛевоеЗначение)) = Неопределено Тогда
        
            Продолжить;    
        
        КонецЕсли;
        НовоеПоле = ОтборПостроителя.Добавить(Строка(ЭлементОтбора.ЛевоеЗначение));
        НовоеПоле.ВидСравнения    = ВидСравненияПостроителя;
        Если ТипЗнч(ЭлементОтбора.ПравоеЗначение) = Тип("СтандартнаяДатаНачала") Тогда
            НовоеПоле.Значение = ЭлементОтбора.ПравоеЗначение.Дата;
        Иначе    
            НовоеПоле.Значение = ЭлементОтбора.ПравоеЗначение;
        КонецЕсли;
        НовоеПоле.Использование = ЭлементОтбора.Использование;           
    
    КонецЦикла;
3 Блондинка_
 
24.09.14
18:23
(2)
Все-таки это конец дня виноват!) Точно, элементы отбора-то я и не заметила, там есть все что мне нужно вытащить! Спасибо!
4 Блондинка_
 
25.09.14
12:09
Очень помог последний код, почти получилось, но как проще "превратить" вид сравнения СКД в сравнение в запросе (например В Группе=В Иерархии). Функции ПолучитьВидСравнения в УПП точно нет. Должны же быть какие-то универсальные механизмы или придется переводить самой?
5 barrgand
 
25.09.14
12:12
(4) Универсальных механизмов быть не может, т.к. это только частный случай.
6 ssh2QQ6
 
25.09.14
12:21
(4) как написали уже, кодом только.
Однажды я так делал, отчет на скд, обычные формы. Для получения внешнего набора данных использовалось несколько запросов. Текст одного запроса я задал посторителю отчета, и на вкладке отборы компоновки заменил стандартное поле полем построителя и получал текст запроса с отборами как ПостроительОтчета.ПолучитьЗапрос. Но это опять же частный случай.
7 Блондинка_
 
25.09.14
13:26
Жаль конечно. Странно, СКД ведь сама потом свои отборы в текст запроса переводит.
(6) Да у меня там запросик простой, построитель нет смысла исользовать, да и вариантов условий в принципе не много, придется вручную прописать. А идею приму к сведению, мало ли как еще придется изголяться)
Спасибо за помощь!
Программист всегда исправляет последнюю ошибку.