Имя: Пароль:
1C
1С v8
фильтр по виртуальной таблице в запросе
0 LivingStar
 
14.08.12
11:33
делаю виртуальную таблицу после чего нужно по ней отфильтровать выборку
условие НЕ Договоры.Ссылка В (ВТ_ДействующиеДоговора.Ссылка) И не срабытывает, фильтр фильтрует, но почему то не все записи...
1 DrShad
 
14.08.12
11:34
а текст запроса слабо выложить?
2 DrShad
 
14.08.12
11:34
в (0) какая-то жестяная жесть - много букв и ни о чем
3 Рэйв
 
14.08.12
11:35
(2)Он просто наивно думает, что все тут помнят содержание всех его прошлых веток:-)
4 DrShad
 
14.08.12
11:36
(3) :))))
5 LivingStar
 
14.08.12
11:44
(1) ВЫБРАТЬ
   Абонент.Ссылка КАК Абонент,
   ВЫБОР
       КОГДА ЕСТЬNULL(КонтактнаяИнформация.Индекс, "") = ""
           ТОГДА ""
       ИНАЧЕ КонтактнаяИнформация.Индекс + ", "
   КОНЕЦ + ВЫБОР
       КОГДА ЕСТЬNULL(КонтактнаяИнформация.Город.НаименованиеБезСокращения, "") = ""
           ТОГДА ЕСТЬNULL(КонтактнаяИнформация.НаселенныйПункт.Сокращение, "")
       ИНАЧЕ ЕСТЬNULL(КонтактнаяИнформация.Город.Сокращение, "")
   КОНЕЦ + ". " + ВЫБОР
       КОГДА ЕСТЬNULL(КонтактнаяИнформация.Город.НаименованиеБезСокращения, "") = ""
           ТОГДА ЕСТЬNULL(КонтактнаяИнформация.НаселенныйПункт.НаименованиеБезСокращения, "")
       ИНАЧЕ ЕСТЬNULL(КонтактнаяИнформация.Город.НаименованиеБезСокращения, "") + ", " + ВЫБОР
               КОГДА ЕСТЬNULL(КонтактнаяИнформация.НаселенныйПункт.НаименованиеБезСокращения, "") <> ""
                   ТОГДА КонтактнаяИнформация.НаселенныйПункт.Сокращение + ". " + КонтактнаяИнформация.НаселенныйПункт.НаименованиеБезСокращения
               ИНАЧЕ ""
           КОНЕЦ
   КОНЕЦ + "." + ВЫБОР
       КОГДА КонтактнаяИнформация.Квартира = ""
           ТОГДА ВЫБОР
                   КОГДА ЕСТЬNULL(КонтактнаяИнформация.Улица.НаименованиеБезСокращения, "") = ""
                       ТОГДА ВЫБОР
                               КОГДА ЕСТЬNULL(КонтактнаяИнформация.Корпус, "") = ""
                                   ТОГДА ", д." + КонтактнаяИнформация.Дом
                               ИНАЧЕ ", д." + КонтактнаяИнформация.Дом + ", корп." + КонтактнаяИнформация.Корпус
                           КОНЕЦ
                   ИНАЧЕ ВЫБОР
                           КОГДА ЕСТЬNULL(КонтактнаяИнформация.Корпус, "") = ""
                               ТОГДА КонтактнаяИнформация.Улица.Сокращение + ". " + КонтактнаяИнформация.Улица.НаименованиеБезСокращения + ", д." + КонтактнаяИнформация.Дом
                           ИНАЧЕ КонтактнаяИнформация.Улица.Сокращение + ". " + КонтактнаяИнформация.Улица.НаименованиеБезСокращения + ", д." + КонтактнаяИнформация.Дом + ", корп." + КонтактнаяИнформация.Корпус
                       КОНЕЦ
               КОНЕЦ
       ИНАЧЕ ВЫБОР
               КОГДА ЕСТЬNULL(КонтактнаяИнформация.Улица.НаименованиеБезСокращения, "") = ""
                   ТОГДА ВЫБОР
                           КОГДА ЕСТЬNULL(КонтактнаяИнформация.Корпус, "") = ""
                               ТОГДА ", д." + КонтактнаяИнформация.Дом + ", кв." + КонтактнаяИнформация.Квартира
                           ИНАЧЕ ", корп." + КонтактнаяИнформация.Корпус + ", д." + КонтактнаяИнформация.Дом + ", кв." + КонтактнаяИнформация.Квартира
                       КОНЕЦ
               ИНАЧЕ КонтактнаяИнформация.Улица.Сокращение + ". " + КонтактнаяИнформация.Улица.НаименованиеБезСокращения + ", д." + КонтактнаяИнформация.Дом + ", кв." + КонтактнаяИнформация.Квартира
           КОНЕЦ
   КОНЕЦ КАК Адрес,
   КонтактнаяИнформация.Улица КАК Улица,
   КонтактнаяИнформация.НомерДомаЧисло КАК НомерДомаЧисло,
   КонтактнаяИнформация.НомерКвартирыЧисло КАК НомерКвартирыЧисло,
   КонтактнаяИнформация.НомерПодъезда КАК НомерПодъезда,
   КонтактнаяИнформация.НомерКомнаты КАК НомерКомнаты,
   Абонент.Ссылка.ЛицевойСчет КАК ЛицевойСчет,
   КонтактнаяИнформация.Индекс,
   ВЫБОР
       КОГДА ЕСТЬNULL(КонтактнаяИнформация.Индекс, "") = ""
           ТОГДА ""
       ИНАЧЕ КонтактнаяИнформация.Индекс + ", "
   КОНЕЦ + ВЫБОР
       КОГДА ЕСТЬNULL(КонтактнаяИнформация.Город.НаименованиеБезСокращения, "") = ""
           ТОГДА ЕСТЬNULL(КонтактнаяИнформация.НаселенныйПункт.Сокращение, "")
       ИНАЧЕ ЕСТЬNULL(КонтактнаяИнформация.Город.Сокращение, "")
   КОНЕЦ + ". " + ВЫБОР
       КОГДА ЕСТЬNULL(КонтактнаяИнформация.Город.НаименованиеБезСокращения, "") = ""
           ТОГДА ЕСТЬNULL(КонтактнаяИнформация.НаселенныйПункт.НаименованиеБезСокращения, "")
       ИНАЧЕ ЕСТЬNULL(КонтактнаяИнформация.Город.НаименованиеБезСокращения, "") + ""
   КОНЕЦ КАК Адрес1,
   ВЫБОР
       КОГДА КонтактнаяИнформация.Квартира = ""
           ТОГДА ВЫБОР
                   КОГДА ЕСТЬNULL(КонтактнаяИнформация.Улица.НаименованиеБезСокращения, "") = ""
                       ТОГДА ВЫБОР
                               КОГДА ЕСТЬNULL(КонтактнаяИнформация.НаселенныйПункт.НаименованиеБезСокращения, "") <> ""
                                   ТОГДА КонтактнаяИнформация.НаселенныйПункт.Сокращение + ". " + КонтактнаяИнформация.НаселенныйПункт.НаименованиеБезСокращения + ", д." + КонтактнаяИнформация.Дом
                               ИНАЧЕ ""
                           КОНЕЦ
                   ИНАЧЕ КонтактнаяИнформация.Улица.Сокращение + ". " + КонтактнаяИнформация.Улица.НаименованиеБезСокращения + ", д." + КонтактнаяИнформация.Дом
               КОНЕЦ
       ИНАЧЕ ВЫБОР
               КОГДА ЕСТЬNULL(КонтактнаяИнформация.Улица.НаименованиеБезСокращения, "") = ""
                   ТОГДА ВЫБОР
                           КОГДА ЕСТЬNULL(КонтактнаяИнформация.НаселенныйПункт.НаименованиеБезСокращения, "") <> ""
                               ТОГДА ВЫБОР
                                       КОГДА ЕСТЬNULL(КонтактнаяИнформация.Корпус, "") = ""
                                           ТОГДА КонтактнаяИнформация.НаселенныйПункт.Сокращение + ". " + КонтактнаяИнформация.НаселенныйПункт.НаименованиеБезСокращения + ", д." + КонтактнаяИнформация.Дом + ", кв." + КонтактнаяИнформация.Квартира
                                       ИНАЧЕ КонтактнаяИнформация.НаселенныйПункт.Сокращение + ". " + КонтактнаяИнформация.НаселенныйПункт.НаименованиеБезСокращения + ", д." + КонтактнаяИнформация.Дом + ", корп. " + КонтактнаяИнформация.Корпус + ", кв." + КонтактнаяИнформация.Квартира
                                   КОНЕЦ
                           ИНАЧЕ ""
                       КОНЕЦ
               ИНАЧЕ ВЫБОР
                       КОГДА ЕСТЬNULL(КонтактнаяИнформация.Корпус, "") = ""
                           ТОГДА КонтактнаяИнформация.Улица.Сокращение + ". " + КонтактнаяИнформация.Улица.НаименованиеБезСокращения + ", д." + КонтактнаяИнформация.Дом + ", кв." + КонтактнаяИнформация.Квартира
                       ИНАЧЕ КонтактнаяИнформация.Улица.Сокращение + ". " + КонтактнаяИнформация.Улица.НаименованиеБезСокращения + ", д." + КонтактнаяИнформация.Дом + ", корп. " + КонтактнаяИнформация.Корпус + ", кв." + КонтактнаяИнформация.Квартира
                   КОНЕЦ
           КОНЕЦ
   КОНЕЦ + ", кв." + КонтактнаяИнформация.Квартира КАК Адрес2,
   ВЫБОР
       КОГДА ЕСТЬNULL(КонтактнаяИнформация.НаселенныйПункт.НаименованиеБезСокращения, "") <> ""
           ТОГДА КонтактнаяИнформация.НаселенныйПункт.Сокращение + ". " + КонтактнаяИнформация.НаселенныйПункт.НаименованиеБезСокращения
       ИНАЧЕ ""
   КОНЕЦ КАК Адрес3,
   КонтактнаяИнформация.Город,
   КонтактнаяИнформация.Город.НаименованиеБезСокращения,
   КонтактнаяИнформация.Город.Сокращение,
   КонтактнаяИнформация.НаселенныйПункт.Ссылка,
   КонтактнаяИнформация.НаселенныйПункт.НаименованиеБезСокращения,
   КонтактнаяИнформация.НаселенныйПункт.Сокращение,
   КонтактнаяИнформация.Улица.Сокращение,
   КонтактнаяИнформация.Улица.НаименованиеБезСокращения
ПОМЕСТИТЬ ВТ_КонтактнаяИнформация
ИЗ
   Справочник.Абоненты КАК Абонент
       ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
       ПО Абонент.Ссылка = КонтактнаяИнформация.Объект
           И (КонтактнаяИнформация.ТипКонтактнойИнформации = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Адрес))
           И (КонтактнаяИнформация.ВидКонтактнойИнформации = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.АдресАбонента))

СГРУППИРОВАТЬ ПО
   КонтактнаяИнформация.Улица,
   КонтактнаяИнформация.НомерДомаЧисло,
   КонтактнаяИнформация.НомерКвартирыЧисло,
   КонтактнаяИнформация.НомерПодъезда,
   КонтактнаяИнформация.НомерКомнаты,
   Абонент.Ссылка,
   Абонент.Ссылка.ЛицевойСчет,
   КонтактнаяИнформация.Индекс,
   ВЫБОР
       КОГДА ЕСТЬNULL(КонтактнаяИнформация.НаселенныйПункт.НаименованиеБезСокращения, "") <> ""
           ТОГДА КонтактнаяИнформация.НаселенныйПункт.Сокращение + ". " + КонтактнаяИнформация.НаселенныйПункт.НаименованиеБезСокращения
       ИНАЧЕ ""
   КОНЕЦ,
   КонтактнаяИнформация.Город,
   КонтактнаяИнформация.Город.НаименованиеБезСокращения,
   КонтактнаяИнформация.Город.Сокращение,
   КонтактнаяИнформация.НаселенныйПункт.Ссылка,
   КонтактнаяИнформация.НаселенныйПункт.НаименованиеБезСокращения,
   КонтактнаяИнформация.НаселенныйПункт.Сокращение,
   КонтактнаяИнформация.Улица.Сокращение,
   КонтактнаяИнформация.Улица.НаименованиеБезСокращения,
   ВЫБОР
       КОГДА КонтактнаяИнформация.Квартира = ""
           ТОГДА ВЫБОР
                   КОГДА ЕСТЬNULL(КонтактнаяИнформация.Улица.НаименованиеБезСокращения, "") = ""
                       ТОГДА ВЫБОР
                               КОГДА ЕСТЬNULL(КонтактнаяИнформация.НаселенныйПункт.НаименованиеБезСокращения, "") <> ""
                                   ТОГДА КонтактнаяИнформация.НаселенныйПункт.Сокращение + ". " + КонтактнаяИнформация.НаселенныйПункт.НаименованиеБезСокращения + ", д." + КонтактнаяИнформация.Дом
                               ИНАЧЕ ""
                           КОНЕЦ
                   ИНАЧЕ КонтактнаяИнформация.Улица.Сокращение + ". " + КонтактнаяИнформация.Улица.НаименованиеБезСокращения + ", д." + КонтактнаяИнформация.Дом
               КОНЕЦ
       ИНАЧЕ ВЫБОР
               КОГДА ЕСТЬNULL(КонтактнаяИнформация.Улица.НаименованиеБезСокращения, "") = ""
                   ТОГДА ВЫБОР
                           КОГДА ЕСТЬNULL(КонтактнаяИнформация.НаселенныйПункт.НаименованиеБезСокращения, "") <> ""
                               ТОГДА ВЫБОР
                                       КОГДА ЕСТЬNULL(КонтактнаяИнформация.Корпус, "") = ""
                                           ТОГДА КонтактнаяИнформация.НаселенныйПункт.Сокращение + ". " + КонтактнаяИнформация.НаселенныйПункт.НаименованиеБезСокращения + ", д." + КонтактнаяИнформация.Дом + ", кв." + КонтактнаяИнформация.Квартира
                                       ИНАЧЕ КонтактнаяИнформация.НаселенныйПункт.Сокращение + ". " + КонтактнаяИнформация.НаселенныйПункт.НаименованиеБезСокращения + ", д." + КонтактнаяИнформация.Дом + ", корп. " + КонтактнаяИнформация.Корпус + ", кв." + КонтактнаяИнформация.Квартира
                                   КОНЕЦ
                           ИНАЧЕ ""
                       КОНЕЦ
               ИНАЧЕ ВЫБОР
                       КОГДА ЕСТЬNULL(КонтактнаяИнформация.Корпус, "") = ""
                           ТОГДА КонтактнаяИнформация.Улица.Сокращение + ". " + КонтактнаяИнформация.Улица.НаименованиеБезСокращения + ", д." + КонтактнаяИнформация.Дом + ", кв." + КонтактнаяИнформация.Квартира
                       ИНАЧЕ КонтактнаяИнформация.Улица.Сокращение + ". " + КонтактнаяИнформация.Улица.НаименованиеБезСокращения + ", д." + КонтактнаяИнформация.Дом + ", корп. " + КонтактнаяИнформация.Корпус + ", кв." + КонтактнаяИнформация.Квартира
                   КОНЕЦ
           КОНЕЦ
   КОНЕЦ + ", кв." + КонтактнаяИнформация.Квартира,
   ВЫБОР
       КОГДА ЕСТЬNULL(КонтактнаяИнформация.Индекс, "") = ""
           ТОГДА ""
       ИНАЧЕ КонтактнаяИнформация.Индекс + ", "
   КОНЕЦ + ВЫБОР
       КОГДА ЕСТЬNULL(КонтактнаяИнформация.Город.НаименованиеБезСокращения, "") = ""
           ТОГДА ЕСТЬNULL(КонтактнаяИнформация.НаселенныйПункт.Сокращение, "")
       ИНАЧЕ ЕСТЬNULL(КонтактнаяИнформация.Город.Сокращение, "")
   КОНЕЦ + ". " + ВЫБОР
       КОГДА ЕСТЬNULL(КонтактнаяИнформация.Город.НаименованиеБезСокращения, "") = ""
           ТОГДА ЕСТЬNULL(КонтактнаяИнформация.НаселенныйПункт.НаименованиеБезСокращения, "")
       ИНАЧЕ ЕСТЬNULL(КонтактнаяИнформация.Город.НаименованиеБезСокращения, "") + ", " + ВЫБОР
               КОГДА ЕСТЬNULL(КонтактнаяИнформация.НаселенныйПункт.НаименованиеБезСокращения, "") <> ""
                   ТОГДА КонтактнаяИнформация.НаселенныйПункт.Сокращение + ". " + КонтактнаяИнформация.НаселенныйПункт.НаименованиеБезСокращения
               ИНАЧЕ ""
           КОНЕЦ
   КОНЕЦ + "." + ВЫБОР
       КОГДА КонтактнаяИнформация.Квартира = ""
           ТОГДА ВЫБОР
                   КОГДА ЕСТЬNULL(КонтактнаяИнформация.Улица.НаименованиеБезСокращения, "") = ""
                       ТОГДА ВЫБОР
                               КОГДА ЕСТЬNULL(КонтактнаяИнформация.Корпус, "") = ""
                                   ТОГДА ", д." + КонтактнаяИнформация.Дом
                               ИНАЧЕ ", д." + КонтактнаяИнформация.Дом + ", корп." + КонтактнаяИнформация.Корпус
                           КОНЕЦ
                   ИНАЧЕ ВЫБОР
                           КОГДА ЕСТЬNULL(КонтактнаяИнформация.Корпус, "") = ""
                               ТОГДА КонтактнаяИнформация.Улица.Сокращение + ". " + КонтактнаяИнформация.Улица.НаименованиеБезСокращения + ", д." + КонтактнаяИнформация.Дом
                           ИНАЧЕ КонтактнаяИнформация.Улица.Сокращение + ". " + КонтактнаяИнформация.Улица.НаименованиеБезСокращения + ", д." + КонтактнаяИнформация.Дом + ", корп." + КонтактнаяИнформация.Корпус
                       КОНЕЦ
               КОНЕЦ
       ИНАЧЕ ВЫБОР
               КОГДА ЕСТЬNULL(КонтактнаяИнформация.Улица.НаименованиеБезСокращения, "") = ""
                   ТОГДА ВЫБОР
                           КОГДА ЕСТЬNULL(КонтактнаяИнформация.Корпус, "") = ""
                               ТОГДА ", д." + КонтактнаяИнформация.Дом + ", кв." + КонтактнаяИнформация.Квартира
                           ИНАЧЕ ", корп." + КонтактнаяИнформация.Корпус + ", д." + КонтактнаяИнформация.Дом + ", кв." + КонтактнаяИнформация.Квартира
                       КОНЕЦ
               ИНАЧЕ КонтактнаяИнформация.Улица.Сокращение + ". " + КонтактнаяИнформация.Улица.НаименованиеБезСокращения + ", д." + КонтактнаяИнформация.Дом + ", кв." + КонтактнаяИнформация.Квартира
           КОНЕЦ
   КОНЕЦ
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   Договоры.Владелец,
   Договоры.Ссылка,
   Договоры.ДатаОкончания,
   Договоры.УслугаНаселению,
   Договоры.УслугаНаселению.Родитель,
   Договоры.Подразделение
ПОМЕСТИТЬ ВТ_ДействующиеДоговора
ИЗ
   Справочник.Договоры КАК Договоры
ГДЕ
   Договоры.УслугаНаселению В ИЕРАРХИИ(&ВДГО)
   И (Договоры.ДатаОкончания > &ДатаОкончанияДоговора
           ИЛИ Договоры.ДатаОкончания = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0))
   И Договоры.Подразделение = &Подразделение            
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   Абоненты.Ссылка КАК Абонент,
   ВТ_КонтактнаяИнформация.Город,
   Договоры.Ссылка КАК Договор,
   Договоры.УслугаНаселению,
   Договоры.УслугаНаселению.Родитель,
   Договоры.ДатаОкончания,
   ВТ_ДействующиеДоговора.Ссылка
ИЗ
   ВТ_ДействующиеДоговора КАК ВТ_ДействующиеДоговора
       ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Абоненты КАК Абоненты
           ЛЕВОЕ СОЕДИНЕНИЕ ВТ_КонтактнаяИнформация КАК ВТ_КонтактнаяИнформация
           ПО Абоненты.Ссылка = ВТ_КонтактнаяИнформация.Абонент
           ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Договоры КАК Договоры
           ПО Абоненты.Ссылка = Договоры.Владелец
       ПО ВТ_ДействующиеДоговора.Владелец = Абоненты.Ссылка
ГДЕ
   НЕ Абоненты.Ссылка В (ВТ_ДействующиеДоговора.Владелец) И
   (Договоры.УслугаНаселению В ИЕРАРХИИ(&ВДГО)
   И Договоры.ДатаОкончания < &ДатаОкончанияДоговора
   И ВТ_КонтактнаяИнформация.Город.Наименование = &Город)
6 Buster007
 
14.08.12
11:46
ничо так
   ВЫБОР
       КОГДА ЕСТЬNULL(КонтактнаяИнформация.Индекс, "") = ""
           ТОГДА ""
       ИНАЧЕ КонтактнаяИнформация.Индекс
а это не равноценно
ЕСТЬNULL(КонтактнаяИнформация.Индекс, "")
?
7 LivingStar
 
14.08.12
11:47
(6) равноценно
8 DrShad
 
14.08.12
11:48
(5) какой же мля адский отжиг - все в топку и переписать заново
9 LivingStar
 
14.08.12
11:48
в ПОМЕСТИТЬ ВТ_ДействующиеДоговора помещена выборка абонентов по владельцу
как по ней отфильтровать финальный запрос что бы не было там тех абонентов?
10 Buster007
 
14.08.12
11:49
ПО ВТ_ДействующиеДоговора.Владелец = Абоненты.Ссылка
И после этого условие
НЕ Абоненты.Ссылка В (ВТ_ДействующиеДоговора.Владелец)
что за бред?
11 Buster007
 
14.08.12
11:50
(9) присоединяй к справочнику абоненты действующие договора и выбирай только те, где ДействующиеДоговора.Владелец Есть NULL
12 zladenuw
 
14.08.12
11:50
НЕ Договоры.Ссылка В (Выбрать ВТ_ДействующиеДоговора.Ссылка ИЗ ВТ_ДействующиеДоговора КАК ВТ_ДействующиеДоговора)
13 LivingStar
 
14.08.12
11:57
(10) ну а если не связывать то как таблицу то использовать? иначе выборка зависает
14 LivingStar
 
14.08.12
11:58
(11) мне нужно наоборот исключить действующие договора
15 Buster007
 
14.08.12
12:03
(14) учи мат часть.
16 Лоботряс
 
14.08.12
12:05
Сгруппируй ВТ_ДействующиеДоговора по владельцу, остальные поля в этом запросе не нужны
и в отборе будет
НЕ Договоры.Владелец В (ВТ_ДействующиеДоговора.Владелец)
17 LivingStar
 
14.08.12
12:41
(16)

а такой фильтр пойдёт?

ВЫБРАТЬ
   Договоры.Владелец,
   Договоры.Ссылка,
   Договоры.ДатаОкончания,
   Договоры.УслугаНаселению,
   Договоры.УслугаНаселению.Родитель,
   Договоры.Подразделение
ПОМЕСТИТЬ ВТ_ДействующиеДоговора
ИЗ
   Справочник.Договоры КАК Договоры
ГДЕ
   Договоры.УслугаНаселению В ИЕРАРХИИ(&ВДГО)
   И (Договоры.ДатаОкончания > &ДатаОкончанияДоговора
           ИЛИ Договоры.ДатаОкончания = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0))
   И Договоры.Подразделение = &Подразделение            
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   Абоненты.Ссылка КАК Абонент,
   ВТ_КонтактнаяИнформация.Город,
   Договоры.Ссылка КАК Договор,
   Договоры.УслугаНаселению,
   Договоры.УслугаНаселению.Родитель,
   Договоры.ДатаОкончания,
   ВТ_ДействующиеДоговора.Ссылка
ИЗ
   ВТ_ДействующиеДоговора КАК ВТ_ДействующиеДоговора
       ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Абоненты КАК Абоненты
           ЛЕВОЕ СОЕДИНЕНИЕ ВТ_КонтактнаяИнформация КАК ВТ_КонтактнаяИнформация
           ПО Абоненты.Ссылка = ВТ_КонтактнаяИнформация.Абонент
           ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Договоры КАК Договоры
           ПО Абоненты.Ссылка = Договоры.Владелец
       ПО ВТ_ДействующиеДоговора.Владелец = Абоненты.Ссылка
ГДЕ
   НЕ Договоры.Ссылка В (ВТ_ДействующиеДоговора.Ссылка) И
   (Договоры.УслугаНаселению В ИЕРАРХИИ(&ВДГО)
   И Договоры.ДатаОкончания < &ДатаОкончанияДоговора
   И ВТ_КонтактнаяИнформация.Город.Наименование = &Город)
18 Лоботряс
 
14.08.12
12:59
(17)если бы ты знал какой бред ты сейчас написал...

ВЫБРАТЬ
   Договоры.Владелец КАк Абонент,
   Договоры.Ссылка КАК Договор,
   Договоры.ДатаОкончания,
   Договоры.УслугаНаселению,
   Договоры.УслугаНаселению.Родитель,
   Договоры.Подразделение

ИЗ
   Справочник.Договоры КАК Договоры
   ЛЕВОЕ СОЕДИНЕНИЕ ВТ_КонтактнаяИнформация КАК ВТ_КонтактнаяИнформация
ПО Договоры.Владелец = ВТ_КонтактнаяИнформация.Абонент
ГДЕ
   Договоры.УслугаНаселению В ИЕРАРХИИ(&ВДГО)
   И (Договоры.ДатаОкончания > &ДатаОкончанияДоговора
           ИЛИ Договоры.ДатаОкончания = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0))
   И Договоры.Подразделение = &Подразделение
И ВТ_КонтактнаяИнформация.Город.Наименование = &Город)
19 Лоботряс
 
14.08.12
13:00
(18)+ добавить в выбранные поля
ВТ_КонтактнаяИнформация.Город,
20 LivingStar
 
14.08.12
13:24
дело в том что, вот это условие

ГДЕ
   НЕ Договоры.Ссылка В (ВТ_ДействующиеДоговора.Ссылка)
   И Договоры.УслугаНаселению В ИЕРАРХИИ(&ВДГО)
   И Договоры.ДатаОкончания < &ДатаОкончанияДоговора
   И ВТ_КонтактнаяИнформация.Город.Наименование = &Город
   И Договоры.Подразделение = &Подразделение

все же фильтрует на действующие договора, но в выборке остаются абоненты с просроченными договорами, а так как у них есть действующие другие договора, то они не должны попадать в выборку...


НЕ Договоры.Владелец В (ВТ_ДействующиеДоговора.Владелец) - вот это условие фильтровало бы по абоненту, но при его вставке, за место НЕ Договоры.Ссылка В (ВТ_ДействующиеДоговора.Ссылка) выборка пустая (((
21 LivingStar
 
14.08.12
13:49
upp
22 LivingStar
 
14.08.12
14:38
короче я не смог это выбрать запросом !!!
23 LivingStar
 
15.08.12
06:53
почему при использовании в запросе условия НЕ Договоры.Владелец В (ВТ_ДействующиеДоговора.Владелец)
он ничего не выбирает?
24 France
 
15.08.12
06:54
а на что должен действовать "НЕ"??
25 LivingStar
 
15.08.12
06:59
(24) на владельца договора то есть на абонента
из выборки должны исключиться те вбоненты которые есть в фильтре ВТ_ДействующиеДоговора.Владелец
но выборка вообще вся пропадает (
26 Светлый Гений
 
15.08.12
07:34
(25)а без "НЕ" что-нибудь выбирает?
27 Светлый Гений
 
15.08.12
07:35
а вообще, правильно писать
Договоры.Владелец В (ВЫБРАТЬ ВТДД.Владелец ИЗ ВТ_ДействующиеДоговора КАК ВТДД)
28 LivingStar
 
15.08.12
07:37
(26) да выбирает

(27) ну на работу то не влияет  наверное?
29 France
 
15.08.12
07:42
(25) я хотел сказать, что НЕ работает с логическим типом... результатом вот этого "Договоры.Владелец В  (ВТ_ДействующиеДоговора.Владелец)" будет Булево
30 France
 
15.08.12
07:42
это был вопрос.
31 Светлый Гений
 
15.08.12
07:44
(28) да фиг знает, может и не влияет. Если не влияет, то буду иметь ввиду )
32 Лоботряс
 
15.08.12
07:56
(27) все там правильно, учи матчасть
33 Лоботряс
 
15.08.12
08:01
(28) Я тебе советовал уже как то в другой ветке, начать с того чтобы сформулировать и понятно описать что именно ты хочешь получить. Потому что в (20) ты сам понял что сказал?
34 LivingStar
 
15.08.12
08:45
(33) там я говорю что сперва выбираю действующие договора у которых дата больше текущей или пустая, значит они бессрочные, все по одному родителю

потом делаю отбор по полученному фильтру с другой выборкой
условие НЕ Договоры.Ссылка В (ВТ_ДействующиеДоговора.Ссылка) срабатывает, но фильтрует только на действующие договора, то есть исключает их, но остаются просроченные договора по абонентам, но так как у них есть действующие дата которых больше текущей или бессрочные, эти абоненты не должны попадать в выборку, и тут уже вопрос, почему условие НЕ Договоры.Владелец В (ВТ_ДействующиеДоговора.Владелец) которое по идее должно исключать из выборки абонентов по фильтру, вообще формирует пустую выборку
35 Лоботряс
 
15.08.12
08:55
(34)Вопрос <<почему условие НЕ Договоры.Владелец В (ВТ_ДействующиеДоговора.Владелец) которое по идее должно исключать из выборки абонентов по фильтру, вообще формирует пустую выборку>> Ответ. Видимо потому что в таблице ВТ_ДействуюшиеДоговора присутствуют владельцы абсолютно всех договоров. Т.е. согласно твоим отборам в первом пакетном запросе - все договора действующие. Либо там ошибка в условии отбора.
36 LivingStar
 
15.08.12
09:00
(35) да нет не все, там их часть, всего договоров вообще немеренно, ВТ_ДействующиеДоговора отбирает только те которые реально действуют как я видел, похоже правильно отбирает

только вот почему то не фильтрует по ним ( ...
37 Лоботряс
 
15.08.12
09:05
Короче двумя словами тебе надо выбрать все НЕ действующие договора?
38 Лоботряс
 
15.08.12
09:07
Напиши не что ты делаешь, а что хочешь получить в итоге...
39 LivingStar
 
15.08.12
09:19
(37) нужно выбрать всех абонентов с которыми не заключены договора из определенной группы реквизита Услуги договора, у которых договора заключены, но просрочены, то есть дата окончания меньше или равно текущей

в выборку не должны попадать договора у которых дата окончания больше текущей, или отсутствует когда то есть договор бессрочный
40 LivingStar
 
15.08.12
09:21
(39+) учитывая что
1. у абонента может быть договор не из нужной группа реквизита услуги договора
2. что у него есть договор из нужной группы реквизита услуги договора но он просрочен
3. а так же есть бессрочный договор из нужной группы реквизита услуги договора, либо он ещё действует

имея такие 3 договора абонент не должен оказаться в выборке
41 Лоботряс
 
15.08.12
09:36
ВЫБРАТЬ
   Абоненты.Ссылка КАК Абонент,
ИЗ
   Справочник.Абоненты КАК Абоненты
   ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Договоры КАК Договоры
           ПО Абоненты.Ссылка = Договоры.Владелец
       (Договоры.УслугаНаселению В ИЕРАРХИИ(&ВДГО)
   И (Договоры.ДатаОкончания > &ТекущаяДата
ИЛИ Договоры.ДатаОкончания = Датавремя(1,1,1))
Где Договоры.Ссылка есть NULL
42 Лоботряс
 
15.08.12
09:40
Иными словами берешь таблицу Абоненты присоединяешь к ней Левым соединением таблицу действующих договоров и отбираешь только те записи где любое поле из таблицы договоры пустое.
43 LivingStar
 
15.08.12
10:08
(42) ок, спасибо большое, сейчас посмотрю...
44 LivingStar
 
15.08.12
10:11
(42) ругается на есть NULL так можно писать?
и ГДЕ наверное должна быть после = Договоры.Владелец
45 LivingStar
 
15.08.12
10:16
ВЫБРАТЬ
   Абоненты.Ссылка КАК Абонент
ИЗ
   Справочник.Абоненты КАК Абоненты
   ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Договоры КАК Договоры
           ПО Абоненты.Ссылка = Договоры.Владелец
   (Договоры.УслугаНаселению В ИЕРАРХИИ(&ВДГО))
   И( Договоры.ДатаОкончания > &ТекущаяДата
   ИЛИ Договоры.ДатаОкончания = Датавремя(1,1,1))
ГДЕ
   Договоры.Ссылка есть NULL


ошибка:

Текст запроса: Строка 7: {(7,2)}: Синтаксическая ошибка "(Договоры.УслугаНаселению"
<<?>>(Договоры.УслугаНаселению В ИЕРАРХИИ(&ВДГО))
46 Лоботряс
 
15.08.12
10:16
(44)<<ругается на есть NULL так можно писать?>> нужно.
<<и ГДЕ наверное должна быть после = Договоры.Владелец>> нет. Я специально перенес отбор на действующие договора в условия соединения таблиц. После <<Договоры.Владелец>> поставь <<И>>(у меня там ошибка).
47 LivingStar
 
15.08.12
10:19
(46) понял спасибо!
48 LivingStar
 
15.08.12
10:23
ВЫБРАТЬ
   Абоненты.Ссылка КАК Абонент,
   Договоры.Ссылка,
   Договоры.УслугаНаселению.Родитель,
   Договоры.ДокументОснование
ИЗ
   Справочник.Абоненты КАК Абоненты
       ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Договоры КАК Договоры
       ПО Абоненты.Ссылка = Договоры.Владелец
           И (Договоры.УслугаНаселению В ИЕРАРХИИ (&ВДГО))
           И (Договоры.ДатаОкончания > &ТекущаяДата
               ИЛИ Договоры.ДатаОкончания = ДАТАВРЕМЯ(1, 1, 1))
ГДЕ
   Договоры.Ссылка ЕСТЬ NULL



   Договоры.Ссылка,
   Договоры.УслугаНаселению.Родитель,
   Договоры.ДокументОснование

в этих полях пустые значения, а как же просроченные договоры, и договоры заключенные не с этим родителем реквизита услуга
все же странная выборка, нужно мне будет поразбираться.... ни одного договора не показалось....
49 LivingStar
 
15.08.12
10:24
(48+) этот запрос выбрал всех закрытых абонентов, посмотрел у них договора есть, но ничего не открыть, они закрыты
50 Лоботряс
 
15.08.12
10:27
Что значит закрыты/открыты? Выражайся яснее, пожалуйста
51 LivingStar
 
15.08.12
10:44
(50) особенности конфигурации, я не совсем в неё вник, с этими абонентами вообще не работал
то есть это те которые закрыты, типа вообще заморожены!!! с которыми более не идет работа
их выбирает этот запрос
но есть те у которых просрочены договора с родителем реквизита услуга ВДГО
у которых они не заключены с ВДГО вообще, то есть заключены на других родителей услуг
у которых бессрочные договора ВДГО без даты окончания
и у абонента может быть несколько видов договоров, ВОТ)
52 Лоботряс
 
15.08.12
11:06
Блин, как же с тобой сложно. Т.е. тебе нужно отобрать абонентов у которых: 1)  есть договор, и он по услугам принадлежит группе "ВДГО" И (просрочен или дата окончания не заполнена). 2) абонентов у которых нет никаких договоров 3) абонентов, у которых есть договор и он по услугам принадлежит другим группам

Исправь мой текст если что то неправильно...
53 LivingStar
 
15.08.12
11:17
(52) дата окончания если не заполнена то он бессрочный, такого абонента не должно быть в выборке,


Хорошо!!! Спасибо, я попробую править, пока на другой задаче...
54 Светлый Гений
 
15.08.12
12:59
(32)А какого фига у меня тогда такой код не работает?
55 LivingStar
 
15.08.12
13:01
(54) какой такой?
56 LivingStar
 
15.08.12
13:02
(54) может дело в конфигурации?!
57 Лоботряс
 
15.08.12
13:02
(54) очень старый релиз восьмерки
58 Светлый Гений
 
15.08.12
14:37
(57) ну да, на 8.1 пробовал )))
59 viktor_vv
 
15.08.12
15:01
У меня такое чувство, что надо было скобки поставить, так как у NOT приоритет вычисления выше чем, даже у AND, а у В думаю еще ниже.

НЕ (Договоры.Владелец В (ВТ_ДействующиеДоговора.Владелец) )
60 viktor_vv
 
15.08.12
15:03
А без скобок сначала вычислилось (НЕ Договоры.Владелец), в результате скорее всего что-то булево получилось, а потом уже этот результат искался В ( выборка ).