Имя: Пароль:
1C
1С v8
Левое соединение (помогите с запросом)
0 seraf
 
23.04.20
10:34
Привет, мне нужно в левом соединении выбирать первую запись.
Написал такое

ВЫБРАТЬ
    Договора.Ссылка КАК ДоговорСсылка,
    Заказы.ДоговорСсылка КАК ДоговорРС
ИЗ
    Справочник.ДоговораСКлиентами КАК Договора
        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ ПЕРВЫЕ 1
            ЗаказыНовыеСрезПоследних.Договор КАК ДоговорСсылка
        ИЗ
            РегистрСведений.ЗаказыНовые.СрезПоследних КАК ЗаказыНовыеСрезПоследних
                ГДЕ ЗаказыНовыеСрезПоследних.Договор = &Ссылка) КАК Заказы
        ПО (Договора.Ссылка = Заказы.ДоговорСсылка)
ГДЕ
    Договора.Ссылка = &Ссылка

это для одной строки, работает, а если убрать условия ГДЕ ЗаказыНовыеСрезПоследних.Договор = &Ссылка и Договора.Ссылка = &Ссылка то не выведет ничего
как правильно соединиться таким образом?
1 seraf
 
23.04.20
10:37
Вернее выведет Первые 1 для одной случайной строки, а для всех?
2 fisher
 
23.04.20
10:55
Попробуй
ГДЕ ЗаказыНовыеСрезПоследних.Договор = &Ссылка
заменить на
ГДЕ ЗаказыНовыеСрезПоследних.Договор = Договора.Ссылка
3 fisher
 
23.04.20
10:55
Коррелирующие подзапросы в 1С можно, но рабочий вариант навскидку могу не сообразить.
4 seraf
 
23.04.20
10:56
(2) я пробовал, но пишет поле не найдено Договор.Ссылка
5 seraf
 
23.04.20
10:58
ну тут вопрос в общем как соединиться с РС, в котором нужна только первая запись из набора
загуглил такое соединение, ток пока не ясно
6 fisher
 
23.04.20
11:01
(5) Есть стандартный путь в два этапа. Загугли "срез последних на каждую дату". Принцип поймешь.
Но можно и коррелирующим подзапросом. Это изящнее и можно выбирать не только одну последнюю, а произвольное количество последних.
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший