Имя: Пароль:
1C
1С v8
найти слово в строке
0 dvrk
 
21.01.22
08:19
Привет, не могу сделать условие "если слово в комментарии есть, то выводить параметр"
мне нужно если в "Комментарий" содержится "прол" тогда выводить параметр
т.е. может быть комментарий "всем привет пролонгация/пролангацыя/пролынгация всем пока" и мне нужно просто находить если есть в строке 'прол', то выводить
Если СтрНайти(НРег(ДоговорКонтрагента.Комментарий), "прол") Тогда
    ОбластьМакета.Параметры.Комментарий = "Пролонгация";
Иначе
    КонецЕсли;
что не так сделал?
1 Малыш Джон
 
21.01.22
08:24
(0) >>что не так сделал?

не посмотрел в СП какие значения возвращает функция СтрНайти() и подумал, что 1С сама как нибудь определит выполнилось то условие, которое ты имел в виду, или нет
2 Bigbro
 
21.01.22
08:25
>0
3 dvrk
 
21.01.22
08:30
(1) согласен, проглядел (2) спасибо!
4 pechkin
 
21.01.22
08:32
(2) >0 равносильно истине
5 dvrk
 
21.01.22
08:44
(4) я понимаю, прошляпил просто, спасибо
6 RomaH
 
naïve
21.01.22
08:48
не понял - в чем дело-то было?
7 pechkin
 
21.01.22
08:53
(5) должно было работать и без >0
8 ДенисЧ
 
21.01.22
08:58
(7) С какого перепою?
9 RomaH
 
naïve
21.01.22
09:03
(8) всегда работало - неявное преобразование типов
10 Ёпрст
 
21.01.22
09:06
(8) аналогично, можно делать условие на количество() в коллекциях

Если нечто.Количество() тогда...
11 RomaH
 
naïve
21.01.22
09:06
12 dvrk
 
21.01.22
09:07
(7) без >0 всегда комментарий был
13 Ёпрст
 
21.01.22
09:08
(12) не верю
14 Гипервизор
 
21.01.22
09:12
(7)(9) Вообще-то у СтрНайти() возвращаемое значение это число - позиция первого знака найденной подстроки.
Если строка не содержит указанной подстроки, то возвращается 0.
Отсюда и требуемое "> 0".
Откуда тут будет неявное преобразование?
15 dvrk
 
21.01.22
09:14
(13) ну я не просто так же пришел плакаться)
16 RomaH
 
naïve
21.01.22
09:14
(14) вы меня пугаете
оттуда что 0 там где ожидается булев - преобразуется в Ложь
а все что не равно 0 - в истину
17 Casey1984
 
21.01.22
09:16
(15) Верни назад и проверь еще раз
18 Casey1984
 
21.01.22
09:17
(14) Угадай что вернет:

Сообщить(Булево(-2));
Сообщить(Булево(-1));
Сообщить(Булево(0));
Сообщить(Булево(1));
Сообщить(Булево(2));
19 Ёпрст
 
21.01.22
09:17
(16) дас ис так..
20 RomaH
 
naïve
21.01.22
09:18
21 Гипервизор
 
21.01.22
09:24
(16) Ага, я сам напугался. Да, был неправ.
(18) "Я понял - это намёк", только у вас в примере явное преобразование.
22 Casey1984
 
21.01.22
09:26
(21) 1С умнее всех, не только поймет намек, но и преобразует
23 Ёпрст
 
21.01.22
09:27
(22) да, но почему то неявное преобразование в Число они вырезали после 7.7 , а вот в булево - добавили везде, теперь даже, в тексте запроса
24 Casey1984
 
21.01.22
09:28
(23) Это чтоб сильно не умничали
25 Casey1984
 
21.01.22
09:32
(23) Ахах, угадай что вернуло: Сообщить(1 + "2");
26 Bigbro
 
21.01.22
09:34
1
27 Ёпрст
 
21.01.22
09:34
(25) да да, а ты что вернёт 1+"2Вася"
28 Ёпрст
 
21.01.22
09:35
в клюшках это работало, в снеговие, если только явно там число будет в строке. Иначе исключение, впрочем как и явное преобразование Число()..
29 Casey1984
 
21.01.22
09:36
(27) Это уже неявное извращение
30 Ёпрст
 
21.01.22
09:36
А вот конструкции

  Если Табличка.Количество() Тогда очень часто встречаются в коде
31 Casey1984
 
21.01.22
09:37
(26) У меня 3, меняемся платформами?
32 Serg_1960
 
21.01.22
09:49
Сообщить(?(СтрНайти(" И если я найду Ваше слово?","слово"), "О чё спорим, господа?", "Sorry, был не прав, погорячился"));
33 Bigbro
 
21.01.22
09:53
(31) а ты 7.7 потянешь?
34 Casey1984
 
21.01.22
09:54
(33) Тяну, но тема 8-ка
35 Bigbro
 
21.01.22
10:02
(34) ну вот я и попытался угадать как оно в 8ке)
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой