|   |   | 
| 
 | Условие И в запросе | ☑ | ||
|---|---|---|---|---|
| 0
    
        Интрудер 02.08.12✎ 13:59 | 
        Не получается объединить несколько условий И в запросе в один. То есть
  (ЗаказПокупателяТовары.Ссылка.ДатаОтгрузки <> ДАТАВРЕМЯ(1, 1, 1) И &ДатаПоступления <> ДАТАВРЕМЯ(1, 1, 1) И ЗаказПокупателяТовары.Ссылка.ДатаОтгрузки < &ДатаПоступления) И ЗаказПокупателяТовары.Ссылка.Дата МЕЖДУ &ДатаНач И &ДатаКон предполагает два условия, первое объединение трех истин, второе одиночное. В конструкторе запроса вижу 4 независимых условия, запрос понятно не работает. Операторные скобки в первом тоже не помогают. Может кто нибудь помочь? | |||
| 1
    
        Ц_У 02.08.12✎ 14:00 | 
        Конструктор срезает скобки, причем глупо срезает чаще всего, попробуй ручками проставить скобки     | |||
| 2
    
        Pro-tone модератор 02.08.12✎ 14:00 | 
        (0) а что такое "одиночное" условие ?     | |||
| 3
    
        DrShad 02.08.12✎ 14:01 | 
        И &ДатаПоступления <> ДАТАВРЕМЯ(1, 1, 1) что это!?     | |||
| 4
    
        SherifSP 02.08.12✎ 14:01 | 
        (2)Это когда 2 и более условий, суют в 1)     | |||
| 5
    
        Ц_У 02.08.12✎ 14:01 | 
        ((условие1 и условие2 и условие3 ) и (условие4))     | |||
| 6
    
        Pro-tone 02.08.12✎ 14:01 | 
        (1) ничего там не срезает     | |||
| 7
    
        Ц_У 02.08.12✎ 14:02 | 
        (6) ога.. нисризаит..     | |||
| 8
    
        ssh2006 02.08.12✎ 14:03 | 
        (0) расстановка скобок на  результат не повлияет     | |||
| 9
    
        Интрудер 02.08.12✎ 14:05 | 
        (5) после закрытия конструктора получаем
  ЗаказПокупателяТовары.Ссылка.ДатаОтгрузки <> ДАТАВРЕМЯ(1, 1, 1) И &ДатаПоступления <> ДАТАВРЕМЯ(1, 1, 1) И ЗаказПокупателяТовары.Ссылка.ДатаОтгрузки < &ДатаПоступления И ЗаказПокупателяТовары.Ссылка.Дата МЕЖДУ &ДатаНач И &ДатаКон | |||
| 10
    
        ssh2006 02.08.12✎ 14:05 | 
        (9) потому что (8)     | |||
| 11
    
        Интрудер 02.08.12✎ 14:06 | 
        Что бы не дела, операторные скобки конструктору фиолетовы, срезает :(     | |||
| 12
    
        Интрудер 02.08.12✎ 14:07 | 
        нет способа?     | |||
| 13
    
        Ц_У 02.08.12✎ 14:07 | 
        (11) в твоем случае что должно быть то, может ты не правильно условия ставишь?     | |||
| 14
    
        ssh2006 02.08.12✎ 14:07 | 
        (12) расстановка скобок на  результат не влияет     | |||
| 15
    
        Lex_Liven 02.08.12✎ 14:08 | 
        (ЗаказПокупателяТовары.Ссылка.ДатаОтгрузки <> ДАТАВРЕМЯ(1, 1, 1)
  И &ДатаПоступления <> ДАТАВРЕМЯ(1, 1, 1) И ЗаказПокупателяТовары.Ссылка.ДатаОтгрузки < &ДатаПоступления) И (ЗаказПокупателяТовары.Ссылка.Дата МЕЖДУ &ДатаНач И &ДатаКон) всю жизнь заключаю МЕЖДУ в скобки - проблем не было. | |||
| 16
    
        Ц_У 02.08.12✎ 14:08 | 
        (12) руками поправить текст после конструктора не?     | |||
| 17
    
        Pro-tone 02.08.12✎ 14:08 | 
        >запрос понятно не работает
  (0) что за формулировка? запрос не работает только в том, случае, когда система выдает ошибку при исполнении запроса! А у тебя некорректно заданы условия в запросе! Мы тут не можем понять что-то хочешь получить выборку чего в итоге. | |||
| 18
    
        Molinor 02.08.12✎ 14:08 | 
        Оператору И фиолетово на скобки. Все условия должны выполняться.     | |||
| 19
    
        sash-ml 02.08.12✎ 14:10 | 
        лучше так &ДатаПоступления > ДАТАВРЕМЯ(1973, 1, 1)     | |||
| 20
    
        Интрудер 02.08.12✎ 14:11 | 
        (17) почему не корректно? если есть и дата отгрузки и дата поступления то дата поступления должна быть раньше даты отгрузки     | |||
| 21
    
        Pro-tone 02.08.12✎ 14:12 | 
        (20)запрос отрабатывает те условия, которые ты в него задал, значит смотри сам почему записи в выборке им не удовлетворяют     | |||
| 22
    
        Lex_Liven 02.08.12✎ 14:13 | 
        "если есть и дата отгрузки и дата поступления то дата поступления должна быть раньше даты отгрузки" - а у вас в запросе - дата поступления БОЛЬШЕ отгрузки     | |||
| 23
    
        Интрудер 02.08.12✎ 14:13 | 
        (15) если посмотреть ваше предложение в конструкторе, увидим 4 условия. После его закрытия увидим (9)     | |||
| 24
    
        palpetrovich 02.08.12✎ 14:13 | 
        (19) а почему не ограничить выбор пользователем "ДатаПоступления" до запроса? короче (3)+1     | |||
| 25
    
        Интрудер 02.08.12✎ 14:16 | 
        (24) Если дата отгрузки или дата поступления отсутствуют то без разницы проверять дальше. Это объединенное условие. Похоже можно только переделать логику с И на ИЛИ. Не дружит конструктор с И.     | |||
| 26
    
        Интрудер 02.08.12✎ 14:17 | 
        (24) это не ограничения. Это отбор документов с этим условием.     | |||
| 27
    
        Pro-tone 02.08.12✎ 14:18 | 
        (25) это ты сам не понимаешь разницу между И и ИЛИ     | |||
| 28
    
        Интрудер 02.08.12✎ 14:19 | 
        (3) Это проверка на пустую дату. Есть проще способ? Хотя трабла не в этом. Логику с ИЛИ конструктоп объединяет, с И нет. Ни в одном языке не всречал такого.     | |||
| 29
    
        Molinor 02.08.12✎ 14:19 | 
        (25) Это ты не дружишь с И. :)
  По твоему условия обе даты должны быть заполнены. | |||
| 30
    
        ssh2006 02.08.12✎ 14:20 | 
        (25) > Не дружит конструктор с И.
  В цепочке из И скобки не могут повлиять на результат. Смысла в них там нет. Конструктор их и убирает. | |||
| 31
    
        Интрудер 02.08.12✎ 14:20 | 
        (27) правильно показана нужная логика. она не соблюдается, и что же я не понимаю?     | |||
| 32
    
        Sammo 02.08.12✎ 14:21 | 
        Была фишка, в некоторых филигилиизгибистых условия конструктор некорректно ставит скобки. Решение - руками править.
  Но это не данный случай, имхо | |||
| 33
    
        sash-ml 02.08.12✎ 14:22 | 
        (31) все соблюдается, все условия накладываются на каждую строку выборки, тебе нужно ИЛИ на одиночное условие     | |||
| 34
    
        Pro-tone 02.08.12✎ 14:22 | 
        (31) для начала полностью сформулируй свое ТЗ     | |||
| 35
    
        Lex_Liven 02.08.12✎ 14:23 | 
        В каком плане "Запрос не работает"? Выдает ошибку? ничего не отбирает? отбирает не то?
  пару примеров дай | |||
| 36
    
        Molinor 02.08.12✎ 14:23 | 
        wiki:Алгебра_логики
  Почитай, много нового узнаешь. | |||
| 37
    
        Интрудер 02.08.12✎ 14:24 | 
        (30)Как я проверю условие
  ЗаказПокупателяТовары.Ссылка.ДатаОтгрузки < &ДатаПоступления) если одна из дат пустая? В коде Если ЗначениеЗаполнено(ЗаказПокупателя.ДатаОтгрузки) И ЗначениеЗаполнено(ДатаПоступления) И (ЗаказПокупателя.ДатаОтгрузки < ДатаПоступления) Тогда #Если Клиент Тогда Предупреждение("Отгрузку по заказу покупателя необходимо осуществить раньше даты поступления по данному документу!"); #Иначе ОбщегоНазначения.СообщитьОбОшибке("Отгрузку по заказу покупателя необходимо осуществить раньше даты поступления по данному документу!"); #КонецЕсли Возврат; КонецЕсли; прекрасно работает. (35) ничего не отбирает | |||
| 38
    
        palpetrovich 02.08.12✎ 14:25 | 
        (28) "Это проверка на пустую дату" - проверка ПАРАМЕТРА передаваемого в запрос! Зачем?     | |||
| 39
    
        Defender aka LINN 02.08.12✎ 14:25 | 
        (5) А теперь убираем скобки... И нихрена не меняется.     | |||
| 40
    
        Molinor 02.08.12✎ 14:25 | 
        Дату начала с датой конца периода не перепутал?     | |||
| 41
    
        Pro-tone модератор 02.08.12✎ 14:26 | 
        (0) если не сформулируешь ТЗ - закрою ветку     | |||
| 42
    
        Lex_Liven 02.08.12✎ 14:26 | 
        Как я проверю условие
  ЗаказПокупателяТовары.Ссылка.ДатаОтгрузки < &ДатаПоступления) если одна из дат пустая? Прекрасно проверишь, если пустой будет ДатаПоступления - это условие вернет тебе ложь и все. С датой отгрузки - уже другой вопрос. Но необходимость проверки "ДатаПоступления.Пустая()" ставится под сомнение. | |||
| 43
    
        Интрудер 02.08.12✎ 14:28 | 
        (41) Заполнить ЗаказПоставщика номенклатурой из множества ЗаказовПокупателя.     | |||
| 44
    
        Lex_Liven 02.08.12✎ 14:28 | 
        (37) ничего не отбирает - смотри (22)     | |||
| 45
    
        Pro-tone 02.08.12✎ 14:30 | 
        (43) конфа какая? - от этого зависит название регистра откуда хватать заказы     | |||
| 46
    
        Pro-tone 02.08.12✎ 14:32 | 
        по ходу ТС перебирает все документы :(     | |||
| 47
    
        Интрудер 02.08.12✎ 14:32 | 
        (45) УТ     | |||
| 48
    
        Lex_Liven 02.08.12✎ 14:32 | 
        (45) он из табличных частей документов набирает явно: "ЗаказПокупателяТовары..."
  (44) Больше всего похоже, что ты знаки "Больше" и "меньше" перепутал. | |||
| 49
    
        Интрудер 02.08.12✎ 14:35 | 
        (46) последнее условие МЕЖДУ. оно абсолютно. первое условие состоит из трех. Много хочу? В любом языке это будет работать. < или > не важно. Как условие И объединить.     | |||
| 50
    
        Pro-tone модератор 02.08.12✎ 14:36 | 
        (48) ага  
  (43) вот тебе текст запроса для УТ "ВЫБРАТЬ РАЗЛИЧНЫЕ ЗаказыКлиентовОбороты.Номенклатура ИЗ РегистрНакопления.ЗаказыКлиентов.Обороты(&ДатаНач, &ДатаКон, , ) КАК ЗаказыКлиентовОбороты СГРУППИРОВАТЬ ПО ЗаказыКлиентовОбороты.Номенклатура"; | |||
| 51
    
        Pro-tone модератор 02.08.12✎ 14:37 | 
        даже сгруппировать не надо
  ВЫБРАТЬ РАЗЛИЧНЫЕ ЗаказыКлиентовОбороты.Номенклатура ИЗ РегистрНакопления.ЗаказыКлиентов.Обороты(&ДатаНач, &ДатаКон, , ) КАК ЗаказыКлиентовОбороты | |||
| 52
    
        Classic 02.08.12✎ 14:37 | 
        (49)
  Напиши плиз словами, что ты хочешь от условий. Подозреваю, что тебе надо И ВЫБОР КОГДА &ДатаПоступления <> ДАТАВРЕМЯ(1, 1, 1) ТОГДА ЗаказПокупателяТовары.Ссылка.ДатаОтгрузки < &ДатаПоступления) КОНЕЦ | |||
| 53
    
        ssh2006 02.08.12✎ 14:38 | 
        (49) ЗаказПокупателяТовары.Ссылка.Дата МЕЖДУ &ДатаНач И &ДатаКон и 
  Выбор когда ЗаказПокупателяТовары.Ссылка.ДатаОтгрузки <> ДАТАВРЕМЯ(1, 1, 1) И &ДатаПоступления <> ДАТАВРЕМЯ(1, 1, 1)Тогда И ЗаказПокупателяТовары.Ссылка.ДатаОтгрузки < &ДатаПоступления иначе истина конец | |||
| 54
    
        Lex_Liven 02.08.12✎ 14:38 | 
        (49) Тебе же объясняют - Если между четырьмя условиями стоит И - скобки не нужны. не важно, как их объединять - если в ЛЮБОМ из них ответ ложь - то вся конструкция равна Ложь.
  Проверь свое условие И ЗаказПокупателяТовары.Ссылка.ДатаОтгрузки < &ДатаПоступления оно вернет истину, если отгрузка стоит РАНЬШЕ поступления. Поменяй там знак на Больше И ЗаказПокупателяТовары.Ссылка.ДатаОтгрузки > &ДатаПоступления и проверь свой запрос. | |||
| 55
    
        Интрудер 02.08.12✎ 14:42 | 
        (33) Признаться не понял
  (51) Не пойдет, нужно учесть только заказы с установленной ДатаОтгрузки. Отгружают не всем. (54) Кажется въехал, большое спасибо. Всем спасибо. | |||
| 56
    
        Интрудер 02.08.12✎ 14:47 | 
        (54) Только не верно одно. 
  ЗаказПокупателяТовары.Ссылка.ДатаОтгрузки < &ДатаПоступления нужно учесть только заказы которые запланировали отгрузить раньше предполагаемого поступления по заказу поставщику. те что мы обязались отгрузить в будущем, не интересуют, для них и заказ в будущем создадут. | |||
| 57
    
        Bober 02.08.12✎ 14:48 | 
        (55) в (54) говорит про     | |||
| 58
    
        Bober 02.08.12✎ 14:48 | ||||
| 59
    
        Интрудер 02.08.12✎ 14:50 | 
        (58) Это я понял     | |||
| 60
    
        Lex_Liven 02.08.12✎ 14:52 | 
        (56) значит в (20) ты неверно озвучил задачу.
  Попробуй для начала повыключать по одному условия, найти, какое именно всегда возвращает ложь и уже с ним работать. И еще бывает - проверь, что в твоем периоде ДатаНач-ДатаКон действительно выполняются все три условия выше. Может ты сам опять запутался, какие даты должны быть больше. | |||
| 61
    
        Pro-tone модератор 02.08.12✎ 14:52 | 
        (55) лови =)
  ВЫБРАТЬ РАЗЛИЧНЫЕ ЗаказыКлиентовОбороты.Номенклатура ИЗ РегистрНакопления.ЗаказыКлиентов.Обороты(НАЧАЛОПЕРИОДА(&ДатаНач, ДЕНЬ), КОНЕЦПЕРИОДА(&ДатаКон, ДЕНЬ), , ) КАК ЗаказыКлиентовОбороты ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЗаказКлиента.Товары КАК ЗаказКлиентаТовары ПО ЗаказыКлиентовОбороты.Номенклатура = ЗаказКлиентаТовары.Номенклатура И ЗаказыКлиентовОбороты.ЗаказКлиента = ЗаказКлиентаТовары.Ссылка.Ссылка ГДЕ ЗаказКлиентаТовары.ДатаОтгрузки <> ДАТАВРЕМЯ(1, 1, 1) СГРУППИРОВАТЬ ПО ЗаказыКлиентовОбороты.Номенклатура | |||
| 62
    
        Интрудер 02.08.12✎ 14:54 | 
        (61) Спасибо. =) только группировать кажется не надо.     | |||
| 63
    
        Лефмихалыч 02.08.12✎ 14:55 | 
        (0) А+В+С+Д - как скобки ни расставляй, будет одно и то же. У тебя то же самое в запросе.
  Если любое из первых трех условие = ложь, то все условие ложно. Истинно оно будет только, если все 4 условия сразу истинны. Это справедливо вне зависимости от того, есть у тебя скобки или нет | |||
| 64
    
        Pro-tone модератор 02.08.12✎ 14:57 | 
        (62) да что ты говоришь? ты соединяешь 2 таблицы - свернутую уже - обороты с табличной частью дока. Одна позиция номенклатуры даст 2 строки как минимум, а если в табл части товары более 2х строк с одной номенклатурой, то больше будет     | |||
| 65
    
        Lex_Liven 02.08.12✎ 14:58 | 
        (63) Для "И" больше подходит пример с умножением
  A*B*C*D. Оно так и называется "логическое умножение". 1*1*1*1 = 1 1*1*1*0 = 0 Сложение - это "ИЛИ" 1+1+1+1 >1 ~1 1+1+1+0 >1 ~1 0+0+0+0 = 0 | |||
| 66
    
        Ненавижу 1С гуру 02.08.12✎ 14:59 | 
        (65) И(а,б) = а*б
  ИЛИ(а,б) = а+б-а*б | |||
| 67
    
        ssh2006 02.08.12✎ 15:00 | 
        (64) он заметил что в запросе уже есть РАЗЛИЧНЫЕ :)     | |||
| 68
    
        Ненавижу 1С гуру 02.08.12✎ 15:01 | 
        (0) какое может быть тут ООП? боже, люди...     | |||
| 69
    
        Pro-tone 02.08.12✎ 15:07 | 
        (68) ну это же не он про ООП тему создавал ;)     | |||
| 70
    
        Лефмихалыч 02.08.12✎ 15:26 | 
        (65) как раз умножение вещественных чисел здесь неправильный пример, по скольку для этой операции скобки меняют результат     | |||
| 71
    
        Лефмихалыч 02.08.12✎ 15:27 | 
        (68) а прямые update/insert/delete?
  вот я о том и говорил. А ты - "это тоже естественный отбо-о-о-ор", да "ни чо стра-а-а-ашного" :) | |||
| 72
    
        Lex_Liven 02.08.12✎ 15:27 | 
        (70) 
  1*2*3*4 = 24 (1*2)*(3*4) = 24 (1*2*3)*4 = 24 Нет, не меняют. | |||
| 73
    
        Лефмихалыч 02.08.12✎ 15:30 | 
        хотя да, разницы тоже не будет - сложение и умножение ассоциативны оба. Ну, это мои слова исходные только доказывает     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |