|
1С. СхемаЗапроса. Помогите построить запрос с многими объединениями | ☑ | ||
---|---|---|---|---|
0
SeiOkami
26.05.16
✎
11:12
|
Строю запрос при помощи схемы запрос по такому типу:
ВЫБРАТЬ Тип(Справочник.Валюты) КАК Тип, "Справочник.Валюты" КАК ИмяТипа ОБЪЕДИНИТЬ ВЫБРАТЬ Тип(Справочник.Контрагенты) КАК Тип, "Справочник.Контрагенты" КАК ИмяТипа ... Добавляю в цикле на каждый справочник новый Оператор и в него два Выбираемых поля. Но когда получаю текст запроса из схемы, то выходит так, что каждое добавленное поле добавляется отдельно и у меня выходит кукуева туча полей в запросе. Как заставить схему объединять поля? |
|||
1
RomanYS
26.05.16
✎
11:27
|
код покажи
|
|||
2
Cyberhawk
26.05.16
✎
11:28
|
Обери "КАК" из всех кусков, кроме первого
|
|||
3
Cyberhawk
26.05.16
✎
11:28
|
*/Убери
|
|||
4
SeiOkami
26.05.16
✎
12:35
|
ТаблицаТипов = Новый ТаблицаЗначений;
ТаблицаТипов.Колонки.Добавить("Тип" , Новый ОписаниеТипов("Тип")); ТаблицаТипов.Колонки.Добавить("ИмяТипа" , Новый ОписаниеТипов("Строка")); КоллекцииМетаданных = Новый Массив; Если ПолучатьТипыСправочников Тогда КоллекцииМетаданных.Добавить(Метаданные.Справочники); КонецЕсли; Если ПолучатьТипыДокументов Тогда КоллекцииМетаданных.Добавить(Метаданные.Документы); КонецЕсли; Для Каждого КоллекцияМетаданных Из КоллекцииМетаданных Цикл Для Каждого ТекущиеМетаданные Из КоллекцияМетаданных Цикл НоваяСтрока = ТаблицаТипов.Добавить(); НоваяСтрока.Тип = ТекущиеМетаданные.СтандартныеРеквизиты.Ссылка.Тип.Типы().Получить(0); НоваяСтрока.ИмяТипа = ТекущиеМетаданные.ПолноеИмя(); КонецЦикла; КонецЦикла; СхемаЗапроса = Новый СхемаЗапроса; ПакетЗапроса = СхемаЗапроса.ПакетЗапросов.Получить(0); Для Каждого СтрТаблицаТипов Из ТаблицаТипов Цикл Если ПакетЗапроса.Операторы.Количество() = 1 Тогда Оператор = ПакетЗапроса.Операторы.Получить(0); Иначе Оператор = ПакетЗапроса.Операторы.Добавить(); КонецЕсли; Оператор.ВыбираемыеПоля.Добавить("Тип(" + СтрТаблицаТипов.ИмяТипа + ")"); Оператор.ВыбираемыеПоля.Добавить("""" + СтрТаблицаТипов.ИмяТипа + """"); КонецЦикла; |
|||
5
SeiOkami
26.05.16
✎
12:37
|
Проблема в том, что когда выполняется
" Оператор.ВыбираемыеПоля.Добавить(" То на каждое добавляемое поле добавляется своя колонка в результате запроса |
|||
6
SeiOkami
26.05.16
✎
12:38
|
А нужно, чтобы они объединялись
|
|||
7
RomanYS
26.05.16
✎
13:03
|
(6) Засунул в схему простенький запрос и посмотрел схему отладчиком. Там такая внутренняя структура - лучше бы не смотрел ).
По твоей теме у оператора есть поле "ТипОбъединения". Проще текст запроса собрать как строку ИМХО. Или ищи нормальные примеры. |
|||
8
Карупян
26.05.16
✎
13:05
|
Геморно через схему делать,
Лучше строку собирай |
|||
9
Тролль главный
26.05.16
✎
13:06
|
а зачем это всё?
|
|||
10
Карупян
26.05.16
✎
13:06
|
Ее еще можно юзать, когда нужно поле в типовой запрос добавить или условие, но дальше не стоит
|
|||
11
SeiOkami
26.05.16
✎
13:21
|
Блин, это мой косяк. Тупанул.
Каждый раз поля добавлялись в один и тот же оператор из-за условия: Если ПакетЗапроса.Операторы.Количество() = 1 Тогда Оператор = ПакетЗапроса.Операторы.Получить(0); Иначе Оператор = ПакетЗапроса.Операторы.Добавить(); КонецЕсли; Заменил на Если Счетчик = 1 Тогда //Первый оператор Оператор = ПакетЗапроса.Операторы.Получить(0); Иначе Оператор = ПакетЗапроса.Операторы.Добавить(); КонецЕсли; И всё заработало |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |