Имя: Пароль:
1C
1С v8
Запрос, левое соедение, записей больше чем надо...
0 Coldboy
 
01.08.12
17:09
Здравствуйте. Проблема собственно такова, если сделать запрос к регистру сведений, то он вернет мне всего лишь, 600 записей, что по факту и есть, таким запросом
"ВЫБРАТЬ
   |    ЗвонкиПоDOCGA.ВремяНачала,
   |    ЗвонкиПоDOCGA.ТелефонА,
   |    ЗвонкиПоDOCGA.ТелефонВ,
   |    ЗвонкиПоDOCGA.RecordID,
   |    ЗвонкиПоDOCGA.Обработана,
   |    ЗвонкиПоDOCGA.Продолжительность
   |ИЗ
   |    РегистрСведений.ЗвонкиПоDOCGA КАК ЗвонкиПоDOCGA
   |ГДЕ
   |    ЗвонкиПоDOCGA.Обработана = ЛОЖЬ";

но после того, как я делаю еще левое соединение со справочником, чтобы    для определения направлений, мне возвращается, 16к, откуда и почему. где я неправильно в запросе сделал, подскажите пожалуйста. Вроде бы нет ошибок.
ВЫБРАТЬ
                  |    ЗвонкиПоDOCGA.ВремяНачала,
                  |    ЗвонкиПоDOCGA.ТелефонА,
                  |    ЗвонкиПоDOCGA.ТелефонВ,
                  |    ЗвонкиПоDOCGA.RecordID,
                  |    ЗвонкиПоDOCGA.Продолжительность,
                  |    Направления.Оператор,
                  |    Направления.ЦенаОператору КАК ЦенаОператору,
                  |    Направления.ГрадацияВызова,
                  |    Направления.Ссылка КАК Направление,
                  |    ЗвонкиПоDOCGA.ВходящийОператор,
                  |    ЗвонкиПоDOCGA.ТелефонОригинальный
                  |ИЗ
                  |    РегистрСведений.ЗвонкиПоDOCGA КАК ЗвонкиПоDOCGA
                  |        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Направления КАК Направления
                  |        ПО (Направления.ПометкаУдаления = ЛОЖЬ)
                  |            И ЗвонкиПоDOCGA.ТелефонА <= Направления.КонецДиапазонаНомеров
                  |            И ЗвонкиПоDOCGA.ТелефонА >= Направления.НачалоДиапазонаНомеров
                  |ГДЕ
                  |    ЗвонкиПоDOCGA.Обработана = ЛОЖЬ"
1 mikecool
 
01.08.12
17:10
потому что справа записей больше, чем слева и они удовлетворяют условию соединения
2 GLazNik
 
01.08.12
17:11
Это нормально. На одну запись изначального запроса попадает несколько записей из связанной таблицы.
3 DrShad
 
01.08.12
17:11
связи неверно указаны
4 Spieluhr
 
01.08.12
17:11
ЗвонкиПоDOCGA.Обработана = ЛОЖЬ

в условие соединения поставьте
5 mikecool
 
01.08.12
17:12
(3) да все может быть верно ))
вот только дофига записей справа
6 GLazNik
 
01.08.12
17:13
(4) нафиг
7 Coldboy
 
01.08.12
17:13
Как сделать, чтобы мне именно мои 600 записей, тока соединял нормально и все.
8 Coldboy
 
01.08.12
17:14
(1) быть не может, чтобы  число допустси 123
лежало в диапазоне 1 99, 100 200, и 200 до 300.
9 Pro-tone
 
01.08.12
17:14
(7) СГРУППИРОВАТЬ
10 Coldboy
 
01.08.12
17:15
Еще раз сгруппировать эт как?
11 GLazNik
 
01.08.12
17:16
(8) а диапазоны номеров точно не пересекаются?
ради интереса выведи в результирующую таблицу НачалоДиапазонаНомеров, КонецДиапазонаНомеров
12 GLazNik
 
01.08.12
17:17
+(11) возможно не хватает каких то условий на Направления
13 Coldboy
 
01.08.12
17:18
(11) хотя запрос

   Запрос.Текст =  "ВЫБРАТЬ
                   |    ВложенныйЗапрос.ВремяНачала,
                   |    ВложенныйЗапрос.ТелефонА,
                   |    ВложенныйЗапрос.ТелефонВ,
                   |    ВложенныйЗапрос.Направление КАК Направление,
                   |    ВложенныйЗапрос.ТипВызова,
                   |    ВложенныйЗапрос.RecordID,
                   |    ВложенныйЗапрос.ГрадацияВызова,
                   |    ВложенныйЗапрос.Оператор,
                   |    ВложенныйЗапрос.Цена,
                   |    ВложенныйЗапрос.ЦенаОператору,
                   |    ВложенныйЗапрос.Продолжительность,
                   |    ИндивидуальныеСкидкиСрезПоследних.Направление КАК НаправлениеСоСкидки,
                   |    ИндивидуальныеСкидкиСрезПоследних.Телефон,
                   |    ИндивидуальныеСкидкиСрезПоследних.ЦенаПоСкидке,
                   |    ВложенныйЗапрос.ТелефонОригинальный КАК ТелефонОригинальный,
                   |    ВложенныйЗапрос.ТипРасчета,
                   |    ВложенныйЗапрос.КатегорияОператора
                   |ИЗ
                   |    (ВЫБРАТЬ
                   |        ЗвонкиПоDCCCA.ВремяНачала КАК ВремяНачала,
                   |        ЗвонкиПоDCCCA.ТелефонА КАК ТелефонА,
                   |        ЗвонкиПоDCCCA.ТелефонВ КАК ТелефонВ,
                   |        ЗвонкиПоDCCCA.ТипВызова КАК ТипВызова,
                   |        ЗвонкиПоDCCCA.RecordID КАК RecordID,
                   |        Направления.Ссылка КАК Направление,
                   |        Направления.ГрадацияВызова КАК ГрадацияВызова,
                   |        Направления.Оператор КАК Оператор,
                   |        Направления.Цена КАК Цена,
                   |        Направления.ЦенаОператору КАК ЦенаОператору,
                   |        ЗвонкиПоDCCCA.Продолжительность КАК Продолжительность,
                   |        ЗвонкиПоDCCCA.ТелефонОригинальный КАК ТелефонОригинальный,
                   |        ЗвонкиПоDCCCA.ТипРасчета КАК ТипРасчета,
                   |        ЗвонкиПоDCCCA.КатегорияОператора КАК КатегорияОператора
                   |    ИЗ
                   |        РегистрСведений.ЗвонкиПоDCCCA КАК ЗвонкиПоDCCCA
                   |            ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Направления КАК Направления
                   |            ПО ЗвонкиПоDCCCA.ТелефонВ >= Направления.НачалоДиапазонаНомеров
                   |                И ЗвонкиПоDCCCA.ТелефонВ <= Направления.КонецДиапазонаНомеров
                   |                И (Направления.ПометкаУдаления = ЛОЖЬ)
                   |    ГДЕ
                   |        ЗвонкиПоDCCCA.Обработана = ЛОЖЬ) КАК ВложенныйЗапрос
                   |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ИндивидуальныеСкидки.СрезПоследних КАК ИндивидуальныеСкидкиСрезПоследних
                   |        ПО ВложенныйЗапрос.ТелефонА = ИндивидуальныеСкидкиСрезПоследних.Телефон
                   |            И ВложенныйЗапрос.Направление = ИндивидуальныеСкидкиСрезПоследних.Направление
                   |            И ВложенныйЗапрос.ВремяНачала >= ИндивидуальныеСкидкиСрезПоследних.Период";

Отрабатывает четко. ДА не пересекаются, т.к эт телефонные направления, а номер уникален...
14 Coldboy
 
01.08.12
17:22
Он выбирает, почему то, те 13к, вместе ТелефонаА 0 ставит ... как так? А 0 у меня попадает в направление 0,0. Но там другая фишка с ними.
15 GLazNik
 
01.08.12
17:24
(14) поставь условие ТелефонА <> 0 :)
16 Coldboy
 
01.08.12
17:24
(14) где в связях или же в условиях?
17 GLazNik
 
01.08.12
17:25
(16) зависит от потребностей... нужна ли запись с ТелефонА = 0 в результате или нужно только связи "отрезать"
18 Pro-tone
 
модератор
01.08.12
17:28
(0)

сдается мне, что для начала

с твоим условием соединения одной записи РС удовлетворяет куча элементов из справочника, поэтому они попадают в выборку, определись какой элемент "Направлений" ты хочешь (например, с максимальной ценой), по этому условию и группируй
19 Coldboy
 
01.08.12
17:29
попали те, у которых диапазон Конец = 0 и начало = 0 , все записи оттуда вытекли, и вместо ТелефонА, стало 0.
Не добирает 3-х записей, но все равно спасибо, когда недобирает, уже проще Всем спасибо.
20 GLazNik
 
01.08.12
17:30
(19) тык ты условие то куда поставил?
21 Coldboy
 
01.08.12
17:31
в Условия воткнул,
короче понятно откуда взялось, всем спасибо, у меня 3 записи оказалось, где телефонА = 0, оттуда я вытащил 3*5к =15к лишних.
Тута уже косяк входных данных, извините.
22 GLazNik
 
01.08.12
17:32
(21) воткни в связь и у тебя будут все записи из регистра
Закон Брукера: Даже маленькая практика стоит большой теории.