Имя: Пароль:
1C
1С v8
почему не исключаются значения из запроса по Не Подобно
0 LivingStar
 
08.08.13
12:25
Нужно сделать запрос в котором можно исключать записи указывая тот или иной территориальный признак, область край и тд. Сделал использую инсмтрукцию Не Подобно, почему она не работает? Указывая на форме строковое значение территториального признака, записи в запросе все равно присутствуют!!!

ВЫБРАТЬ
    ПродажиОбороты.Номенклатура,
    ПродажиОбороты.Контрагент,
    ПродажиОбороты.ДокументПродажи.ТорговаяТочка КАК ТорговаяТочка,
    ПродажиОбороты.КоличествоОборот / ПродажиОбороты.Номенклатура.ЕдиницаДляОтчетов.Коэффициент КАК КоличествоОборот,
    ПродажиОбороты.ПериодМесяц КАК ПериодМесяц,
    ВЫРАЗИТЬ(КонтактнаяИнформация.Представление КАК СТРОКА(100)) КАК АдресТорговойТочки
{ВЫБРАТЬ
    Номенклатура.*,
    Контрагент.*,
    ТТ.*,
    КоличествоОборот,
    ПериодМесяц}
ИЗ
    РегистрНакопления.Продажи.Обороты(&ДатаНач, &ДатаКон, Авто, Номенклатура В ИЕРАРХИИ (&СписокНоменклатуры)) КАК ПродажиОбороты
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
        ПО ПродажиОбороты.Регистратор.ТорговаяТочка = КонтактнаяИнформация.Объект
            И (КонтактнаяИнформация.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Адрес))
            И (КонтактнаяИнформация.Вид.Код = "000000027")    
    И (ВЫРАЗИТЬ(КонтактнаяИнформация.Представление КАК Строка(100)) Не ПОДОБНО &ИсключитьИзАдреса)
{ГДЕ
    ПродажиОбороты.Номенклатура.*,
    ПродажиОбороты.ДокументПродажи.ТорговаяТочка.*,
    ПродажиОбороты.Контрагент.*,
    ПродажиОбороты.КоличествоОборот,
    ПродажиОбороты.ПериодМесяц}
{УПОРЯДОЧИТЬ ПО
    Номенклатура.*,
    Контрагент.*,
    ТТ.*,
    ПериодМесяц,
    КоличествоОборот}
ИТОГИ
    СУММА(КоличествоОборот)
ПО
    ОБЩИЕ
{ИТОГИ ПО
    Номенклатура.*,
    Контрагент.*,
    ТТ.*,
    ПериодМесяц}
1 Ёпрст
 
гуру
08.08.13
12:26
левое соединение замени на внутреннее
наслаждайся
2 cw014
 
08.08.13
12:27
Потому что параметр нужно устанавливать не "край", а "%край%"
3 LivingStar
 
08.08.13
12:28
(2) то есть в параметре %% по бокам значения?

(1) причем тут внутреннее соединение?
4 cw014
 
08.08.13
12:29
(3) Кури wildcard
5 Ёпрст
 
гуру
08.08.13
12:29
(3) а ты разве не фильтровать хотел ?
6 LivingStar
 
08.08.13
12:34
(2) Сделал так, в поле адрес пропали значения а строки сами есть, открываешь торговую точку там у неё адрес со значением которое хотели исключить, это почему так?

(5) Исключать записи, ну да фильтровать?
Если я в конструкторе убираю левую галку у последнего соединения она пропадает у трех предыдущих....
7 cw014
 
08.08.13
12:36
(6) Логично, ты же в соединении повешал
8 LivingStar
 
08.08.13
12:37
Что за бред??? Как исключать записи по подобно???
Пропадают только значения в поле, количесвто выбираемых записей в выборке же не меняется !!!!
9 LivingStar
 
08.08.13
12:37
(7) попробую убрать в условие
10 Ёпрст
 
гуру
08.08.13
12:37
(6) ёё..
делаешь внутренее соединение и %%  в лайк
11 cw014
 
08.08.13
12:37
(8) Сам ты бред. Ты соединяешь две таблицы. Вторую соединяешь по своим условиям. Если условия не соблюдены - не будет соединения, НО ЗАПИСЬ ПРИ ЭТОМ НЕ ПРОПАДЕТ
12 cw014
 
08.08.13
12:38
(10) Там могут быть записи без контактной информации, а они по отбору не проходят
(9) Делай вложенную таблицу, там проводи свою выборку по ЛЕВОМУ СОЕДИНЕНИЮ, потом во внешней таблицы условие уже в ГДЕ ставь
13 LivingStar
 
08.08.13
12:39
вот что получилось, все нормально там?

ВЫБРАТЬ
    ПродажиОбороты.Номенклатура,
    ПродажиОбороты.Контрагент,
    ПродажиОбороты.ДокументПродажи.ТорговаяТочка КАК ТорговаяТочка,
    ПродажиОбороты.КоличествоОборот / ПродажиОбороты.Номенклатура.ЕдиницаДляОтчетов.Коэффициент КАК КоличествоОборот,
    ПродажиОбороты.ПериодМесяц КАК ПериодМесяц,
    ВЫРАЗИТЬ(КонтактнаяИнформация.Представление КАК СТРОКА(100)) КАК АдресТорговойТочки
{ВЫБРАТЬ
    Номенклатура.*,
    Контрагент.*,
    ТорговаяТочка.*,
    КоличествоОборот,
    ПериодМесяц}
ИЗ
    РегистрНакопления.Продажи.Обороты(&ДатаНач, &ДатаКон, Авто, Номенклатура В ИЕРАРХИИ (&СписокНоменклатуры)) КАК ПродажиОбороты
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
        ПО ПродажиОбороты.Регистратор.ТорговаяТочка = КонтактнаяИнформация.Объект
            И (КонтактнаяИнформация.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Адрес))
            И (КонтактнаяИнформация.Вид.Код = "000000027")
ГДЕ
    НЕ ВЫРАЗИТЬ(КонтактнаяИнформация.Представление КАК СТРОКА(100)) ПОДОБНО &ИсключитьИзАдреса
{ГДЕ
    ПродажиОбороты.Номенклатура.*,
    ПродажиОбороты.ДокументПродажи.ТорговаяТочка.*,
    ПродажиОбороты.Контрагент.*,
    ПродажиОбороты.КоличествоОборот,
    ПродажиОбороты.ПериодМесяц}
{УПОРЯДОЧИТЬ ПО
    Номенклатура.*,
    Контрагент.*,
    ТорговаяТочка.*,
    ПериодМесяц,
    КоличествоОборот}
ИТОГИ
    СУММА(КоличествоОборот)
ПО
    ОБЩИЕ
{ИТОГИ ПО
    Номенклатура.*,
    Контрагент.*,
    ТорговаяТочка.*,
    ПериодМесяц}

выборку осуществляет исключая значения...
14 cw014
 
08.08.13
12:41
(13) Ты своим ГДЕ в запросе автоматом превращаешь из ЛЕВОЕ СОЕДИНЕНИЕ во ВНУТРЕННЕЕ СОЕДИНЕНИЕ
15 LivingStar
 
08.08.13
12:45
(14) А как нужно то????
16 cw014
 
08.08.13
12:46
(15) Либо уж делай ВНУТРЕНЕЕ, либо как в (12) написано
17 LivingStar
 
08.08.13
12:46
(14) что то не так будет работать в запросе (13) ? Какие то всплывут проблемы???
18 LivingStar
 
08.08.13
12:48
(16) Так покажите, где делай то????

Так что ли??? А в чем разница???

ВЫБРАТЬ
    ПродажиОбороты.Номенклатура,
    ПродажиОбороты.Контрагент,
    ПродажиОбороты.ДокументПродажи.ТорговаяТочка КАК ТорговаяТочка,
    ПродажиОбороты.КоличествоОборот / ПродажиОбороты.Номенклатура.ЕдиницаДляОтчетов.Коэффициент КАК КоличествоОборот,
    ПродажиОбороты.ПериодМесяц КАК ПериодМесяц,
    ВЫРАЗИТЬ(КонтактнаяИнформация.Представление КАК СТРОКА(100)) КАК АдресТорговойТочки
{ВЫБРАТЬ
    Номенклатура.*,
    Контрагент.*,
    ТорговаяТочка.*,
    КоличествоОборот,
    ПериодМесяц}
ИЗ
    РегистрНакопления.Продажи.Обороты(&ДатаНач, &ДатаКон, Авто, Номенклатура В ИЕРАРХИИ (&СписокНоменклатуры)) КАК ПродажиОбороты
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
        ПО ПродажиОбороты.Регистратор.ТорговаяТочка = КонтактнаяИнформация.Объект
            И (КонтактнаяИнформация.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Адрес))
            И (КонтактнаяИнформация.Вид.Код = "000000027")
ГДЕ
    НЕ ВЫРАЗИТЬ(КонтактнаяИнформация.Представление КАК СТРОКА(100)) ПОДОБНО &ИсключитьИзАдреса
{ГДЕ
    ПродажиОбороты.Номенклатура.*,
    ПродажиОбороты.ДокументПродажи.ТорговаяТочка.*,
    ПродажиОбороты.Контрагент.*,
    ПродажиОбороты.КоличествоОборот,
    ПродажиОбороты.ПериодМесяц}
{УПОРЯДОЧИТЬ ПО
    Номенклатура.*,
    Контрагент.*,
    ТорговаяТочка.*,
    ПериодМесяц,
    КоличествоОборот}
ИТОГИ
    СУММА(КоличествоОборот)
ПО
    ОБЩИЕ
{ИТОГИ ПО
    Номенклатура.*,
    Контрагент.*,
    ТорговаяТочка.*,
    ПериодМесяц}
19 cw014
 
08.08.13
12:49
У тебя у контрагента1 - адрес "село"
У контрагента2 - адрес "город"
У контрагента3 нет адреса (даже записи такой нет)

Отбор не "%село%"

При левом соединение и вложенных таблицах выйдет:
контрагента2 - "город"
контрагента3 - <null>

При внутреннем соединении и твоем ЛЕВОМ с ГДЕ выйдет:
контрагента2 - "город"
20 LivingStar
 
08.08.13
12:51
Запрос (18) нормально все отберет? Рабочий???
По результату не увидел никаких принципиальных различий, может не очень внимательно смотрел....
21 LivingStar
 
08.08.13
12:52
(19) честно не врубаюсь в это (((((
22 LivingStar
 
08.08.13
12:55
подскажите пожалуйста, запрос (18) можно в работу выпускать????
23 cw014
 
08.08.13
12:56
(21) Что ты не врубился? Я тебе расписал, что может получиться в результате твоей выборки
24 cw014
 
08.08.13
12:57
(21) У тебя не все данные попадут
25 Starhan
 
08.08.13
12:57
(22) ты базу уже выложи в общий доступ и ток пожелания закидывай, и не парься, хватит терпеть эти унижения на мисте.
26 Starhan
 
08.08.13
12:57
(0) У меня родился не скромный вопрос, какое у вас образование?
27 LivingStar
 
08.08.13
12:58
(24) так а сказать как нужно ты можешь??
запрос же я привел...
28 cw014
 
08.08.13
12:59
ВЫБРАТЬ
    ВложенныйЗапрос.Номенклатура,
    ВложенныйЗапрос.Контрагент,
    ВложенныйЗапрос.ТорговаяТочка,
    ВложенныйЗапрос.КоличествоОборот,
    ВложенныйЗапрос.ПериодМесяц,
    ВложенныйЗапрос.АдресТорговойТочки
{ВЫБРАТЬ
    Номенклатура.*,
    Контрагент.*,
    ТорговаяТочка.*,
    КоличествоОборот,
    ПериодМесяц}
ИЗ
(ВЫБРАТЬ
    ПродажиОбороты.Номенклатура,
    ПродажиОбороты.Контрагент,
    ПродажиОбороты.ДокументПродажи.ТорговаяТочка КАК ТорговаяТочка,
    ПродажиОбороты.КоличествоОборот / ПродажиОбороты.Номенклатура.ЕдиницаДляОтчетов.Коэффициент КАК КоличествоОборот,
    ПродажиОбороты.ПериодМесяц КАК ПериодМесяц,
    ВЫРАЗИТЬ(КонтактнаяИнформация.Представление КАК СТРОКА(100)) КАК АдресТорговойТочки
ИЗ
    РегистрНакопления.Продажи.Обороты(&ДатаНач, &ДатаКон, Авто, Номенклатура В ИЕРАРХИИ (&СписокНоменклатуры)) КАК ПродажиОбороты
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
        ПО ПродажиОбороты.Регистратор.ТорговаяТочка = КонтактнаяИнформация.Объект
            И (КонтактнаяИнформация.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Адрес))
            И (КонтактнаяИнформация.Вид.Код = "000000027")) КАК ВложенныйЗапрос
ГДЕ
    НЕ ВложенныйЗапрос.АдресТорговойТочки ПОДОБНО &ИсключитьИзАдреса
{ГДЕ
    ВложенныйЗапрос.Номенклатура.*,
    ВложенныйЗапрос.ТорговаяТочка.*,
    ВложенныйЗапрос.Контрагент.*,
    ВложенныйЗапрос.КоличествоОборот,
    ВложенныйЗапрос.ПериодМесяц}
{УПОРЯДОЧИТЬ ПО
    Номенклатура.*,
    Контрагент.*,
    ТорговаяТочка.*,
    ПериодМесяц,
    КоличествоОборот}
ИТОГИ
    СУММА(КоличествоОборот)
ПО
    ОБЩИЕ
{ИТОГИ ПО
    Номенклатура.*,
    Контрагент.*,
    ТорговаяТочка.*,
    ПериодМесяц}
29 cw014
 
08.08.13
12:59
С тебя 350 рублев
30 LivingStar
 
08.08.13
13:03
(28) спасибо
31 LivingStar
 
08.08.13
13:03
(26) ПТУ
32 cw014
 
08.08.13
13:03
(30)(31) - Не игнорируй (29)
33 cw014
 
08.08.13
13:04
ПТУшник
34 LivingStar
 
08.08.13
13:05
(29) по сравнению с (18) разницы в получаемом результате нет
35 LivingStar
 
08.08.13
13:08
(33) в чем суть если в выборках присутствует одинаковое количесвто записей???
36 cw014
 
08.08.13
13:09
(34) Это пока нет... Пока у тебя юзвери не намолотили контрагентов без контактной информации
37 cw014
 
08.08.13
13:09
(34) А потом один из них прибежит и с криками будет тебе доказывать, что этот контрагент не попадает в список, а должен
38 LivingStar
 
08.08.13
13:20
(37) Директору отчет этот до 17:00 сегодня. Искажение информации не допустимо!!!
39 cw014
 
08.08.13
13:25
(38) Сам решай, как тебе поступать
40 Ёпрст
 
гуру
08.08.13
13:58
(34) и не будет - это идентичные запросы)
41 Ёпрст
 
гуру
08.08.13
13:59
И оборачивать в подзапрос не имело смысла.
42 Ёпрст
 
гуру
08.08.13
13:59
в данном случае.
43 cw014
 
08.08.13
14:07
(41)(42) Ну тут ты не прав, но спорить не буду. И ТС уже пропал
44 Ёпрст
 
гуру
08.08.13
14:25
(43) обоснуй.

Своим ГДЕ на выходе, ты сделал всё тоже самое, что и внутреннее соединение изначально.

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

А так, запросы одинаковые.
45 Ёпрст
 
гуру
08.08.13
14:27
null в адресе с лайк всегда ложь будет - эта строка отсеится..
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.