Вход | Регистрация


1С:Предприятие :: 1С:Предприятие 8 общая

Запросы, Запросики

Запросы, Запросики
Я
   Mad88
 
24.10.17 - 13:49
Добрый день господа, есть такой запрос

ВЫБРАТЬ
    АвтомобилиСрезПоследних.Автомобиль КАК Автомобиль,
    АвтомобилиСрезПоследних.ВидЗначения,
    АвтомобилиСрезПоследних.Автомобиль.Модель КАК Модель,
    АвтомобилиСрезПоследних.Автомобиль.Марка КАК Марка,
    ВЫБОР
        КОГДА АвтомобилиСрезПоследних.ВидЗначения = ЗНАЧЕНИЕ(Перечисление.ДополнительнаяИнформацияАвтомобилей.ГосНомер)
            ТОГДА АвтомобилиСрезПоследних.Значение
    КОНЕЦ КАК ГосНомер,
    ВЫБОР
        КОГДА АвтомобилиСрезПоследних.ВидЗначения = ЗНАЧЕНИЕ(Перечисление.ДополнительнаяИнформацияАвтомобилей.Хозяин)
            ТОГДА АвтомобилиСрезПоследних.Значение
    КОНЕЦ КАК Хозяин,
    АвтомобилиСрезПоследних.Значение.ФормаСобственности КАК ХозяинВидКонтрагента,
    АвтомобилиСрезПоследних.Значение.ОплатаЗачетами КАК ХозяинОплатаЗачетами,
    АвтомобилиСрезПоследних.Значение.ОсновнойТелефон КАК ОсновнойТелефон
ИЗ
    РегистрСведений.Автомобили.СрезПоследних(
            &Период,
            ВидЗначения = ЗНАЧЕНИЕ(Перечисление.ДополнительнаяИнформацияАвтомобилей.Хозяин)
                ИЛИ ВидЗначения = ЗНАЧЕНИЕ(Перечисление.ДополнительнаяИнформацияАвтомобилей.ГосНомер)) КАК АвтомобилиСрезПоследних
ГДЕ
    АвтомобилиСрезПоследних.Автомобиль = &Автомобиль


В итоге запрос выдает 2 результата, что в принципе логично
https://yadi.sk/i/v9aMlazY3P3eC5

То есть в первой строчке у нас выбирается Хозяин, во второй пробег, можно ли как то преобразовать запрос так что бы эти две записи обединялись в одну.
 
 
   Dmitry1c
 
1 - 24.10.17 - 13:50
Хозяин
   catena
 
2 - 24.10.17 - 13:51
Зависит от того, что вы вкладываете в "обединялись в одну"
   Mad88
 
3 - 24.10.17 - 13:52
(2) Что бы пробег встал в первую сточку, а не выбирался отдельным результатом
   DrShad
 
4 - 24.10.17 - 13:52
ОБЪЕДИНИТЬ
   Mad88
 
5 - 24.10.17 - 13:52
(1) с этим к Рарусу =)
   DrShad
 
6 - 24.10.17 - 13:52
(3) это не отдельный результат, а две строки выборки по одному результату
   FIXXXL
 
7 - 24.10.17 - 13:52
(0)
разнеси на два запроса и (4)
   Mad88
 
8 - 24.10.17 - 13:53
(4) Не, объединять нельзя, регистр большой, формироваться будет очень долго, неприемлемо долго...
   DrShad
 
9 - 24.10.17 - 13:53
(8) не дольше чем в твоем варианте
   e053nk
 
10 - 24.10.17 - 13:54
Сначала выбрать авто, потом левый соедиением присоедить что нужно-так не пойдет?
 
 Рекламное место пустует
   Buster007
 
11 - 24.10.17 - 13:55
берешь автомобиль и присоединяешь к нему твой регистр с каждым из свойств
   Buster007
 
12 - 24.10.17 - 13:56
+(11) сколько свойств столько соединений
   FIXXXL
 
13 - 24.10.17 - 13:58
(8) результат сунь в временную таблицу, из нее выбирай два раза и объединяй
   novichok79
 
14 - 24.10.17 - 14:01
1) автомобиль разве не измерение? зачем ты его в где пихаешь?
2) зачем 2 раза или если можно В
3) пихай результат во временную таблицу а потом цепляй левым соединением к автомобилю, это если надо обязательно 1 строку получить со свойствами авто.
   Йохохо
 
15 - 24.10.17 - 14:04
а чего просто максимум не поставить?
   Mad88
 
16 - 24.10.17 - 14:07
(9) В рабочем варианте отбора по автомобилю быть не должно, если сделать объединение, то отрабатывает очень долго
   Mad88
 
17 - 24.10.17 - 14:10
(14) Здесь автомобиль в где, только для примера, вообще автомобиля в условии не будет
   Михаил Козлов
 
18 - 24.10.17 - 14:14
Чем (15) не подходит с группировкой по автомобилю, убрав из полей ВидЗначения?
   Йохохо
 
19 - 24.10.17 - 14:16
+ навесив выборы на последние поля, которые вероятно не актуальны для госномер
   Mad88
 
20 - 24.10.17 - 14:20
(18) дак Поля Номер и Хозяин то разные будут, как он их сгруппирует?
   Михаил Козлов
 
21 - 24.10.17 - 14:21
(2) МАКСИМУМ
   novichok79
 
22 - 24.10.17 - 14:35
ВЫБРАТЬ
    АвтомобилиСрезПоследних.Автомобиль КАК Автомобиль,
    АвтомобилиСрезПоследних.ВидЗначения КАК ВидЗначения,
    АвтомобилиСрезПоследних.Значение КАК Значение
Поместить ДанныеМоихТачек
ИЗ
    РегистрСведений.Автомобили.СрезПоследних(
            &Период,
            ВидЗначения = ЗНАЧЕНИЕ(Перечисление.ДополнительнаяИнформацияАвтомобилей.Хозяин)
                ИЛИ ВидЗначения = ЗНАЧЕНИЕ(Перечисление.ДополнительнаяИнформацияАвтомобилей.ГосНомер)) КАК АвтомобилиСрезПоследних;
ВЫБРАТЬ 
ДанныеМоихТачек.Автомобиль КАК Автомобиль
Поместить ВТТолькоБугатти
ИЗ ДанныеМоихТачек КАК ДанныеМоихТачек
СГруппировать ПО Бугатти.Автомобиль;

ВЫБРАТЬ
ТолькоБугатти.Автомобиль КАК Автомобиль,
МАКСИМУМ(ЕСТЬNULL(ДанныеМоихТачекХозяин.Значение, значение(Справочник.ФизическиеЛица.ПустаяСсылка))) КАК Хозяин,
МАКСИМУМ(ЕСТЬNULL(ДанныеМоихТачекГосНомер.Значение, "")) КАК ГосНомер
ИЗ 
ВТТолькоБугатти КАК ТолькоБугатти
ЛЕВОЕ СОЕДИНЕНИЕ ДанныеМоихТачек КАК ДанныеМоихТачекХозяин
ПО ТолькоБугатти.Автомобиль = ДанныеМоихТачекХозяин.Автомобиль
И ДанныеМоихТачекХозяин.ВидЗначения = ЗНАЧЕНИЕ(Перечисление.ДополнительнаяИнформацияАвтомобилей.Хозяин)
ЛЕВОЕ СОЕДИНЕНИЕ ДанныеМоихТачек КАК ДанныеМоихТачекГосНомер
ПО ТолькоБугатти.Автомобиль = ДанныеМоихТачекГосНомер.Автомобиль
И ДанныеМоихТачекГосНомер.ВидЗначения = ЗНАЧЕНИЕ(Перечисление.ДополнительнаяИнформацияАвтомобилей.Хозяин)

СГРУППИРОВАТЬ ПО
ТолькоБугатти.Автомобиль
   novichok79
 
23 - 24.10.17 - 14:36
(22) я бы делал примерно так
   novichok79
 
24 - 24.10.17 - 14:39
(23) ошибки не правлю, т. к. писал на коленке за 5 минут, чтобы автор понял идею.
   Mad88
 
25 - 24.10.17 - 14:52
(24) Это все очень круто, но если мы обращаемся к регистру больше одного раза, все виснет, суть в том что бы  сделать это при одном обращении к таблице(мне почему то кажется что это невозможно, но тут люди умнее меня вдруг что), в рабочем сценарии отбора по автомобилю не будет, записей много при таком варианте все будет висет, и отчет формироваться будет что-то около часа)
   novichok79
 
26 - 24.10.17 - 14:56
(24) где тут обращаются к регистру 2 раза? один раз и все.
   dezss
 
27 - 24.10.17 - 14:58
(25) блин, да ты свой результат запихни в вт, а потом соедини с самим собой и все...
   novichok79
 
28 - 24.10.17 - 14:59
(25) да уж, ты настолько ленив, что даже не хочешь прочитать и осмыслить запрос. ну или ты троллишь всех тут просто.
   Mad88
 
29 - 24.10.17 - 15:02
(27) и все, и запрос час формируется
   Mad88
 
30 - 24.10.17 - 15:03
(28) я подобный запрос, запихав в консоль и запустил, думает уже 50 минут
   novichok79
 
31 - 24.10.17 - 15:07
(30) покажи свой запрос для начала
   Mad88
 
32 - 24.10.17 - 15:14
(31) Так то должно работать, походу сервак тупит
ВЫБРАТЬ
    АвтомобилиСрезПоследних.Автомобиль КАК Автомобиль,
    АвтомобилиСрезПоследних.ВидЗначения КАК ВидЗначения,
    АвтомобилиСрезПоследних.Значение КАК Значение
ПОМЕСТИТЬ ДанныеМоихТачек
ИЗ
    РегистрСведений.Автомобили.СрезПоследних(
            &Период,
            ВидЗначения = ЗНАЧЕНИЕ(Перечисление.ДополнительнаяИнформацияАвтомобилей.Хозяин)
                ИЛИ ВидЗначения = ЗНАЧЕНИЕ(Перечисление.ДополнительнаяИнформацияАвтомобилей.ГосНомер)) КАК АвтомобилиСрезПоследних
;

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
    ДанныеМоихТачек.Автомобиль КАК Автомобиль
ПОМЕСТИТЬ ВТТолькоБугатти
ИЗ
    ДанныеМоихТачек КАК ДанныеМоихТачек

СГРУППИРОВАТЬ ПО
    ДанныеМоихТачек.Автомобиль
;

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
    ТолькоБугатти.Автомобиль КАК Автомобиль,
    МАКСИМУМ(ЕСТЬNULL(ДанныеМоихТачекХозяин.Значение, ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка))) КАК Хозяин,
    МАКСИМУМ(ЕСТЬNULL(ДанныеМоихТачекГосНомер.Значение, "")) КАК ГосНомер
ИЗ
    ВТТолькоБугатти КАК ТолькоБугатти
        ЛЕВОЕ СОЕДИНЕНИЕ ДанныеМоихТачек КАК ДанныеМоихТачекХозяин
        ПО ТолькоБугатти.Автомобиль = ДанныеМоихТачекХозяин.Автомобиль
            И (ДанныеМоихТачекХозяин.ВидЗначения = ЗНАЧЕНИЕ(Перечисление.ДополнительнаяИнформацияАвтомобилей.Хозяин))
        ЛЕВОЕ СОЕДИНЕНИЕ ДанныеМоихТачек КАК ДанныеМоихТачекГосНомер
        ПО ТолькоБугатти.Автомобиль = ДанныеМоихТачекГосНомер.Автомобиль
            И (ДанныеМоихТачекГосНомер.ВидЗначения = ЗНАЧЕНИЕ(Перечисление.ДополнительнаяИнформацияАвтомобилей.ГосНомер))

СГРУППИРОВАТЬ ПО
    ТолькоБугатти.Автомобиль
   arsik
 
33 - 24.10.17 - 15:35
(32) Группировать не обязательно в последнем запросе.
В первом запросе добавь индекс по автомобиль и вид значения, во втором по автомобиль.
 
 


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует