Имя: Пароль:
1C
 
Противоречивая связь в запросе
0 vse_serjezno
 
21.03.16
11:43
День добрый

Пишу элементарный запрос получения данных по приходе номенклатуры за период с выборкой цен из периодического рег.сведений на день прихода.
Мне нужна связь по товару и по дате его прихода. Хотелось бы написать так(беру и сам документ и его ТЧ, чтобы не обращаться через 2 точки - ПоступлениеТоваровСуммы.Ссылка.Дата):

ВЫБРАТЬ
    ПоступлениеТоваровСуммы.Номенклатура,
    Цены.Цена
ИЗ
    Документ.ПоступлениеТоваров.Суммы КАК ПоступлениеТоваровСуммы
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваров КАК ПоступлениеТоваров
        ПО (ПоступлениеТоваровСуммы.Ссылка = ПоступлениеТоваров.Ссылка
                И ПоступлениеТоваров.Дата >= &ПериодНачало
                И ПоступлениеТоваров.Дата <= &ПериодОкончание)

        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.Цены КАК Цены
        ПО ПоступлениеТоваровСуммы.Номенклатура = Цены.Товар

                ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.Цены КАК Цены
        ПО ПоступлениеТоваров.Дата = Цены.Период

Но, так возникает противоречивая связь. Как решить этот момент самым оптимальным способом?
1 vse_serjezno
 
21.03.16
11:49
Можно конечно вложенным запросом собрать таблицу с товарами по документам за период и датой, и уже этот запрос соединять с регистром.
Но настолько это оптимально, если учесть, что можно просто из ссылки получить дату?..
2 Aceforg
 
21.03.16
11:52
3 vse_serjezno
 
21.03.16
11:52
Ну же, товарищи :)
4 vse_serjezno
 
21.03.16
11:53
(2) Спасибо, сейчас почитаю.
5 Господин ПЖ
 
21.03.16
11:53
написано какое-то уг, про какие "оптимумы" вообще речь...
6 vse_serjezno
 
21.03.16
11:58
(2) Не совсем то, что мне нужно.
Я выбираю документы в принципе за период и на каждую дату документа нужно соответствующее значение цены, поэтому виртуальная таблица не подойдет.
Я же спрашиваю про Дату в документе.
7 mehfk
 
21.03.16
12:01
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.Цены КАК Цены
        ПО ПоступлениеТоваровСуммы.Номенклатура = Цены.Товар

                ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.Цены КАК Цены

Алиас у одной из таблиц поменяй
8 vse_serjezno
 
21.03.16
12:06
(7) не, не помогает, не в синонимах дело.
9 mehfk
 
21.03.16
12:10
(8) Зачем дважды соединяешься с регистром сведений?
10 vse_serjezno
 
21.03.16
12:12
(9) Я соединяю документ и его ТЧ, в это как раз мой вопрос.
Я это делаю, чтобы не обращаться через точку из ТЧ к реквизиту документа Дата.
11 mehfk
 
21.03.16
12:13
(10) И что?
12 mehfk
 
21.03.16
12:14
Кто мешает сделать так?
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.Цены КАК Цены
        ПО ПоступлениеТоваровСуммы.Номенклатура = Цены.Товар
И
ПоступлениеТоваров.Дата = Цены.Период
13 vse_serjezno
 
21.03.16
12:14
(9) Из ТЧ я соединяюсь по товару, а из документа по Дате.

Запрос в консоли не откроется, я его текст изменила, чтобы показать, какую связь я хочу сделать. В консоли он как  раз выдает ошибку с противоречивой связью.
14 Wern
 
21.03.16
12:14
(10) Почему бы не обратится через две точки? Тут это не чем не грозит.
15 RomanYS
 
21.03.16
12:17
(0) В данном случае избавление от "двух точек" явно не оправдано:
-профита никакого (неявное соединение будет таким же как твое явное),
-а ты уже запутался
16 vse_serjezno
 
21.03.16
12:17
(12) Мешает то, что есть еще связь между ТЧ и самим документом. И все в сумме дает ошибку.
17 vse_serjezno
 
21.03.16
12:18
(15) Спасибо, обращусь через 2 точки и не буду мучаться.)
18 mehfk
 
21.03.16
12:19
(16) Бред.
19 vse_serjezno
 
21.03.16
12:24
(18) Почему? Попробуй.

Добавь в этот запрос связь по дате, как ты предлагаешь:

ВЫБРАТЬ
    ТЧПоступление.Номенклатура,
    Цены.Цена
ИЗ
    РегистрСведений.Цены КАК ЦеныЛеМуррр
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваров.Суммы КАК ТЧПоступление
            ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваров КАК ПоступлениеТоваров
            ПО ТЧПоступление.Ссылка = ПоступлениеТоваров.Ссылка
        ПО Цены.Товар = ТЧПоступление.Номенклатура
20 mehfk
 
21.03.16
12:44
Можно полный текст запроса, без "добавь" и т.д? Дописать руками то что хотите и все.
21 mehfk
 
21.03.16
12:46
И как-то внезапно одно из внутренних соединений превратилось в левое.
22 Cyberhawk
 
21.03.16
12:46
СКД и два набора данных уже предлагали? Второй набор данных параметром даты среза принимает дату из каждой записи первого набора данных
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой