Имя: Пароль:
1C
1С v8
Отбор компоновки данных
0 logman
 
16.01.22
23:16
Всем добрый вечер.
Возникла задача, где в процессе нужно перетащить СКД-шные отборы в текст обычного запроса(не СКД). Попробовал много всякого, но ничего не получилось в нужном ключе, каждый раз все сводилось к огромному повторяющемуся сложному коду.
Подскажите, такая реализация в принципе возможна? Например, какие нибудь функции или процедуры в БСП. Или все таки это невыполнимая задача
Всем заранее спасибо за ответы!
1 logman
 
16.01.22
23:26
Уточню, это обычные отборы компоновки данных, берутся не из самого СКД, а просто реализованы на кое-какой отдельной форме, с получением самих отборов проблем нет, но вот как их вставить в текст запроса, ума не приложу, учитывая то, что эти отборы можно группировать, и задавать абсолютно различные комбинации условий, которые очень тяжело воспроизвести в текст запроса.
2 МихаилМ
 
16.01.22
23:29
3 acht
 
16.01.22
23:47
(0) Возьми схему и настройки со своими отборами, вытащи готовый запрос из набора данных после компоновщика, типа:

    Компоновщик = Новый КомпоновщикМакетаКомпоновкиДанных;
    Макет = Компоновщик.Выполнить(Схема, Настройки);
    НаборДанных = Макет.НаборыДанных[0];
    ТекстЗапроса = НаборДанных.Запрос;

А потом окажется, что не все отборы/группировки можно оттранслировать в запрос напрямую...
4 logman
 
17.01.22
00:33
(2) Извините, не совсем понял, как это может мне помочь
(3) Попробовал сделать как Вы сказали, но в наборах данных у меня пусто после выполнения запроса компоновщиком
5 osa1C
 
17.01.22
08:11
(4) в (3) ответ, просто пройдись отладчиком, посмотри тот ли Макет и Схему подтягивает
6 acht
 
17.01.22
09:20
(4) 99.99% что схема или настройки кривые.

Если не осиливаешь, то засучивай рукава и пиши генерацию строки условия ГДЕ по отборам вручную. Через рекурсивный обход групп, весь отбор изначально - большая группа "И". Через расстановку скобок там, генерацию условий сравнения, набивку запроса параметрами. Для запроса по одной таблице там ничего особо сложного нет. Вот когда таблиц несколько или в отборе разыменование через точку будет...
7 FIXXXL
 
17.01.22
11:11
(0) не проще выгрузить результат СКД в таблицу значений? если прям запрос нужен - готовую таблицу передать в запрос...
8 DrShad
 
17.01.22
11:12
(7) с языка снял
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.