Имя: Пароль:
1C
1С v8
Проблемы с запросом
0 zzzLEXzzz
 
26.12.13
16:33
Привет всем, имеется запрос из обработки, эта обработка создаёт документ  в реализации, данный запрос заполняет поле "договор", в нем есть несколько условий, но я не могу разобраться почему они не работают, поле договор продолжает заполняться договор с наименованием "Основной договор Эфес" и т.д. хотя док_.комментарий заполнены символами "чт" и т.д., помогите пожалуйста разобраться почему не работает, заранее спасибо, вот  сам запрос


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

                            
                            выборка = запрос.Выполнить().Выбрать();
                            
                            Если выборка.Количество() <> 0 Тогда
                                //заполним реквизит найденным реквизитом
                                выборка.Следующий();
                                Док_.ДоговорКонтрагента = выборка.Договор;
                            Иначе
                                Сообщить("Не найден Договор по Организации "+Строка(Док_.Организация)+", ТП- "+Строка(Агент_.Ссылка));
                                Док_.ДоговорКонтрагента = Док_.Контрагент.ОсновнойДоговорКонтрагента;
                            КонецЕсли;
1 Wobland
 
26.12.13
16:34
может, лучше нормальный написать?
2 zzzLEXzzz
 
26.12.13
16:36
(1) только если вы поможете, просто я не опытный в этом
3 Wobland
 
26.12.13
16:37
начинай формулировать цель запроса, а я пойду кушать
4 zzzLEXzzz
 
26.12.13
16:41
(3) цель запроса,
если док_.комментарий Содержит "ЧЕККП" ТОГДА "Основной КП"
ИНАЧЕ Если док_.Комментарий содержит ""ТОР"" Тогда "Основной договор Торнадо"
ИНАЧЕ Если Док_.Комментарий содержит "ЧТ" тогда "Договор КП Торнадо"
Иначе "Основной договор"
5 salvator
 
26.12.13
16:44
(4) А нахрена запрос для этой цели писать?
6 zzzLEXzzz
 
26.12.13
16:45
(5) это только часть условия, мне в основном нужно это условие, оно у меня не работает
7 salvator
 
26.12.13
16:46
(6) Еще раз: цель запроса какая? Что ты с помощью него хочешь получить?
8 Nenaviwu1c20
 
26.12.13
16:47
Ты глянь что у тебя запрос возвращает.Скорее всего там несколько договоров и он соответственно выбирает первый попавшийся
9 Wobland
 
26.12.13
16:47
(4) цель запроса - если? оригинально
10 Nenaviwu1c20
 
26.12.13
16:49
(9) Согласен логика гоуноу, но стоит помочь разобраться с проблемой.
11 Wobland
 
26.12.13
16:50
(10) помоги. я буду ждать внятности и гундеть
12 salvator
 
26.12.13
16:50
Если тебе нужно заполнить реквизит "Договор" в зависимости от текста в комментарии, то напиши просто

Если Найти(Док.Комментарий,"ЧЕККП")>0 Тогда
  Договор = Справочники.ДоговорыКонтрагентов.НайтиПоНаименованию("Основной КП",Истина);
ИначеЕсли Найти(Док.Комментарий....
...
...

Док.ДоговорКонтрагента = Договор;

И не епи моск.
13 Wobland
 
26.12.13
16:51
а неплохо было бы иметь в документах строковое поле, в которую можно писать всякую фигню, которая придёт в голову
14 zzzLEXzzz
 
26.12.13
16:54
(12) если так сделать, разве выбор падет на договор у которого владелец = контрагент, так же торговый представитель = агент, он же тогда возьмёт первый попавшийся с наименование "Основной КП"
15 Wobland
 
26.12.13
16:55
(14) истинно так. именно поэтому и придумали разнообразные параметры, которые так приятно описаны в СП
16 salvator
 
26.12.13
16:57
(14) Скажи, а зачем эти условия?
И ДоговорыКонтрагентов.Наименование <> ""Бонус""
И ДоговорыКонтрагентов.Наименование <> ""Бонус КП""
И ДоговорыКонтрагентов.Наименование <> ""Основной договор Эфес""
И ДоговорыКонтрагентов.Наименование <> ""Оборудование""
17 zzzLEXzzz
 
26.12.13
16:58
(16) я просто уже пытался вообще исключить договора с такими наименованиями
18 zzzLEXzzz
 
26.12.13
17:03
почему-то переходит постоянно на это условие

Иначе
                                Сообщить("Не найден Договор по Организации "+Строка(Док_.Организация)+", ТП- "+Строка(Агент_.Ссылка));
                                Док_.ДоговорКонтрагента = Док_.Контрагент.ОсновнойДоговорКонтрагента;
                            КонецЕсли;
19 salvator
 
26.12.13
17:03
(17) Ты их исключаешь уже вложенной конструкцией с "ВЫБОР"
20 Wobland
 
26.12.13
17:04
для любви с запросами очень хороша консоль запросов
21 salvator
 
26.12.13
17:08
(20) Ему уже советовали.
22 salvator
 
26.12.13
17:10
(18) Смотри на условия которые накладываешь. Проверь что в параметры передаешь. И есть ли вообще такие данные в базе.
23 zzzLEXzzz
 
26.12.13
17:12
(22) конечно большой процент того что я туплю, но ребят, я правда всё сделал что в моих силах,и проверял вроде всё везде правильно
24 zzzLEXzzz
 
26.12.13
17:14
зам запрос сформулирован правильно?
25 salvator
 
26.12.13
17:14
(23) Самое время скачать и запустить консоль запросов ;)
26 Wobland
 
26.12.13
17:15
я Дархону сегодня целую пачку подарил ;)
27 zzzLEXzzz
 
26.12.13
17:17
я просто не разу не пользовался консолью запроса
28 MKZM
 
26.12.13
17:17
(26) Какой ты добрый. А сигарку подарить?
29 MKZM
 
26.12.13
17:17
Гаванскую
30 MKZM
 
26.12.13
17:18
Мой адрес не лом и не улица
31 Wobland
 
26.12.13
17:19
(27) у меня тоже был такой период в жизни. довольно длительный
32 salvator
 
26.12.13
17:20
(27) Выпей 100 грамм для, так сказать, раскрепощения.
33 MKZM
 
26.12.13
17:21
У меня тоже был, когда я ногу сломал.
34 viktor_vv
 
26.12.13
17:23
(4)

Вот это,

&Комментарий ПОДОБНО ""ТОР""

то же самое, что и

&Комментарий = ""ТОР""

вряд ли это то, что тебе нужно.

Скорее тебе надо что-то типа

&Комментарий ПОДОБНО ""%ТОР%""
35 zzzLEXzzz
 
26.12.13
17:24
(34 сейчас попробую
36 MKZM
 
26.12.13
17:26
(34) Иайдан надоел?
37 MKZM
 
26.12.13
17:26
Майдан
38 zzzLEXzzz
 
26.12.13
17:29
(34) не, всё равно выполняется условие

Иначе   Сообщить("Не найден Договор по Организации "+Строка(Док_.Организация)+", ТП- "+Строка(Агент_.Ссылка));
                                Док_.ДоговорКонтрагента = Док_.Контрагент.ОсновнойДоговорКонтрагента;
                            КонецЕсли;
39 zzzLEXzzz
 
26.12.13
17:30
может кто нить по ТВ подключится, если конечно у кого нить время есть?
40 Wobland
 
26.12.13
17:30
(39) ну я могу
41 zzzLEXzzz
 
26.12.13
17:31
(40) ну посмотри пожалуйста 574168643  qpq885
42 Wobland
 
26.12.13
17:32
(41) ты расскажи, чего ты хочешь добиться этим запросом
43 viktor_vv
 
26.12.13
17:32
(36) Это к чему вопрос был ?
44 zzzLEXzzz
 
26.12.13
17:32
(42) я может просто выражаю свою мысль, нагляднее просто понятнее будет
45 zzzLEXzzz
 
26.12.13
17:33
(43) просто когда увидите поймёте о чём я говорю
46 salvator
 
26.12.13
17:34
(38) Попробуй так сообщить. Что выдает?

Сообщить("Не найден Договор по Организации: "+Док_.Организация+"; ТП- "+Агент_.Ссылка+"; Контрагент: "+Док_Контрагент+"; Комментарий: "+Док_.Комментарий);
47 zzzLEXzzz
 
26.12.13
17:37
(46) выдает это
Не найден Договор по Организации: КП; ТП- ТП 44 Арзиманов; Контрагент: Дворникова О.И. ИП; Комментарий: МБ!!! ЧТ
48 Wobland
 
26.12.13
17:37
(41) не узнаёт
49 zzzLEXzzz
 
26.12.13
17:37
(48) извини не тот вписал 375 981 647 qpq885
50 salvator
 
26.12.13
17:38
(47) Ты как тебе советовали в (34) сделал для всех условий по комментарию?
51 salvator
 
26.12.13
17:40
+(50) И есть ли договор "Основной договор" по указанным организации, контрагенту и торговому представителю?
52 selenat
 
26.12.13
17:48
"Оптимизируя бардак, получите автоматизированный бардак" (с)

Интересно, я один считаю, что делать отбор по написанному в комментарии - бред?
И кстати, если комментарий - это реквизит неограниченной длины, то я бы в запросе как минимум использовал бы конструкцию ВЫРАЗИТЬ, дабы немножко его ограничить...
53 selenat
 
26.12.13
17:50
(52) Оптимизируя = автоматизируя.
54 Wobland
 
26.12.13
18:25
не выйдет комментарий в запросе обработать - документ не записан ещё (вроде)
55 selenat
 
27.12.13
10:04
(54) анекдот в тему.
Двое молодых неопытных альпиниста приходят к старому и опытному и говорят: "Объясните нам такую проблему. Мы вот когда делали восхождение на пятитысячник, никак не могли наверху костер разжечь" Тот отвечает: "Ну понятное дело, там же воздух разряженный потому и не горит". Один другого локтем толкает и говорит: "Вот видишь - воздух разряженный, а ты заладил: дров нет, дров нет".
56 zzzLEXzzz
 
27.12.13
10:06
(55) ржака ))))))))