|   |   | 
| 
 | Отбор из Регистра сведений | ☑ | ||
|---|---|---|---|---|
| 0
    
        VSpicy naïve 17.10.23✎ 14:40 | 
        Всем доброго дня! Я уже создавал эту тему: В СКД отбор по наименованию... но её уже закрыли(... 
 Есть Регистр сведений (ДокументыТС), в нем указаны ТС и все документы (ПТС, ОСАГО и т.п.) к нему. Также многие ТС уже имеют документы ОСАГО, но с булевом "Архив". Задача: нужно показать ТС у которых отсутствует ОСАГО, но если есть архивные, все равно показать эти ТС, т.к. нет действующего ОСАГО. Запрос ниже показывает ТС у которых вообще отсутствуют документы ОСАГО... Что поправить в запросе чтоб выполнялось вышеуказанное условие? ЗАРАНЕЕ БЛАГОДАРЕН!!! ВЫБРАТЬ уатТС.Ссылка КАК ТСБезОСАГО ПОМЕСТИТЬ вт_БезОСАГО ИЗ Справочник.уатТС КАК уатТС ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.уатДокументыТС КАК уатДокументыТС ПО уатТС.Ссылка = уатДокументыТС.ТС И (уатДокументыТС.ВидДокумента.Код = "000000001") ГДЕ уатТС.ДатаВыбытия = ДАТАВРЕМЯ(1, 1, 1) И уатТС.ДатаВыводаИзЭксплуатации = ДАТАВРЕМЯ(1, 1, 1) И уатДокументыТС.ВидДокумента ЕСТЬ NULL ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ вт_БезОСАГО.ТСБезОСАГО КАК ТС ИЗ РегистрСведений.уатДокументыТС КАК уатДокументыТС ЛЕВОЕ СОЕДИНЕНИЕ вт_БезОСАГО КАК вт_БезОСАГО ПО уатДокументыТС.ТС = вт_БезОСАГО.ТСБезОСАГО ГДЕ НЕ уатДокументыТС.Архив И уатДокументыТС.ТС.ДатаВыбытия = ДАТАВРЕМЯ(1, 1, 1) И уатДокументыТС.ТС.ДатаВыводаИзЭксплуатации = ДАТАВРЕМЯ(1, 1, 1) СГРУППИРОВАТЬ ПО вт_БезОСАГО.ТСБезОСАГО | |||
| 1
    
        PR 17.10.23✎ 14:43 | 
        Я знаю я знаю
 Нужно поправить текст | |||
| 2
    
        petya_ petrov_63 17.10.23✎ 14:59 | 
        Надо запрограммировать. Т.е. написать алгоритм. Так как вы ограничены в средствах выполнения задачи, то потом алгоритм перевести в язык запросов.
 Разве в предыдущей теме результат не был найден? | |||
| 3
    
        petya_ petrov_63 17.10.23✎ 15:09 | 
        Не вру. Наоборот надо по вашему запросу написать алгоритм который выполняется, потом сравнить с требуемым ТЗ и уточнить  неточности.
 Некоторые это делают консолью запросов с просмотром временных таблиц. | |||
| 4
    
        VSpicy naïve 17.10.23✎ 15:17 | 
        Короче именно эту тему нужно закрыть!
 Что-то я случайно дубль сделал)... | |||
| 5
    
        PR 17.10.23✎ 15:24 | 
        (4) Не командуй нам тут     | |||
| 6
    
        VSpicy naïve 17.10.23✎ 15:51 | 
        (5) Это просто просьба...;-)
 Короче я тупанул с поставленной задачей) Всё просто... Из запроса я хочу показать ТС у которых вообще нет документа ОСАГО и если документ ОСАГО есть, но находится в архиве (без действующих). | |||
| 7
    
        VSpicy naïve 17.10.23✎ 16:14 | 
        Если так, показывает сразу всё, даже где есть действующие ОСАГО(((
 ГДЕ уатТС.ДатаВыбытия = ДАТАВРЕМЯ(1, 1, 1) И уатТС.ДатаВыводаИзЭксплуатации = ДАТАВРЕМЯ(1, 1, 1) И (уатДокументыТС.ВидДокумента ЕСТЬ NULL ИЛИ уатДокументыТС.Архив = Истина) | |||
| 8
    
        petya_ petrov_63 17.10.23✎ 16:46 | 
        (7) наверное надо спросить чем отличается "ЛЕВОЕ" от "ПРАВОЕ" ...
 Все же разбейте задачу на пункты и последовательно выполняйте их. Пока вы не выполните задачу по одному пункту мне кажется вам будет сложно добиться выполнения задачи по трем пунктам сразу. | |||
| 9
    
        Donkey_hot 17.10.23✎ 16:54 | 
        Писал в той старой закрытой ветке, адаптирую под уточнение, связанное с наличием признака Архив (изменения выделены жирным шрифтом):
 1 вариант: Справочник ТС соединяете левым внешним соединением с вашим регистром по условию: Спр.Ссылка = Рег.ТС и Рег.ВидДокумента = ОСАГО И НЕ Рег.Архив, полученную выборку ограничиваете ГДЕ Рег.любоеполе ЕСТЬ NULL 2 вариант: выбираете во временную таблицу все ТС из регистра по условию ВидДокумента = ОСАГО И НЕ Архив, потом выбираете ТС из справочника по условию ГДЕ НЕ Спр.Ссылка в (Выбрать ТС из ВТ) | |||
| 10
    
        VSpicy naïve 17.10.23✎ 16:55 | 
        (8) Во временной таблице - данные только по ТС имеющих ПУСТО по  ОСАГО.
 Я так понял предлагается вариант разбить во временные таблицы: где есть ОСАГО и где нет, а далее уже путем сравнения найти то что нужно... | |||
| 11
    
        petya_ petrov_63 17.10.23✎ 17:05 | 
        (10) УРРА )
 Это по-поводу первого предложения. По поводу второго "сравнения" чуть чуть не то ... Ну что получается первое условие решено? Тогда решайте второе. И объединяйте результаты. А еще на дубли проверку добавьте .. | |||
| 12
    
        petya_ petrov_63 17.10.23✎ 17:30 | 
        (9) Мне кажется ТС не очень четко ставит условия по тому, что он хочет получить. А как говорится правильно заданный вопрос это уже 90% правильного ответа.     | |||
| 13
    
        Смотрящий 17.10.23✎ 17:39 | 
        По моему на новом движке форума неправильно отображается полоска стажа     | |||
| 14
    
        Мимохожий Однако 18.10.23✎ 07:01 | 
        (13) Да и хрен с ней, с этой полоской )     | |||
| 15
    
        VSpicy naïve 18.10.23✎ 08:23 | 
        (9) Спасибо большое, ларчик просто открывался)!!!
 А также всем спасибо за участие в этой теме! | |||
| 16
    
        yopQua 18.10.23✎ 08:26 | 
        (13) спасибо, кэп!))     | |||
| 17
    
        petya_ petrov_63 18.10.23✎ 09:24 | 
        (15) Так правильный ответ то будет раскрыт или останется тайной? )     | |||
| 18
    
        Мимохожий Однако 18.10.23✎ 10:37 | 
        (17) см (9)     | |||
| 19
    
        VSpicy naïve 18.10.23✎ 12:19 | 
        (18) Точняк.     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |