Имя: Пароль:
1C
1С v8
Подскажите с соединением таблиц
,
0 Double_Medved
 
21.02.13
12:50
Подскажите пожалуйста, что-то какая-то ерунда, хотя задача простая.. Нужно сделать отчет, в котором будет 5 колонок: 1)Номенклатура 2)ее количество на складе 3) ее цена в виде цен "закупочная", 4)ее цена в виде цен "розничная" 5)процент - отношение этих цен. То есть нужно выводить цены только той номенклатуры, которая есть на складе. Может быть такое что цен нет, или есть только одна цена. делаю в СКД, пытаюсь сделать одним запросом. Таблицы все нашел. 1-я количество остатков, 2-я цена закупочная, 3-я цена розничная. Не пойму: Как их соединять? если делаю 1я левое соединение 2я, 1я левое соединение 3я, то какая-то ерунда, попадают цены вообще всей номенклатуры... То есть 1-я меньше 2-й и 3-й, и в 1-ю нужно добавить данные из 2-й и 3-й, подскажите пожалуйста как соединять.
1 GLazNik
 
21.02.13
12:54
(0) запрос покажи
2 GANR
 
21.02.13
12:55
Если (нужны нулевые остатки) тогда
 присоедини к Справочник.Номенклатура слева остальные таблицы
Иначе
 к РегистрНакопления.товарыНаСкладах
КонецЕсли;

вопросы?
3 GANR
 
21.02.13
13:00
Если (нужны нулевые остатки) тогда
 Справочник Номенклатура ЛЕВОЕ СОЕДИНЕНИЕ Остатки, Цена1, Цена2
Иначе
 Остатки ЛЕВОЕ СОЕДИНЕНИЕ Цена1, Цена2
КонецЕсли;
4 Галахад
 
гуру
21.02.13
13:02
(0) Запрос-то покажи.
5 exwill
 
21.02.13
13:03
Условие соединения у тебя какое?
6 samozvanec
 
21.02.13
13:03
гюльчатай, покажи запросик
7 Double_Medved
 
21.02.13
13:28
ВЫБРАТЬ
   &Дата1 КАК Дата,
   ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура1,
   ТоварыНаСкладахОстатки.Склад,
   ТоварыНаСкладахОстатки.ВНаличииКонечныйОстаток,
   ЦеныНоменклатурыСрезПоследнихЗакупочная.ВидЦены КАК ВидЦены,
   ЦеныНоменклатурыСрезПоследнихЗакупочная.Номенклатура КАК Номенклатура,
   ЦеныНоменклатурыСрезПоследнихЗакупочная.Цена КАК Цена,
   ЦеныНоменклатурыСрезПоследнихРозничная.ВидЦены КАК ВидЦены1,
   ЦеныНоменклатурыСрезПоследнихРозничная.Номенклатура КАК Номенклатура2,
   ЦеныНоменклатурыСрезПоследнихРозничная.Цена КАК Цена1,
   ВЫБОР
       КОГДА (ВЫРАЗИТЬ(ЦеныНоменклатурыСрезПоследнихЗакупочная.Цена КАК ЧИСЛО(15, 2))) <> 0
           ТОГДА ВЫРАЗИТЬ((ЦеныНоменклатурыСрезПоследнихРозничная.Цена - ЦеныНоменклатурыСрезПоследнихЗакупочная.Цена) / ЦеныНоменклатурыСрезПоследнихЗакупочная.Цена * 100 КАК ЧИСЛО(15, 2))
       ИНАЧЕ 0
   КОНЕЦ КАК Разница,
   ВЫРАЗИТЬ(ЦеныНоменклатурыСрезПоследнихРозничная.Цена * ТоварыНаСкладахОстатки.ВНаличииКонечныйОстаток КАК ЧИСЛО(15, 2)) КАК СуммаОстатка
ИЗ
   РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты({(&Дата)}, , , , ) КАК ТоварыНаСкладахОстатки
       ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних({(&Дата)}, ) КАК ЦеныНоменклатурыСрезПоследнихЗакупочная
       ПО ТоварыНаСкладахОстатки.Номенклатура = ЦеныНоменклатурыСрезПоследнихЗакупочная.Номенклатура
       ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних({(&Дата)}, ) КАК ЦеныНоменклатурыСрезПоследнихРозничная
       ПО ТоварыНаСкладахОстатки.Номенклатура = ЦеныНоменклатурыСрезПоследнихРозничная.Номенклатура
ГДЕ
   ТоварыНаСкладахОстатки.Склад = &Склад
   И ЦеныНоменклатурыСрезПоследнихЗакупочная.ВидЦены = &ВидЦены1
   И ЦеныНоменклатурыСрезПоследнихРозничная.ВидЦены = &ВидЦены2
8 MaxisUssr
 
21.02.13
13:31
(0) Если отталкиваемся от номенклатуры, то

1. К таблице номенклатуры присоединяешь таблицу склада
2. К таблице номенклатуры присоединяешь таблицу цен первого
типа
3. К таблице номенклатуры присоединяешь таблицу цен второго типа

Если отталкиваемся от того, что есть на складе, то

1. К таблице склада присоединяешь таблицу номенклатуры
2. К таблице склада присоединяешь таблицу цен первого
типа
3. К таблице склада присоединяешь таблицу цен второго типа
9 Double_Medved
 
21.02.13
13:35
(8)я отталкиваюсь от номенклатуры... Как "К таблице номенклатуры присоединяешь таблицу цен первого
типа " - это ЛЕВОЕ или ПРАВОЕ СОЕДИНЕНИЕ или ОбЪЕДИНЕНИЕ или что?
10 Галахад
 
гуру
21.02.13
13:36
(7) Условие склад сюды:
РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты({(&Дата)}, , , , )
Условие
ЦеныНоменклатурыСрезПоследнихЗакупочная.ВидЦены = &ВидЦены1
сюды:
ПО ТоварыНаСкладахОстатки.Номенклатура = ЦеныНоменклатурыСрезПоследнихЗакупочная.Номенклатура
11 GANR
 
21.02.13
13:39
(7)(9)

ГДЕ
ЦеныНоменклатурыСрезПоследнихЗакупочная.ВидЦены = &ВидЦены1

рубит остатки, по которым нет цены
12 MaxisUssr
 
21.02.13
13:41
(9)
ВЫБРАТЬ ... ИЗ ТаблицаНоменклатуры ЛЕВОЕ СОЕДИНЕНИЕ ТаблицаЦен
13 Рыцарь
 
21.02.13
13:42
(10) верно говорит
14 GANR
 
21.02.13
13:46
(10) Цены лучше вообще до соединения во вложенном запросе нафильтровать, а не в условии соединения фильтр ставить - тормоза могут быть.