|
Как сложить две ТЗ в запросе | ☑ | ||
---|---|---|---|---|
0
SeregaMW
02.11.15
✎
10:43
|
Есть две одинаковых ТЗ как их сложить запросом.
|
|||
1
butterbean
02.11.15
✎
10:44
|
через ОБЪЕДИНИТЬ ВСЕ
|
|||
2
Господин ПЖ
02.11.15
✎
10:45
|
в запросе можно сложить запросом
|
|||
3
Тoлько_
Просмотр 02.11.15
✎
10:50
|
(0) Помести их во временные таблицы и далее (1)
|
|||
4
SeregaMW
02.11.15
✎
10:52
|
пример можно
|
|||
5
ДенисЧ
02.11.15
✎
10:57
|
(4) 100 евро
|
|||
6
SeregaMW
02.11.15
✎
11:00
|
(5) А добрые люди есть тут?
|
|||
7
butterbean
02.11.15
✎
11:00
|
(6) недобрые возьмут 500
|
|||
8
rs_trade
02.11.15
✎
11:01
|
(6) Добрые уже сказали. Отчеты читаем вообще?
|
|||
9
MiniMuk
02.11.15
✎
11:03
|
(0)
1. как получить 1 ТЗ в запросе знаешь? 2. как объединить 2 запроса знаешь? |
|||
10
ДенисЧ
02.11.15
✎
11:04
|
(6) Как раз добрые и предлагают со скидкой...
|
|||
11
MiniMuk
02.11.15
✎
11:06
|
(6) 300$ подключусь сейчас. расскажу, покажу.
|
|||
12
su_mai
02.11.15
✎
11:15
|
(0) А я добренький :)
// Строгая типизация колонок таблицы обязательна Таблица1 = Новый ТаблицаЗначений; Таблица1.Колонки.Добавить("Наименование", Новый ОписаниеТипов("Строка"); Таблица1.Колонки.Добавить("Сумма", Новый ОписаниеТипов("Число"); // Заполнение данных Таблица1 // Строгая типизация колонок таблицы обязательна Таблица2 = Новый ТаблицаЗначений; Таблица2.Колонки.Добавить("Наименование", Новый ОписаниеТипов("Строка"); Таблица2.Колонки.Добавить("Сумма", Новый ОписаниеТипов("Число"); // Заполнение данных Таблица2 // Запрос объединения таблиц Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | внТаблица1.Номенклатура, | внТаблица1.Сумма |ПОМЕСТИТЬ Таблица1 |ИЗ | внТаблица1 КАК внТаблица1 |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | внТаблица2.Номенклатура, | внТаблица2.Сумма |ПОМЕСТИТЬ Таблица2 |ИЗ | внТаблица2 КАК внТаблица2 |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | Таблица1.Номенклатура КАК Номенклатура, | Таблица1.Сумма КАК Сумма |ИЗ | Таблица1 КАК Таблица1 | |ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ | Таблица2.Номенклатура, | Таблица2.Сумма |ИЗ | Таблица2 КАК Таблица2"; РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл // Вставить обработку выборки ВыборкаДетальныеЗаписи КонецЦикла; |
|||
13
Mirnin
02.11.15
✎
11:16
|
Справка тоже добренькая. Справка - Поиск по справке - Объединить все.
|
|||
14
su_mai
02.11.15
✎
11:16
|
(12)
В строках Таблица1.Колонки.Добавить("Наименование", Новый ОписаниеТипов("Строка"); и Таблица2.Колонки.Добавить("Наименование", Новый ОписаниеТипов("Строка"); Заменить "Наименование" на "Номенклатура" |
|||
15
su_mai
02.11.15
✎
11:19
|
(13) А про это: "// Строгая типизация колонок таблицы обязательна", в справке явно не написано...
|
|||
16
D_E_S_131
02.11.15
✎
11:48
|
(15) Нет ничего более отвратительного чем альтруизм...
|
|||
17
su_mai
02.11.15
✎
11:57
|
(16) Не переживай, всего лишь - тщеславие... :)
|
|||
18
forforumandspam
03.11.15
✎
07:11
|
(12) А где параметры запроса? Добренький он....
|
|||
19
Sammo
03.11.15
✎
07:38
|
А потом окажется, что под двумя одинаковыми понимаются одинаковые не только по структуре, но и по содержанию.
Или то что сложить - это сложить значения какой-то колонки. |
|||
20
cw014
03.11.15
✎
07:40
|
(12) Жук ты, а не добренький. Вообще то мы живем в мире, где все платно
|
|||
21
forforumandspam
03.11.15
✎
07:55
|
Добренький, блин.
1) Во всех строках вида: Таблица1.Колонки.Добавить("Наименование", Новый ОписаниеТипов("Строка"); забыл одну скобку. 2)Надо так: Запрос = Новый Запрос; Запрос.УстановитьПараметр("внТаблица1", Таблица1); Запрос.УстановитьПараметр("внТаблица2", Таблица2); 3)И так: |ИЗ | &внТаблица1 КАК внТаблица1 |ИЗ | &внТаблица2 КАК внТаблица2 |
|||
22
su_mai
03.11.15
✎
08:18
|
(21) Все правильно говорите. Поторопился "запостить", не проверил... Сори.
|
|||
23
User_Agronom
03.11.15
✎
08:25
|
А циклом добавить строки не проще?
|
|||
24
su_mai
03.11.15
✎
08:31
|
(23) На самом деле все зависит от ситуации. Запросы не самоцель.
|
|||
25
User_Agronom
03.11.15
✎
08:31
|
(24) Я и говорю, что в этой ситуации циклом бы решить нужно.
|
|||
26
su_mai
03.11.15
✎
09:05
|
(25) Дело в том, что если задача просто добавить данные, то это можно сделать как с помощью объектной модели таблицы значений, так и с помощью запроса.
Другое дело, если данные внешних таблиц надо потом сгруппировать (с подсчетом суммы или нахождением максимума), тогда удобнее запросом. |
|||
27
su_mai
03.11.15
✎
09:08
|
(0) Работающий пример:
//Особенности: // 1. Строгая типизация колонок "внешних" таблиц обязательна. // 2. Каждая внешняя таблица передается в отдельный пакетный запрос как параметр: | &внТаблица1 КАК внТаблица1. Имя параметра и псевдоним таблицы не играют роли. // При этом из неё выбираются все необходимые поля (могут не все), причем псевдонимы полей могут отличаться от имен колонок (это надо учитывать при объединениии). // Выборка помещается во временную таблицу (в данном примере таких запросов два, для Таблица1 и Таблица2). // 3. В последствии можно оперировать в запросе данными этих временныхтаблиц по своему усмотрению. // В данном примере происходит объединение данных таблиц и групировка с суммированием. Таблица1 = Новый ТаблицаЗначений; Таблица1.Колонки.Добавить("Наименование", Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(250, ДопустимаяДлина.Переменная))); Таблица1.Колонки.Добавить("Артикул", Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(25, ДопустимаяДлина.Переменная))); Таблица1.Колонки.Добавить("Сумма", Новый ОписаниеТипов("Число")); Для инд = 1 По 10 Цикл НоваяСтрока = Таблица1.Добавить(); НоваяСтрока.Наименование = "Наименование " + инд; НоваяСтрока.Артикул = "Артикул " + инд; НоваяСтрока.Сумма = инд; КонецЦикла; Таблица2 = Новый ТаблицаЗначений; Таблица2.Колонки.Добавить("Наименование", Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(250, ДопустимаяДлина.Переменная))); Таблица2.Колонки.Добавить("Сумма", Новый ОписаниеТипов("Число")); Для инд = 1 По 10 Цикл НоваяСтрока = Таблица2.Добавить(); НоваяСтрока.Наименование = "Наименование " + инд; НоваяСтрока.Сумма = инд; КонецЦикла; // Запрос объединения таблиц Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | внТаблица1.Наименование КАК Номенклатура, | внТаблица1.Сумма |ПОМЕСТИТЬ Таблица1 |ИЗ | &внТаблица1 КАК внТаблица1 |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | внТаблица2.Наименование, | внТаблица2.Сумма |ПОМЕСТИТЬ Таблица2 |ИЗ | &внТаблица2 КАК внТаблица2 |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ВложенныйЗапрос.Наименование КАК Наименование, | СУММА(ВложенныйЗапрос.Сумма) КАК Сумма |ИЗ | (ВЫБРАТЬ | Таблица1.Номенклатура КАК Наименование, | Таблица1.Сумма КАК Сумма | ИЗ | Таблица1 КАК Таблица1 | | ОБЪЕДИНИТЬ ВСЕ | | ВЫБРАТЬ | Таблица2.Наименование, | Таблица2.Сумма | ИЗ | Таблица2 КАК Таблица2) КАК ВложенныйЗапрос | |СГРУППИРОВАТЬ ПО | ВложенныйЗапрос.Наименование | |УПОРЯДОЧИТЬ ПО | Наименование"; Запрос.УстановитьПараметр("внТаблица1", Таблица1); Запрос.УстановитьПараметр("внТаблица2", Таблица2); Таблица3 = Новый ТаблицаЗначений; РезультатЗапроса = Запрос.Выполнить(); Если Не РезультатЗапроса.Пустой() Тогда Таблица3 = РезультатЗапроса.Выгрузить(); КонецЕсли; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |