Имя: Пароль:
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
СКД и два набора данных уже предлагали? Второй набор данных параметром даты среза принимает дату из каждой записи первого набора данных
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn