Имя: Пароль:
1C
1С v8
Помогите с запросом
,
0 Boudybuilder
 
06.03.12
11:21
Добрый день.

Соединил с таблицой КонтактнаяИнформация , и теперь если там нету телефона , то строку в отчете не показывает вобще.


   |ИЗ
   |    РегистрСведений.СостояниеРемонтов.СрезПоследних КАК СостояниеРемонтовСрезПоследних
   |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПартииРемонтов.СрезПоследних КАК ПартииРемонтовСрезПоследних
   |            ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ПартииРемонтов.СрезПервых КАК ПартииРемонтовСрезПервых
   |                ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаявлениеНаРемонт КАК ЗаявлениеНаРемонт
   |                    ПОЛНОЕ СОЕДИНЕНИЕ РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
   |                    ПО ЗаявлениеНаРемонт.Контрагент = КонтактнаяИнформация.Объект
   |                ПО ПартииРемонтовСрезПервых.Регистратор = ЗаявлениеНаРемонт.Ссылка
   |            ПО (ПартииРемонтовСрезПервых.Партия = ПартииРемонтовСрезПоследних.Партия)
   |        ПО СостояниеРемонтовСрезПоследних.ID = ПартииРемонтовСрезПоследних.ID
   |        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК Контрагенты
   |        ПО СостояниеРемонтовСрезПоследних.Расположение = Контрагенты.Ссылка
   |ГДЕ
   |    СостояниеРемонтовСрезПоследних.Состояние = ЗНАЧЕНИЕ(Перечисление.СостоянияРемонтов.ВОчереди)
   |    И СостояниеРемонтовСрезПоследних.Расположение ССЫЛКА Справочник.Контрагенты
   |    И КонтактнаяИнформация.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.ТелефонКонтрагента)


Там стоит условие (КонтактнаяИнформация.Вид) , но можно както левым соединением сделать и тогода правильнее будет. Я просто забыл как...

ЕСТЬNULL тут не прокатывает.
1 Ненавижу 1С
 
гуру
06.03.12
11:22
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
                     ПО ЗаявлениеНаРемонт.Контрагент = КонтактнаяИнформация.Объект
И КонтактнаяИнформация.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.ТелефонКонтрагента)
2 Boudybuilder
 
06.03.12
11:26
Век живешь , век учись!
Спасибо огромное!
3 Boudybuilder
 
06.03.12
12:15
И еще один запросик.
Чтоб не делать двумя запросами , я решил попробовать одним получать по конрагенту и телефон и адрес.

Сделал так:




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






Вроде правильно , и работает с ЛЕВЫМ. Потому как если ставил по значениях отбор , то не если небыло или адреса или телефона , то вобще ничего не возвращало.

А щас показывает . Но снова , если какого то нету из контактов , то один выдает , но телефон может выдать в поле с адресом.

Как тут грамотнее поступить?
4 Apokalipsec
 
06.03.12
12:19
ВЫБОР
КОГДА
ТОГДА
ИНАЧЕ
КОНЕЦ
5 Ненавижу 1С
 
гуру
06.03.12
12:19
(3) соединяй с изначальной таблицей, а не друг с другом
6 Boudybuilder
 
06.03.12
12:21
(5) Можешь показать как ?
7 Ненавижу 1С
 
гуру
06.03.12
12:23
(6) примерно так:

ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформацияТелефон
                     ПО ЗаявлениеНаРемонт.Контрагент = КонтактнаяИнформацияТелефон.Объект
И КонтактнаяИнформацияТелефон.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.ТелефонКонтрагента)
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформацияАдрес
                     ПО ЗаявлениеНаРемонт.Контрагент = КонтактнаяИнформацияАдрес.Объект
И КонтактнаяИнформацияАдрес.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.КакойтоТамАдресКонтрагента)
8 Vladal
 
06.03.12
12:24
Секцией не обшиблись? v7 или v8?
9 Новиков
 
06.03.12
12:31
Признаю в сиих текстах - язык запросов 1С8, наречие северное, ирландскыя!
10 Boudybuilder
 
08.03.12
01:54
ВСЕМ ДОБРЫЙ ВЕЧЕР!

Женщин с праздником.

Решил не создавать новую тему , а попарить мозги тут. Вобщем продолжаю.


Еще один запросик , который не могу рещить.


ВЫБРАТЬ
   СостояниеРемонтовСрезПоследних.ID,
   СостояниеРемонтовСрезПоследних.Состояние,
   ПартииРемонтовСрезПоследних.Партия,
   ПартииРемонтовСрезПоследних.Списан,
   ЗаявлениеНаРемонт.Контрагент,
   ЗаявлениеНаРемонт.Модель
ИЗ
   РегистрСведений.СостояниеРемонтов.СрезПоследних КАК СостояниеРемонтовСрезПоследних
       ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПартииРемонтов.СрезПоследних КАК ПартииРемонтовСрезПоследних
           ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаявлениеНаРемонт КАК ЗаявлениеНаРемонт
           ПО ПартииРемонтовСрезПоследних.Регистратор = ЗаявлениеНаРемонт.Ссылка
       ПО СостояниеРемонтовСрезПоследних.ID = ПартииРемонтовСрезПоследних.ID
ГДЕ
   СостояниеРемонтовСрезПоследних.ID = &ID
   И ПартииРемонтовСрезПоследних.Списан = ЛОЖЬ


Регистр построен так
ПартииРемонтовСрезПоследних.Партия - единственное измерение
ПартииРемонтовСрезПоследних.Списан - реквизит

Мене надо по этому условию получать ПартииРемонтовСрезПоследних.Списан = ЛОЖЬ , но если после него есть строка с ПартииРемонтовСрезПоследних.Списан = ИСТИНА , то запрос пустой.  

Как мне отфильтровать последнюю строку которая с таким реквизитом ЛОЖЬ ?
11 Boudybuilder
 
08.03.12
02:17
Короче... Сам себе отвечаю... Параметры виртуальных таблиц...  
Забыл я о них. ;)
12 Boudybuilder
 
08.03.12
02:34
Хотя и то нет .
Если есть две строки с Истина то выдаст две...  А надо одну последнюю...
Параметры не катят.
(10)Что же делать??????