Имя: Пароль:
1C
 
выборка первых заказов
,
0 falselight
 
06.06.18
14:12
Здравствуйте! Можете ли подсказать по запросу?
В запрос передается таблица значений (ИД, ТИП, СамаПочта, СамаПочта2)
ИД и ТИП специфические данные.
Список значений с email1 и список значений с email2.

Нужно выбрать самые ранние заказы.

    Запрос.Текст =
        "ВЫБРАТЬ
        |    майл.СамаПочта  КАК СамаПочта,
        |    майл.СамаПочта2 КАК СамаПочта2,        
        |    майл.Тип        КАК Тип,
        |    майл.ИД         КАК ИД
        |ПОМЕСТИТЬ Почта
        |ИЗ
        |    &майл КАК майл
        |;
        |
        |////////////////////////////////////////////////////////////////////////////////
        |ВЫБРАТЬ
        |    Почта.СамаПочта                       КАК СамаПочта,
        |    Почта.СамаПочта2                      КАК СамаПочта2,
        |    Почта.Тип                             КАК Тип,
        |    Почта.ИД                              КАК ИД,
        |    ЕСТЬNULL(ВложенныйЗапрос.Номер, """") КАК Номер,
        |    ЕСТЬNULL(ВложенныйЗапрос.Дата, """")  КАК Дата
        |ИЗ
        |    Почта КАК Почта
        |        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
        |            Мейл.Представление           КАК Мейл,
        |            МАКСИМУМ(ЗаказКлиента.Номер) КАК Номер,
        |            МИНИМУМ(ЗаказКлиента.Дата)   КАК Дата
        |        ИЗ
        |            Документ.ЗаказКлиента КАК ЗаказКлиента
        |                ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
        |                    ПартнерыКонтактнаяИнформация.Ссылка        КАК Ссылка,
        |                    ПартнерыКонтактнаяИнформация.Представление КАК Представление
        |                ИЗ
        |                    Справочник.Партнеры.КонтактнаяИнформация КАК ПартнерыКонтактнаяИнформация
        |                ГДЕ
        |                    ПартнерыКонтактнаяИнформация.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.EmailПартнера)) КАК Мейл
        |                ПО ЗаказКлиента.Партнер = Мейл.Ссылка
        |        ГДЕ
        |            ЗаказКлиента.Проведен
        |            И Мейл.Представление В(&Представление)
        |        
        |        СГРУППИРОВАТЬ ПО
        |            Мейл.Представление) КАК ВложенныйЗапрос
        |        ПО Почта.СамаПочта = ВложенныйЗапрос.Мейл
        |ГДЕ
        |    НЕ ВложенныйЗапрос.Номер ЕСТЬ NULL
        |
        |УПОРЯДОЧИТЬ ПО
        |    СамаПочта";


    Запрос.УстановитьПараметр("майл",          Параметры.ТЗВыгрузки);
    Запрос.УстановитьПараметр("Представление", СписокЗаказов);
    Запрос.УстановитьПараметр("Представление2", СписокЗаказов2);
    Запрос.УстановитьПараметр("Дата",          ТекущаяДата());
1 falselight
 
06.06.18
14:14
То есть в запрос нужно включить добавленный СамаПочта2 и Представление2, по двум заказам выбрать самый ранний, если есть 2 емайла.
2 falselight
 
06.06.18
14:19
(0+) Этот запрос выбирает по параметрам таблице значений где есть email1 и списку значений где также есть email1, ранние заказы партнеров.

Сейчас в таблицу значений добавился email2 и так же есть список значений с email2.

Нужно отбирать по этим двум емайлам ранний заказ, из двух выбранных, или же один как и было если емайл 2 не заполнен.
3 DrShad
 
06.06.18
14:22
продолжайте наблюдения и держите нас в курсе
4 Мандалай
 
06.06.18
14:34
Вопрос то в чем?
5 Гипервизор
 
06.06.18
14:36
Я человек простой. Вижу пост falselight - достаю попкорн.
6 aleks_default
 
06.06.18
14:46
(5)грешно смеяться над больными людьми
7 Малыш Джон
 
06.06.18
14:47
(6) попкорн можно доставать и с абсолютно серьезным лицом
8 falselight
 
06.06.18
15:21
(4) В запрос передается таблица.
Она выбрана в пакете 1.
Пакет 2 это ранний заказ по списку email (первый электронный
адрес).
Пакет 3 это аналог пакета 2 только по списку email2 (второй
электронный адрес).
В итоговом четвертом пакете запроса должен быть электронный
адрес и номер заказа, который с более ранней датой из
заказов выбранных в пакете 2 и пакете 3. Учитывая что
они аналогичны, различаются только списком переданных
электронных адресов.
Так же следует учитывать что одного из электронных адресов
может не быть в таблице пакета 1 (там есть email и email2).
Тогда выбирается тот который выбран в пакете 2 или 3.

Такая какая то постановка. Мне дали сказали делай.
Не лезь с вопросами, я вот и думаю над задачей.
Решил спросить.
9 DrShad
 
06.06.18
15:26
(8) человек, который в таком виде ставит задачу - болен, причем безнадежно
10 falselight
 
06.06.18
15:27
(0) P.S. В (0)
В пакете 1 выбираются поля таблицы значений переданной в
качестве параметра. Там есть 1 email.
В Запросе пакета 2 по смыслу запроса (0) выбирается номер
раннего заказа по списку электронных адресов партнера.

Сейчас в таблицу выбираемую в пакете 1 добавили email2.

И нужно теперь выбирать тещё и более ранний заказ из этих
2х email. Список email 1 передается в пакет запроса 2.
Список email2 передается в пакет запроса 3.
В запросе 4 должен быть ранний заказ из этих 2х email.
Учитывая то что одного из email может не быть, там "".

Все что я понимаю. Надо сделать. Может как то иначе.

Запрос который нужно модифицировать в (0).
11 falselight
 
06.06.18
15:29
(9) Я ему написал вопрос. И постановку, что какие варианты то? Мне нужна обратная информация.

Тот спросил, я не знаю как делать?

Ну вот я дибил видимо. Не знаю. Знал бы сделал.
12 Вафель
 
06.06.18
15:29
а как изначальная задача стоит?
13 DrShad
 
06.06.18
15:32
(11) ты получил признание на работе - радуйся
14 DrShad
 
06.06.18
15:33
+(13) вот честно, несколько раз перечитывал сабж - нифига не понял о том что конкретно содержится в таблицах

ну а самый ранний это минимум по дате, если не учитывать момент времени, в группировке по электронке
15 falselight
 
06.06.18
15:34
(12) С интернета приходит XML. XDTO.
Формируется таблица где есть адрес электронной почты
(email).
И список с этими email.

Нужно выбрать ранние заказы по этим email.

То есть по email выбирается партнер и его заказ.
И отслеживается все связями и условиями.

Сейчас добавили email2. Нужно выбирать самые ранние заказы
по этим партнерам, найденным по email и параллельно по
email2. И так же выбрать самый ранний заказ ещё из них.
Или один, если второго email2 нет.

Не пойму как это можно представить в запросе.
16 Вафель
 
06.06.18
15:34
те нужно на каждый емайл найти самый первый заказ?
делай в цикле, так проще гораздо будет
17 falselight
 
06.06.18
15:36
(14) В таблицах переданных в параметрах????

вот первая таблица

        |    майл.СамаПочта  КАК СамаПочта,
        |    майл.СамаПочта2 КАК СамаПочта2,        
        |    майл.Тип        КАК Тип,
        |    майл.ИД         КАК ИД


и ещё в запрос передаются 2 списка, список с email и
email2.
18 falselight
 
06.06.18
15:37
(14) Ну там и идет по дате, вроде

  |            МИНИМУМ(ЗаказКлиента.Дата)   КАК Дата
19 falselight
 
06.06.18
15:38
(16) как в цикле????
Сказали править запрос, и там от силы 30 минут на все
максимум.
20 DrShad
 
06.06.18
15:49
а где заказ?
21 falselight
 
06.06.18
15:56
(16) Нельзя сказали в цикле, цикл это зло.
Ну вот я и не знаю как это уложить в запросе.
Да не дружу я особо с логическим построением запроса.
Даже курс по нему не просмотрел.
22 falselight
 
06.06.18
15:56
(20) вот он, -

  ИЗ
        |            Документ.ЗаказКлиента КАК ЗаказКлиента
        |                ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
        |                    ПартнерыКонтактнаяИнформация.Ссылка        КАК Ссылка,
        |                    ПартнерыКонтактнаяИнформация.Представление КАК Представление
23 Ёпрст
 
06.06.18
16:02
(0)


Выбрать мейл,ссылка из ТабличкаДокументов Где
((дата,мейл) в ( Выбрать максимум(дата),мейл из ТабличкаДокументов Сгруппировать По мейл)
24 Ёпрст
 
06.06.18
16:04
ну, там на Минимум заменишь, если нужны первые, а не последние заказы, занимайся
25 falselight
 
06.06.18
16:44
(24) Не подскажете где примеров таких запросов можно
посмотреть что бы научиться. И прояснить в голове, как
делать то что сейчас вот не понятно?
26 Ёпрст
 
06.06.18
16:55
(25) любую вминяемую книжку по t-sql
27 falselight
 
06.06.18
17:07
(26) Мне интересно где выбрать в выбрать
эти приёмы бы заучить.

Но а по запросам 1с ести такие ресурсы?
Зачвем T-SQL То?  Пишется же все на 1с.
Вот на 1с и нужно смотреть.
28 Ёпрст
 
06.06.18
17:29
(27) затем, что 1с использует кастрированный t-sql синтаксис в запросах.
29 Гипервизор
 
06.06.18
18:20
(28) Причем злобно кастрированный ((
30 hhhh
 
06.06.18
18:42
(27) зачем спрашивал тогда? Если сам знаешь где смотреть?