|
поделитесь соображениями по нетривиальной задаче | ☑ | ||
---|---|---|---|---|
0
LivingStar
14.08.12
✎
06:42
|
Есть справочник абоненты, у каждого абонента может быть несколько договоров, нежно отобрать абонентов договор которых находится в определенной папке и его дата окончания просрочена, то есть меньше текущей, либо у абонента вообще не заключены договора из этого нужного каталога....
|
|||
1
Рэйв
14.08.12
✎
06:44
|
>>нежно отобрать абонентов
Это пять!:-) |
|||
2
Светлый Гений
14.08.12
✎
06:45
|
(0)договора в подчинении или в табличной части справочника абоненты?
|
|||
3
Рэйв
14.08.12
✎
06:46
|
Где
(Договор в Иерархии(&НужноеПапко) И Договор.Дата<&ТекДата) Или НЕ Договор в Иерархии(&НужноеПапко) |
|||
4
LivingStar
14.08.12
✎
06:48
|
(2) договора в подчинении у нех есть реквизит по которуму и определяется по родителю в том ли он каталоге или нет
|
|||
5
LivingStar
14.08.12
✎
06:49
|
а почему вот это условие не срабатывает? :
ГДЕ Договоры.УслугаНаселению.Родитель.Код = "000000027" И Договоры.ДатаОкончания < &ДатаОкончанияДоговора И Договоры.ДатаОкончания <> ДАТАВРЕМЯ(1, 1, 1) И ВТ_КонтактнаяИнформация.Город = &Город И ЗначенияСвойствОбъектовСрезПоследних.Свойство = &Район в выборку попадают договора у которых Договоры.ДатаОкончания ПУСТО! это же задано в условии что бы не выбирать такие И Договоры.ДатаОкончания <> ДАТАВРЕМЯ(1, 1, 1) |
|||
6
Светлый Гений
14.08.12
✎
06:49
|
(4) то есть этот реквизит - и есть его родитель?
|
|||
7
LivingStar
14.08.12
✎
06:51
|
(6) реквизит договора услуга, это справочник, где есть группы, по которым и определяется в той ли он группе или нет
|
|||
8
Светлый Гений
14.08.12
✎
06:51
|
(5) попробуй ДАТАВРЕМЯ(1,1,1,0,0,0)
|
|||
9
Рэйв
14.08.12
✎
06:51
|
(5)Чем (3) не угодило?
|
|||
10
Светлый Гений
14.08.12
✎
06:51
|
та да (3) точно не проканает
|
|||
11
Рэйв
14.08.12
✎
06:52
|
(10)Почему?
|
|||
12
Рэйв
14.08.12
✎
06:52
|
ВСе логично.По условиям (0)
|
|||
13
LivingStar
14.08.12
✎
06:53
|
(9) дело в том что выборка выбирает договора вроде правильно, но в выборку попадают абоненты у которых несколько нужных договоров, в выборке те которые просрочены, но так же у этих абонентов есть договора которые бессрочны, и эти абоненты не должны попасть в выборку!!!
|
|||
14
Светлый Гений
14.08.12
✎
06:53
|
По условиям (0) логично, а если добавить (7), то надо немного изменить :)
|
|||
15
Рэйв
14.08.12
✎
06:54
|
(14)Ну если для ТС все разжевывать и ложить в рот, то он еще лет 10 будет постить такие темы. Пусть сам хоть немного мозг включит
|
|||
16
Светлый Гений
14.08.12
✎
06:54
|
Как-то так:
Где (Договор.Услуга в Иерархии(&НужноеПапко) И Договор.ДатаОкончания<&ТекДата И Договоры.ДатаОкончания <> ДАТАВРЕМЯ(1, 1, 1,0,0,0) ) Или НЕ Договор.Услуга в Иерархии(&НужноеПапко) |
|||
17
LivingStar
14.08.12
✎
06:55
|
(8) попробую, но как в запросе обрабатывать и не выводить абонента вообще, если у него есть просроченный договор и есть другой бессрочный...
|
|||
18
Светлый Гений
14.08.12
✎
06:55
|
(15) Так-то согласен, просто сегодня настроение хорошее )))
|
|||
19
Megas
14.08.12
✎
07:00
|
Мне вот стало интересно, что в задаче нетривиально =)
|
|||
20
Светлый Гений
14.08.12
✎
07:02
|
(19) это замануха )))
|
|||
21
LivingStar
14.08.12
✎
07:08
|
(16) это вообще не то что нужно!!!
|
|||
22
Светлый Гений
14.08.12
✎
07:11
|
(21)ну значит ты тогда что-то неправильно объясняешь
|
|||
23
Живой Ископаемый
14.08.12
✎
07:14
|
2(21) это то что нужно согласно (0)
|
|||
24
LivingStar
14.08.12
✎
07:16
|
должны отбираться абоненты у которых нет договора действующего или бессрочного
попадают в выборку договора отвечающие условиям, но имеющие действующие договора |
|||
25
Живой Ископаемый
14.08.12
✎
07:17
|
отбирай
|
|||
26
LivingStar
14.08.12
✎
07:23
|
И Договоры.ДатаОкончания <> ДАТАВРЕМЯ(1, 1, 1,0,0,0) пропускает пустую дату в поле выборки
|
|||
27
Светлый Гений
14.08.12
✎
07:27
|
(26)может тогда еще попробовать ДАТАВРЕМЯ(1753,1,1,0,0,0)
|
|||
28
Живой Ископаемый
14.08.12
✎
07:34
|
||||
29
LivingStar
14.08.12
✎
07:35
|
(28) осталось понять как в запросе реализовать последнее
что бы не попадали в выборку абоненты у которых есть договор отвечающий условиям то есть попадающий в выборку, но есть и договор который попадает под условия когда абонент не должен попадать в выборку |
|||
30
Живой Ископаемый
14.08.12
✎
07:38
|
2(29) после твоего вранья с тобой больше никто не будет разговаривать
|
|||
31
Светлый Гений
14.08.12
✎
07:42
|
(29)видимо надо придумать еще какое-то условие, по которому абонент то попадает, то не попадает
|
|||
32
LivingStar
14.08.12
✎
07:43
|
(31) в выборку попадает в любом случае договора отвечающие условиям, но если у этого абонента есть договор действующий он не должен попадать, как это придумать не соображу
|
|||
33
Живой Ископаемый
14.08.12
✎
07:45
|
2(32) Значит нужно реализовать ПОДЗАПРОСОМ. это элементарнейшая задача.
ГДЕ ДОГОВОР НЕ В (<ТУТ ЗАПРОС, возвращающий действующие договора>) |
|||
34
LivingStar
14.08.12
✎
07:46
|
(33) спасибо, приму к сведению!
|
|||
35
Живой Ископаемый
14.08.12
✎
07:51
|
2(34) кто ж тебе поверит теперь... конечно не примешь. будешь стучать в ствол как и прежде.
|
|||
36
LivingStar
14.08.12
✎
08:27
|
(33) как правильно построить условие, неполучается
Договоры.Ссылка НЕ В (ВТ_ДействующиеДоговора) |
|||
37
LivingStar
14.08.12
✎
08:27
|
вот так принялось НЕ Договоры.Ссылка В (ВТ_ДействующиеДоговора.Ссылка), верно?
|
|||
38
Strogg
14.08.12
✎
08:33
|
(37) да сделай ты в конструкторе запрос, да текст его скопируй в основной))
|
|||
39
LivingStar
14.08.12
✎
08:34
|
(38) такой запрос получился, но он что то не выбирает ничего
ВЫБРАТЬ Абонент.Ссылка КАК Абонент, ВЫБОР КОГДА ЕСТЬ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)) ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Абоненты.Ссылка КАК Абонент, ВТ_КонтактнаяИнформация.Город, Договоры.Ссылка КАК Договор, Договоры.УслугаНаселению, Договоры.УслугаНаселению.Родитель, Договоры.ДатаОкончания, ВТ_ДействующиеДоговора.Ссылка ИЗ ВТ_ДействующиеДоговора КАК ВТ_ДействующиеДоговора ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Абоненты КАК Абоненты ЛЕВОЕ СОЕДИНЕНИЕ ВТ_КонтактнаяИнформация КАК ВТ_КонтактнаяИнформация ПО Абоненты.Ссылка = ВТ_КонтактнаяИнформация.Абонент ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Договоры КАК Договоры ПО Абоненты.Ссылка = Договоры.Владелец ПО ВТ_ДействующиеДоговора.Владелец = Абоненты.Ссылка ГДЕ НЕ Договоры.Ссылка В (ВТ_ДействующиеДоговора.Ссылка) И Договоры.УслугаНаселению В ИЕРАРХИИ(&ВДГО) И Договоры.ДатаОкончания < &ДатаОкончанияДоговора И ВТ_КонтактнаяИнформация.Город = &Город |
|||
40
LivingStar
14.08.12
✎
08:41
|
(39) в запросе правильно задал выборку по наименованию города, до все же он не фильтрует выборку по действующим договорам (
|
|||
41
LivingStar
14.08.12
✎
10:56
|
подскажите почему же из таблицы что фильтрует выборку, все же попадают записи в выборку?
НЕ Договоры.Ссылка В (ВТ_ДействующиеДоговора.Ссылка) ВЫБРАТЬ Абонент.Ссылка КАК Абонент, ВЫБОР КОГДА ЕСТЬ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)) И Договоры.Подразделение = &Подразделение ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ "Незаключен договор на ВДГО" КАК НетВДГО, Абоненты.Ссылка КАК Абонент, ВТ_КонтактнаяИнформация.Город КАК Город, Договоры.Ссылка КАК Договор, Договоры.УслугаНаселению КАК УслугаНаселению, Договоры.УслугаНаселению.Родитель КАК УслугаНаселениюРодитель, Договоры.ДатаОкончания КАК ДатаОкончанияДоговора ИЗ ВТ_ДействующиеДоговора КАК ВТ_ДействующиеДоговора ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Абоненты КАК Абоненты ЛЕВОЕ СОЕДИНЕНИЕ ВТ_КонтактнаяИнформация КАК ВТ_КонтактнаяИнформация ПО Абоненты.Ссылка = ВТ_КонтактнаяИнформация.Абонент ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Договоры КАК Договоры ПО Абоненты.Ссылка = Договоры.Владелец ПО ВТ_ДействующиеДоговора.Владелец = Абоненты.Ссылка ГДЕ НЕ Договоры.Ссылка В (ВТ_ДействующиеДоговора.Ссылка) И Договоры.УслугаНаселению В ИЕРАРХИИ(&ВДГО) И Договоры.ДатаОкончания < &ДатаОкончанияДоговора И ВТ_КонтактнаяИнформация.Город.Наименование = &Город И Договоры.Подразделение = &Подразделение ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ "Незаключен договор на ВДГО" КАК НетВДГО, ПодЗапрос.Ссылка КАК Абонент, ВТ_КонтактнаяИнформация.Город КАК Город, Договоры.Ссылка КАК Договор, Договоры.УслугаНаселению КАК УслугаНаселению, Договоры.УслугаНаселению.Родитель КАК УслугаНаселениюРодитель, Договоры.ДатаОкончания КАК ДатаОкончанияДоговора ИЗ (ВЫБРАТЬ Абоненты.Ссылка КАК Ссылка, МАКСИМУМ(ВЫБОР КОГДА Договоры.Ссылка ЕСТЬ NULL ТОГДА 0 ИНАЧЕ 1 КОНЕЦ) КАК КолДоговоров ИЗ Справочник.Абоненты КАК Абоненты ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Договоры КАК Договоры ПО Абоненты.Ссылка = Договоры.Владелец И (Договоры.УслугаНаселению.ВидРаботы = ЗНАЧЕНИЕ(Перечисление.ВидыРабот.ТехническоеОбслуживание)) И (Договоры.ДатаОкончания >= &ДатаОкончанияДоговора ИЛИ Договоры.ДатаОкончания = ДАТАВРЕМЯ(1, 1, 1)) И (Договоры.УслугаНаселению.ОсновнойПоставщик <> ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)) ГДЕ Абоненты.ДатаЗакрытия = ДАТАВРЕМЯ(1, 1, 1) И Абоненты.ЛицевойСчет <> "" СГРУППИРОВАТЬ ПО Абоненты.Ссылка) КАК ПодЗапрос ЛЕВОЕ СОЕДИНЕНИЕ ВТ_КонтактнаяИнформация КАК ВТ_КонтактнаяИнформация ПО ПодЗапрос.Ссылка = ВТ_КонтактнаяИнформация.Абонент ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Договоры КАК Договоры ПО ПодЗапрос.Ссылка = Договоры.Ссылка ГДЕ ПодЗапрос.КолДоговоров = 0 |
|||
42
Bell
15.08.12
✎
01:03
|
(0)Оборотно сальдовая ведомость + фильтр по дате договоров при переходе на конкретный счет. У меня любой бухгалтер делает такие выборки (без программирования)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |