Имя: Пароль:
1C
1С v8
Как сделать два внутренних соединения в запросе к одной таблице
0 Klesk
 
26.05.12
15:10
ВЫБРАТЬ
   НоменклатураГл.Ссылка КАК Ссылка,
   ЦеныНоменклатурыСрезПоследних.ВидЦены,
   ЦеныНоменклатурыСрезПоследних.Цена,
   СвободныеОстаткиОстатки.Склад,
   СвободныеОстаткиОстатки.ВНаличииОстаток
   
ИЗ
   Справочник.Номенклатура КАК НоменклатураГл
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
       ПО НоменклатураГл.Ссылка = ЦеныНоменклатурыСрезПоследних.Номенклатура.Ссылка
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.СвободныеОстатки.Остатки КАК СвободныеОстаткиОстатки
       ПО НоменклатураГл.Ссылка = СвободныеОстаткиОстатки.Номенклатура.Ссылка
ИТОГИ ПО
   Ссылка

получается что остатки присоединяются к ценам, а хотелось что бы тоже к номенклатуре

т.е. чтобы в результате было не:

|   +-Номенклатура
|   |
|    -ТипЦены | Цена | Склад | ВНаличииОстаток

а

|   +-Номенклатура
|    | |
|    |  -ТипЦены | Цена
|    - | Склад | ВНаличииОстаток

Пробовал с объединение двух посл. таблиц, но долго и не то получается.

Подскажите пожалуйста, как так сделать?
1 shuhard
 
26.05.12
15:12
(0) |   +-Номенклатура
|    | |
|    |  -ТипЦены | Цена
|    - | Склад | ВНаличииОстаток

результат запроса напиши, понять эту картинку не есть возможно
2 Klesk
 
26.05.12
15:15
Первый уровень номенклатура и два вторых уровня
3 Klesk
 
26.05.12
15:26
4 proger2011
 
26.05.12
15:55
Тогда будут два запроса соединенный Юнион Олл, в этих запросам будет поле типа "ЦеныОстатки". В одной таблице бедет заполнено "Цены", в другой "Остатки". Потом это поле в Итоги.
5 Klesk
 
26.05.12
16:25
примерно так?

ВЫБРАТЬ
   ЦеныНоменклатурыСрезПоследних.Номенклатура.Ссылка КАК Номенклатура,
   ЦеныНоменклатурыСрезПоследних.ВидЦены КАК Тип,
   ЦеныНоменклатурыСрезПоследних.Цена КАК Показатель1,
   ЦеныНоменклатурыСрезПоследних.Валюта КАК Показатель2
ИЗ
   РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних

СГРУППИРОВАТЬ ПО
   ЦеныНоменклатурыСрезПоследних.Номенклатура.Ссылка,
   ЦеныНоменклатурыСрезПоследних.ВидЦены,
   ЦеныНоменклатурыСрезПоследних.Цена,
   ЦеныНоменклатурыСрезПоследних.Валюта

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
   СвободныеОстаткиОстатки.Номенклатура,
   СвободныеОстаткиОстатки.Склад,
   СвободныеОстаткиОстатки.ВНаличииОстаток,
   СвободныеОстаткиОстатки.ВРезервеОстаток
ИЗ
   РегистрНакопления.СвободныеОстатки.Остатки КАК СвободныеОстаткиОстатки

СГРУППИРОВАТЬ ПО
   СвободныеОстаткиОстатки.Номенклатура,
   СвободныеОстаткиОстатки.Склад,
   СвободныеОстаткиОстатки.ВНаличииОстаток,
   СвободныеОстаткиОстатки.ВРезервеОстаток
ИТОГИ ПО
   Номенклатура

очень долго выполняется
6 shuhard
 
26.05.12
16:31
(5) СГРУППИРОВАТЬ ПО
   СвободныеОстаткиОстатки.Номенклатура,
   СвободныеОстаткиОстатки.Склад,
   СвободныеОстаткиОстатки.ВНаличииОстаток,
   СвободныеОстаткиОстатки.ВРезервеОстаток

не делай так
убери группировку
7 Нуф-Нуф
 
26.05.12
16:38
РегистрСведений.ЦеныНоменклатуры.СрезПоследних
РегистрНакопления.СвободныеОстатки.Остатки
получение этих двух таблиц лучше вынести в отдельные пакетные запросы.
сначала выполнить их, а уж потом их результат присоединять к запросу по номенклатуре.
учась писать запросы, сразу учись писать их оптимально
8 fly7
 
26.05.12
17:35
(7) как определить когда надо писать вложенные запросы, а когда пакет запросов?
9 ILM
 
гуру
26.05.12
17:49
(8) Надо всегда делать пакет запросов, когда много раз нужно использовать промежуточные результаты или когда сложный алгоритм.
10 Нуф-Нуф
 
26.05.12
19:26
(8) вложенные запросы лучше вообще не использовать в принципе
11 Klesk
 
26.05.12
22:44
ВЫБРАТЬ
   ЦеныНоменклатурыСрезПоследних.Номенклатура.Ссылка КАК НоменклатураЦены,
   ЦеныНоменклатурыСрезПоследних.ВидЦены.Ссылка КАК ВидЦены,
   ЦеныНоменклатурыСрезПоследних.Цена
ПОМЕСТИТЬ Цены
ИЗ
   РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   СвободныеОстаткиОстатки.Номенклатура.Ссылка КАК НоменклатураОстатки,
   СвободныеОстаткиОстатки.Склад.Ссылка КАК Склад,
   СвободныеОстаткиОстатки.ВНаличииОстаток КАК Остаток,
   СвободныеОстаткиОстатки.ВРезервеОстаток КАК Резерв
ПОМЕСТИТЬ Остатки
ИЗ
   РегистрНакопления.СвободныеОстатки.Остатки КАК СвободныеОстаткиОстатки
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ ПЕРВЫЕ 1000
   Номенклатура.Ссылка КАК Номенклатура,
   Номенклатура.Артикул,
   Номенклатура.Вес,
   Номенклатура.ЕдиницаИзмерения.Ссылка КАК ЕдиницаИзмерения,
   Номенклатура.НеВыгружатьПоНаличию,
   Остатки.Склад КАК Склад,
   Остатки.Остаток,
   Остатки.Резерв,
   Цены.НоменклатураЦены,
   Цены.ВидЦены КАК ВидЦены,
   Цены.Цена
ИЗ
   Справочник.Номенклатура КАК Номенклатура
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ Цены КАК Цены
       ПО Номенклатура.Ссылка = Цены.НоменклатураЦены
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ Остатки КАК Остатки
       ПО Номенклатура.Ссылка = Остатки.НоменклатураОстатки
ИТОГИ ПО
   Номенклатура

Переделал, гораздо быстрее, но все равно не понимаю, как мне обойти сначала номенклатуру, потом склады, а потом цены, по аналогии с 7.7. - группировка

Тут на втором уровне повторяются записи от цены или складов, в зависимости каких записей больше. Или делать три несвязанных запроса? Озвучу задачу - выгрузка в xml
12 hhhh
 
27.05.12
00:03
как-то так

ИТОГИ ПО
   Номенклатура,
   Склад,
   Цена
13 Klesk
 
27.05.12
00:41
(12) а как обходить потом эти группировки?
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой