Имя: Пароль:
1C
1С v8
УТ11 Получить последний заказ по партнеру
,
0 ildary
 
16.11.17
15:38
Уважаемые специалисты, скажите пожалуйста, что надо поправить в этом запросе, чтобы он вернул и партнера и последний заказ:

ВЫБРАТЬ
    Партнеры.Ссылка КАК Ссылка,
    ЗаказКлиента.Ссылка КАК Ссылка1
ИЗ
    Справочник.Партнеры КАК Партнеры
        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ ПЕРВЫЕ 1
            ЗаказКлиента.Ссылка КАК Ссылка,
            ЗаказКлиента.Партнер КАК Партнер
        ИЗ
            Документ.ЗаказКлиента КАК ЗаказКлиента
        
        УПОРЯДОЧИТЬ ПО
            ЗаказКлиента.Дата УБЫВ) КАК ЗаказКлиента
        ПО (Партнеры.Ссылка = ЗаказКлиента.Партнер)
ГДЕ
    Партнеры.Ссылка = &Ссылка
1 DrShad
 
16.11.17
15:40
все изменить
2 DrShad
 
16.11.17
15:41
сделай запрос к регистру заказов
3 ildary
 
16.11.17
15:42
(2) Извините, но мне нужен любой, даже непроведенный и помеченный на удаление заказ. Поэтому регистр вряд ли поможет.
4 Renium
 
16.11.17
15:51
МАКСИМУМ (... .Ссылка) - не то? Ну, или .Дата
5 ildary
 
16.11.17
15:59
(4) скажите пожалуйста, речь идет о вложенном запросе? Я добавил туда - запрос стал вылетать с ошибкой SDBL: Запрос содержит UNION или DISTINCT, поле .....DATE_TIME отсутствует в разделе SELECT
6 lodger
 
16.11.17
16:02
Справочник.Партнеры И СОЕДИНЕНИЕ не нужны.

сам заказ (его ссылка)
Дата заказа
и партнерссылка
уже есть в таблице документа заказ.

ВЫБРАТЬ ПЕРВЫЕ 1
            ЗаказКлиента.Ссылка КАК Ссылка,
            ЗаказКлиента.Партнер КАК Партнер
        ИЗ
            Документ.ЗаказКлиента КАК ЗаказКлиента
        УПОРЯДОЧИТЬ ПО
            ЗаказКлиента.Дата УБЫВ
7 DexterMorgan
 
16.11.17
16:04
(6) Может тс надо выводить всех партнеров, которые и делали заказ
8 DexterMorgan
 
16.11.17
16:04
(7) + НЕ делали заказов
9 DexterMorgan
 
16.11.17
16:05
епт 10 лет, че ни разу похожей задчи не было?)
10 DexterMorgan
 
16.11.17
16:06
(6) и вообще в твоем варианте только 1 запись будет
11 DexterMorgan
 
16.11.17
16:09
ВЫБРАТЬ
    МАКСИМУМ(ЗаказКлиента.Дата) КАК Дата,
    ЗаказКлиента.Партнер
ПОМЕСТИТЬ вт
ИЗ
    Документ.ЗаказКлиента КАК ЗаказКлиента

СГРУППИРОВАТЬ ПО
    ЗаказКлиента.Партнер
;

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

СГРУППИРОВАТЬ ПО
    Партнеры.Ссылка
12 lodger
 
16.11.17
16:10
(10) в (0) дословно прочитал "чтобы он вернул и партнера и последний заказ:"
ну да, про &Ссылка то я забыл.
в (6) дописать ГДЕ ЗаказКлиента.Партнер = &Ссылка
13 DexterMorgan
 
16.11.17
16:12
(12) а сорри тебе по одному партнеру надо, тогда это вообще легко
14 DexterMorgan
 
16.11.17
16:13
(12) в (11) для всех партнеров вывел)
15 ildary
 
16.11.17
16:14
(8) мне нужны все партнеры, которых я отобрал ранее и поместил в некую ВТ (временную таблицу) и (если есть) - самый последний заказ клиента.

Для простоты - я не стал описывать получение всей ВТ, поэтому по быстрому написал запрос к справочнику Партнеры  с отбором по ссылке.

Мне нельзя обращаться в первую очередь к документу Заказы или регистру заказы - потому что первичный запрос - именно по партнерам (я пишу искалку проблемных партнеров - например партнеров, к которым не привязаны юр.лица).
16 DexterMorgan
 
16.11.17
16:15
(15) ну тогда замени в (11) спр Партнеры на твою вт
17 ildary
 
16.11.17
16:15
Вот исходный запрос, к которому хочется добавить одну колонку - последний заказ (если есть):

ВЫБРАТЬ РАЗЛИЧНЫЕ
    Контрагенты.Партнер КАК Партнер
ПОМЕСТИТЬ ВТ
ИЗ
    Справочник.Контрагенты КАК Контрагенты
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    Партнеры.Ссылка КАК БезКонтр_Ссылка,
    Партнеры.Код КАК БезКонтр_Код
ИЗ
    Справочник.Партнеры КАК Партнеры
        ЛЕВОЕ СОЕДИНЕНИЕ ВТ КАК ВТ
        ПО (Партнеры.Ссылка = ВТ.Партнер)
ГДЕ
    ВТ.Партнер ЕСТЬ NULL
18 DexterMorgan
 
16.11.17
16:17
(17) ---- (11) + (16)
19 ildary
 
16.11.17
16:22
(16) спасибо, получилось!