|
Помогите перешедшему с v7 создать запрос из двух регистров с объединением | ☑ | ||
---|---|---|---|---|
0
Ashabad
30.11.11
✎
23:24
|
Я недавно перешёл на v8 - не было необходимости. C SQL дружу плохо. Проблема такая:
Конфа Управление торговлей для Украины Два регистра ВзаиморасчетыСКонтрагентами и ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов. Нужно выбрать по конкретному контрагенту и организации регистраторы из первого регистра и присединить к ним по по аналогичным условиям регистраторы из второго, но только те, которых нет в первом. |
|||
1
zak555
30.11.11
✎
23:24
|
> Я недавно перешёл на v8
зря |
|||
2
zak555
30.11.11
✎
23:25
|
если бы расписал структуру регистров - может что-то и было
|
|||
3
zak555
30.11.11
✎
23:25
|
> C SQL дружу плохо
базу хоть прочти |
|||
4
Grusswelle
30.11.11
✎
23:25
|
> Конфа Управление торговлей для Украины
хз, я только с российской знаком... |
|||
5
zak555
30.11.11
✎
23:25
|
+ по сколько укр - пиши на eng
|
|||
6
Ashabad
30.11.11
✎
23:27
|
регистры накопления
В обоих регистрах есть измерения: Организация Контрагент и ресурс СуммаВзаиморасчетов |
|||
7
andrewks
30.11.11
✎
23:27
|
какого вида таблицу надо получить?
|
|||
8
zak555
30.11.11
✎
23:28
|
(6) и всё ?
|
|||
9
Ashabad
30.11.11
✎
23:29
|
Организация, Контрагент, Регистратор, ОстатокСуммаВзаиморасетов
|
|||
10
zak555
30.11.11
✎
23:29
|
осталось узнать, что такое регистратор
|
|||
11
Ashabad
30.11.11
✎
23:29
|
(8) есть другие измерения и реквизиты, но мне они не нужны
|
|||
12
Ashabad
30.11.11
✎
23:30
|
(10) документ, сделавший движение
|
|||
13
zak555
30.11.11
✎
23:30
|
(12) измерение ?
|
|||
14
zak555
30.11.11
✎
23:31
|
(11) что в результате тхочешь ?
|
|||
15
Ashabad
30.11.11
✎
23:32
|
(14) Выборку из запроса
|
|||
16
zak555
30.11.11
✎
23:33
|
думается мне, что первый - более обощённый регс, чем второй => задание невыполнимо
|
|||
17
Ashabad
30.11.11
✎
23:36
|
(16) В данном случае мне нужен синтаксис запроса из двух регистров со сходной структурой. Типы описанных измерений и ресурсов совпадают. Аналога синтаксиса NOT EXIST я не нашёл.
|
|||
18
zak555
30.11.11
✎
23:37
|
правое соединение + есть нулл ?
|
|||
19
Ashabad
30.11.11
✎
23:39
|
(18) если можно - пример, ибо я пока не могу мыслить в восмёрошном языке запросов абстрактно.
|
|||
20
zak555
30.11.11
✎
23:41
|
(19) не умею
|
|||
21
SnarkHunter
30.11.11
✎
23:48
|
Элементарное объединение...
|
|||
22
Ashabad
30.11.11
✎
23:52
|
(21) для меня это пока не элементарно
|
|||
23
zak555
30.11.11
✎
23:56
|
(21) через соединение никак ?
|
|||
24
Ashabad
01.12.11
✎
00:00
|
(23) Наверно, через соединение. Но опыта нет. Да я вобщем обошёлся, некрасиво конечно, я стараюсь так не делать: два запроса с последующим сравнением. Но времени на изучение теории нет. Я обычно на форумы по таким вопросам не обращаюсь, чтобы не отвлекать умных людей.
|
|||
25
КонецЦикла
01.12.11
✎
01:26
|
(21) Объединение подразумевает объединение при условии одинакового набора данных
А тут неясна структура и "тех которых нет в первом" (24) Левое соединение со вторым регистром по всем полям + те же условия + условие регистратор is null |
|||
26
viktor_vv
01.12.11
✎
01:45
|
У меня как-то так получилось. Только учитывая " ОстатокСуммаВзаиморасетов" Надо было ОстаткиИОбороты брать. Чето меня всегда напрягает желание получить остатки по регистратору.
ТекстЗапроса = " |ВЫБРАТЬ | ВзаиморасчетыСКонтрагентамиОбороты.Организация КАК Организация, | ВзаиморасчетыСКонтрагентамиОбороты.Контрагент КАК Контрагент, | ВзаиморасчетыСКонтрагентамиОбороты.Регистратор КАК Регистратор |Поместить | ВремВзаиморасчеты |ИЗ | РегистрНакопления.ВзаиморасчетыСКонтрагентами.Обороты(&ДатаНач,&ДатаКон , Регистратор,Контрагент = &Контрагент И Организация = &Организация ) КАК ВзаиморасчетыСКонтрагентамиОбороты |; |////////////////////////////// |Выбрать |Общая.Организация КАК Организация, |Общая.Контрагент КАК Контаргент, |Общая.Регистратор КАК Регистратор, |Общая.Добавленные Как Добавленные | |ИЗ | |(Выбрать | ВремВзаиморасчеты.Организация КАК Организация, | ВремВзаиморасчеты.Контрагент КАК Контрагент, | ВремВзаиморасчеты.Регистратор КАК Регистратор, | 0 КАК ДобавленныеИзРасчетов | ИЗ |ВремВзаиморасчеты Как ВремВзаиморасчеты | |Объединить Все | |ВЫБРАТЬ | ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОбороты.Организация Как Организация, | ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОбороты.Контрагент КАК Контрагент, | ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОбороты.Регистратор КАК Регистратор, | 1 КАК ДобавленныеИзРасчетов |ИЗ | РегистрНакопления.ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов.Обороты(&ДатаНач,&ДатаКон , Регистратор, Контрагент = &Контрагент И Организация = &Организация) КАК ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОбороты | Где | ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОбороты.Регистратор | НЕ В (Выбрать Регистратор ИЗ ВремВзаиморасчеты) | ) КАК Общая | |Упорядочить ПО Общая.Организация.Наименование , Общая.Контрагент.Наименование, Общая.Регистратор.Дата |"; Запрос = Новый Запрос ; Запрос.УстановитьПараметр("ДатаНач",'20080101'); Запрос.УстановитьПараметр("ДатаКон",КонецДня(ТекущаяДата())); Запрос.УстановитьПараметр("Организация",Организация); Запрос.УстановитьПараметр("Контрагент",Контрагент); Запрос.Текст = ТекстЗапроса ; ТЗ = Запрос.Выполнить().Выгрузить(); ТЗ.ВыбратьСтроку(); Организация и Контаргент реквизиты отчета. Правда судя по демобазе движения там делаются синхронно, специально добавил поле для проверки. |
|||
27
viktor_vv
01.12.11
✎
02:35
|
Попрактикуюсь немного :).
Через полное так получаетя. ТекстЗапроса = " | ВЫБРАТЬ | ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Организация, | ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Контрагент, | Выбор Когда ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Регистратор IS NULL Тогда 1 Иначе 0 Конец КАК Добавленные, | IsNull(ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Регистратор,ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОбороты.Регистратор), | IsNull(ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовКонечныйОстаток,ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОбороты.СуммаВзаиморасчетовКонечныйОстаток) КАК СуммаОстаток |ИЗ | РегистрНакопления.ВзаиморасчетыСКонтрагентами.ОстаткиИОбороты(, , Регистратор, Движения, Контрагент = &Контрагент И Организация = &Организация) КАК ВзаиморасчетыСКонтрагентамиОстаткиИОбороты | ПОЛНОЕ СОЕДИНЕНИЕ РегистрНакопления.ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов.ОстаткиИОбороты(, , Регистратор, Движения, Контрагент = &Контрагент И Организация = &Организация) КАК ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОбороты | ПО ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Организация = ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОбороты.Организация | И ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Контрагент = ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОбороты.Контрагент | И ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Регистратор = ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОбороты.Регистратор |"; Запрос = Новый Запрос ; Запрос.УстановитьПараметр("ДатаНач",'20080101'); Запрос.УстановитьПараметр("ДатаКон",КонецДня(ТекущаяДата())); Запрос.УстановитьПараметр("Организация",Организация); Запрос.УстановитьПараметр("Контрагент",Контрагент); Запрос.Текст = ТекстЗапроса ; ТЗ = Запрос.Выполнить().Выгрузить(); ТЗ.ВыбратьСтроку(); |
|||
28
Зеленый Кот
01.12.11
✎
02:42
|
запросом впечатлился... восхищен!
|
|||
29
Ashabad
01.12.11
✎
02:54
|
(26-27) Искренне спасибо. Необходимо будет основательно это всё обдумать. Спасибо...
|
|||
30
FIXXXL
01.12.11
✎
03:03
|
(0) уверен, что там и там сходятся?
галки в конфе все стоят? ты в принципе сравнить (соеденить) хочешь г..овно с ловатой |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |