![]() |
|
Заполнение тч документа из 2х объединенных запросов | ☑ | ||
---|---|---|---|---|
0
JuixyJes
22.04.19
✎
22:01
|
Имеется код, который заполняет табличную часть документа данными запроса. НО! Цикл проходится 4 раза и заполняет сначала строчки первого запроса, а второй запрос записывается в новые строчки. Каким образом мне выводить все в одну строчку?
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | КосякСотрудника.Наряд КАК Наряд, | КосякСотрудника.Сотрудник КАК Сотрудник, | КосякСотрудника.Ссылка КАК Косяк, | КосякСотрудника.СуммаК КАК СуммаК, | КосякСотрудника.Продукция КАК Продукция, | КосякСотрудника.Технология КАК Технология, | КосякСотрудника.Сотрудник.Должность.Процент КАК СотрудникДолжностьПроцент, | NULL КАК Сумма |ИЗ | Документ.КосякСотрудника КАК КосякСотрудника |ГДЕ | КосякСотрудника.Наряд.Заявка = &Заявка | |ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ | NULL, | NULL, | NULL, | NULL, | NULL, | NULL, | NULL, | НарядТехнологии.Сумма |ИЗ | Документ.Наряд.Технологии КАК НарядТехнологии |ГДЕ | НарядТехнологии.Ссылка.Заявка = &Заявка"; Запрос.УстановитьПараметр("Заявка", Заявка); РезультатЗапроса = Запрос.Выполнить(); ТЧЗП.Очистить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл НоваяСтрока = ТЧЗП.Добавить(); НоваяСтрока.Наряд = ВыборкаДетальныеЗаписи.Наряд; НоваяСтрока.Сотрудник = ВыборкаДетальныеЗаписи.Сотрудник; НоваяСтрока.Продукция = ВыборкаДетальныеЗаписи.Продукция; НоваяСтрока.Технология = ВыборкаДетальныеЗаписи.Технология; НоваяСтрока.Процент = ВыборкаДетальныеЗаписи.СотрудникДолжностьПроцент; НоваяСтрока.Косяк = ВыборкаДетальныеЗаписи.Косяк; НоваяСтрока.СуммаКосяка = ВыборкаДетальныеЗаписи.СуммаК; НоваяСтрока.КТУ = "1.0"; НоваяСтрока.Сумма = ВыборкаДетальныеЗаписи.Сумма; КонецЦикла; |
|||
1
lodger
22.04.19
✎
22:12
|
(0) надо осилить разницу между объединением и соединением.
|
|||
2
lodger
22.04.19
✎
22:13
|
а зачем ветку повторять?
|
|||
3
JuixyJes
22.04.19
✎
22:26
|
(2) а не могли бы вы обьяснить мне разницу, и что мне сделать чтобы оно заработало так, как задумано?
|
|||
4
hhhh
22.04.19
✎
22:38
|
(3) ну может у вас в наряде 4 строчки. Тогда правильно она работает, выбирает 4 суммы из наряда.
|
|||
5
JuixyJes
22.04.19
✎
22:44
|
у меня в наряде 2 строчки, значения в цикле в СУММУ попадают на 3 и 4 проход
|
|||
6
catena
23.04.19
✎
05:14
|
Секция ОБЪЕДИНИТЬ [ВСЕ](Объединение запросов)
В языке запросов имеется возможность объединять несколько запросов. При этом записи, полученные с помощью каждого из объединяемых запросов, будут собраны в один результат запроса. При объединении каждый запрос собирает данные независимо, а такие операции, как упорядочивание результатов и расчет итогов выполняются уже над результатом объединения запросов. Поля результата запроса будут называться так, как описано в списке полей выборки первого из объединяемых запросов. Поля выборки остальных запросов сопоставляются с полями результата в соответствии с порядком их следования в списке полей выборки. Объединяемые запросы должны иметь одинаковое количество полей в списке полей выборки. Если поля выборки объединяемых запросов имеют разный тип, то поля результата запроса будут иметь составной тип. Объединение запросов описывается по следующему правилу: <Объединение запросов> | ОБЪЕДИНИТЬ [ВСЕ] <Описание запроса> [<Объединение запросов>] Объединение запросов начинается с обязательного ключевого слова ОБЪЕДИНИТЬ, после которого следует описание присоединяемого запроса. Далее может присоединяться еще один запрос и т. д. По умолчанию при объединении запросов полностью одинаковые строки в результате запроса, сформированные разными запросами, заменяются одной. Если требуется, чтобы были оставлены разные строки, необходимо указать ключевое слово ВСЕ. Пример: ЛЕВОЕ [ВНЕШНЕЕ] СОЕДИНЕНИЕ означает, что в результат запроса надо включить комбинации записей из обеих исходных таблиц, которые соответствуют указанному условию. Но, в отличие от внутреннего соединения, в результат запроса надо включить также еще и записи из первого (указанного слева от слова СОЕДИНЕНИЕ) источника, для которых не найдено соответствующих условию записей из второго источника. Таким образом, в результат запроса будут включены все записи из первого источника; они будут соединены с записями из второго источника при выполнении указанного условия. Строки результата запроса, для которых не найдено соответствующих условию записей из второго источника, будут содержать NULL в полях, формируемых на основании записей из этого источника. Ключевое слова ВНЕШНЕЕ можно не указывать вообще, оно повышает наглядность и удобочитаемость текста запроса. Пример: // В отчет необходимо вывести всех контрагентов, а для тех, // кто является также банком – указать ссылку на банк. ВЫБРАТЬ Контрагенты.Ссылка КАК Контрагент, Банки.Ссылка КАК Банк ИЗ Справочник.Контрагенты КАК Контрагенты ЛЕВОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ Справочник.Банки КАК Банки ПО Контрагенты.Наименование = Банки.Наименование |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |