Имя: Пароль:
1C
1С v8
Отбор из Регистра сведений
,
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) Точняк.