Имя: Пароль:
1C
 
В СКД отбор по наименованию...
,
0 VSpicy
 
naïve
13.10.23
12:36
Всем доброго дня!
Есть Регистр сведений (ДокументыТС), в нем указаны ТС и все документы (ПТС, ОСАГО и т.п.) к нему. Задача: нужно показать ТС у которых отсутствует ОСАГО.
Подскажите пожалуйста как лучше реализовать.
1 petya_
petrov_63
 
13.10.23
13:14
ТЗ не полное, слишком много вариантов. И что значит "показать"? Отчет, признак в форме?
2 VSpicy
 
naïve
13.10.23
14:22
(1)Сформировать список в группировке по ТС: Автомобили у которых отсутствует строка с документом "ОСАГО".
3 Donkey_hot
 
13.10.23
14:23
(2) Т.е. в регистре два измерения: ТС и вид документа и ресурс - номер документа?
4 lubitelxml
 
13.10.23
14:23
ГДЕ твояТаблица.Ссылка ЕСТЬ NULL
5 lubitelxml
 
13.10.23
14:24
Если РС, то просто твояТаблца.ЛюбоеПолеВыборка ЕСТЬ NULL
6 lubitelxml
 
13.10.23
14:25
Точнее не в ГДЕ а ПО в соединении запроса
7 VSpicy
 
naïve
13.10.23
14:28
Если ставить условие: НЕ ВидДокумента.Код = "000001" - (код справочника по ОСАГО), СКД показывает весь список ТС со всеми документами кроме "ОСАГО", хотя в этих ТС "ОСАГО" есть(...
8 VSpicy
 
naïve
13.10.23
14:29
(3) Да.
9 VSpicy
 
naïve
13.10.23
14:30
(8) Номера правда нет.
10 lubitelxml
 
13.10.23
14:30
(8) покажи запрос
11 petya_
petrov_63
 
13.10.23
14:30
Конкурс телепатов продолжается )
Хотя это не в первой ...
Даже конфа не указана ...
Наверное самописка ..
12 VSpicy
 
naïve
13.10.23
14:31
(6) Через временные таблицы...?
13 lubitelxml
 
13.10.23
14:32
(11) я уже хочу написать "Lininge star" опять спалился :)
14 VSpicy
 
naïve
13.10.23
14:33
ВЫБРАТЬ РАЗЛИЧНЫЕ
    уатДокументыТС.ВидДокумента КАК ВидДокумента,
    уатДокументыТС.ТС КАК ТС,
    уатДокументыТС.ДатаВыдачи КАК ДатаВыдачи,
    уатДокументыТС.ДатаОкончания КАК ДатаОкончания
ИЗ
    РегистрСведений.уатДокументыТС КАК уатДокументыТС
ГДЕ
    НЕ уатДокументыТС.Архив
    И уатДокументыТС.ТС.ДатаВыбытия = ДАТАВРЕМЯ(1, 1, 1)
    И уатДокументыТС.ТС.ДатаВыводаИзЭксплуатации = ДАТАВРЕМЯ(1, 1, 1)
    И НЕ уатДокументыТС.ВидДокумента.Код = "000000001"
15 Donkey_hot
 
13.10.23
14:41
1 вариант: Справочник ТС соединяете левым внешним соединением с вашим регистром по условию:
Спр.Ссылка = Рег.ТС и рег.ВидДокумента = ОСАГО, полученную выборку ограничиваете ГДЕ Рег.любоеполе ЕСТЬ NULL

2 вариант: выбираете во временную таблицу все ТС из регистра по условию ВидДокумента = ОСАГО, потом выбираете ТС из справочника по условию ГДЕ НЕ Спр.Ссылка в (Выбрать ТС из ВТ)
16 lubitelxml
 
13.10.23
14:43
(14) во временную таблицу выбери из справочника все ТС, далее внутреннее соединение ПО полеЗапросаСправочника ЕСТЬ NULL
17 VSpicy
 
naïve
13.10.23
14:45
(15) 1 Вариант оптимальный, надо оценить; 2 вариант почти сам хотел так делать...
В любом случае спасибо большое!!!
18 АгентБезопасной Нацио
 
13.10.23
17:56
(13) LivingStar?
19 Valdis2007
 
13.10.23
19:17
(0) ну где..ну где , такие замечательные задачки дают?))
20 VSpicy
 
naïve
17.10.23
16:49
(15) В этом запросе получилось показать ТС у которых документ ОСАГО отсутствует как действующий, так  недействующий (в архиве).
Как бы показать ТС у которых вообще нет документа ОСАГО и если документ ОСАГО есть, но находится в архиве (без действующих)?  

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

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
вт_БезОСАГО.ТСБезОСАГО КАК ТС
ИЗ
РегистрСведений.уатДокументыТС КАК уатДокументыТС
ЛЕВОЕ СОЕДИНЕНИЕ вт_БезОСАГО КАК вт_БезОСАГО
ПО уатДокументыТС.ТС = вт_БезОСАГО.ТСБезОСАГО
ГДЕ
НЕ уатДокументыТС.Архив
И уатДокументыТС.ТС.ДатаВыбытия = ДАТАВРЕМЯ(1, 1, 1)
И уатДокументыТС.ТС.ДатаВыводаИзЭксплуатации = ДАТАВРЕМЯ(1, 1, 1)
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн