|
v7: Криво исполняется условие сравнения в цикле. Не ловит незаполненый реквизит. | ☑ | ||
---|---|---|---|---|
0
raykom
27.07.14
✎
19:08
|
Есть реквизит у Всех справочников. Тип - строка длина - 17
На форме обработки точно такой же реквизит строка,17 В модуле обработки условие, суть которого находить справочник по целому IDD или его части. Задается в реквизите обработки "ЧастьIDD" Если Найти(Спр.IDD,СокрЛП(ЧастьIDD)) = 1 Тогда бла-бла-бла Если ЧастьIDD заполнена полностью - все корректно отлавливает. Если ЧастьIDD заполнена частично сиволами идущими подряд слева направо - все корректно отлавливает. А если ЧастьIDD заполнено частично последовательно идущими символами из произвольного места строки - тогда выборка приходит пустая. Так же есть точно три пустых IDD у справочников, но по пустому ЧастьIDD приходит пустая выборка. Наведите на путь истинный ? Спасибо. |
|||
1
NS
27.07.14
✎
19:09
|
(0) что возвращает найти()?
|
|||
2
NS
27.07.14
✎
19:10
|
когда вторая редакция ЗиК вышла, она вся была утыкана такой ошибкой как у тебя.
|
|||
3
raykom
27.07.14
✎
19:15
|
Забыл. ТиС ред.7.70.974 платформа - 7.70.927
|
|||
4
raykom
27.07.14
✎
19:16
|
платформа - 7.70.027
|
|||
5
raykom
27.07.14
✎
19:16
|
(1)Сейчас
|
|||
6
raykom
27.07.14
✎
19:17
|
(1)Если Найти(<<?>>) = 1 Тогда//Спр.IDD,СокрЛП(ЧастьIDD)
{Z:\ОБРАБОТКИ\ПРОВЕРКАIDDУСПРАВОЧНИКОВ.ERT(173)}: Ожидается выражение |
|||
7
КонецЦикла
27.07.14
✎
19:17
|
Найти(...) > 0
|
|||
8
raykom
27.07.14
✎
19:18
|
(7)->(6)
|
|||
9
Отладчик
27.07.14
✎
19:18
|
Предлагаю своё условие. В цикле.
Функция Рассчёт() Пока 2*2=4 Цикл Если 2*2=4 Тогда Продолжить; Иначе Рассчёт(); КонецЕсли; КонецЦикла |
|||
10
КонецЦикла
27.07.14
✎
19:18
|
Как оно может быть заполнено частично? Сам его так заполнил или МОД?
|
|||
11
Отладчик
27.07.14
✎
19:19
|
КонецФункции;
|
|||
12
raykom
27.07.14
✎
19:20
|
(9)А если больше 10 ?
(10)Не отвлекайся. Для темы - неважно. |
|||
13
КонецЦикла
27.07.14
✎
19:20
|
(8) Ну ты тупишь конечно... найти возвращает ПОЗИЦИЮ вхождения
|
|||
14
raykom
27.07.14
✎
19:21
|
(13)Да ... Есть такое
Щас подрихтую |
|||
15
Отладчик
27.07.14
✎
19:23
|
(12)
Функция Рассчёт() Пока 2*2<=4 Цикл Если 2*2<=4 Тогда Продолжить; Иначе Предупреждение(">4". СтатусСообщения.Важное); Рассчёт(); КонецЕсли; КонецЦикла; КонецФункции |
|||
16
raykom
27.07.14
✎
19:24
|
(15)Да не путай ты ... И так туплю. Понял я уже шутку и оценил
|
|||
17
Отладчик
27.07.14
✎
19:24
|
Не предупреждение - Сообщить смысле
|
|||
18
raykom
27.07.14
✎
19:25
|
(17)Забей туда функцию СМС себе на номер
|
|||
19
raykom
27.07.14
✎
19:26
|
(13)Нитересно, почему тогда
Если ЧастьIDD заполнена полностью - все корректно отлавливает. Если ЧастьIDD заполнена частично сиволами идущими подряд слева направо - все корректно отлавливает. |
|||
20
Отладчик
27.07.14
✎
19:28
|
(18) Злой ты.
|
|||
21
raykom
27.07.14
✎
19:35
|
(20)Да. Чето седня не шутится ...
|
|||
22
Отладчик
27.07.14
✎
19:36
|
(21) В соседней ветке бухают, ВМФ там.
|
|||
23
шаэс
27.07.14
✎
19:40
|
(0) навели Вас на путь истинный?
|
|||
24
raykom
27.07.14
✎
19:47
|
А мне чо, я и в своей могу )) Мне для этого дань ВМФ не нужен. Хотя ВМФу - респект. У меня тут свой дембель сегодня.
Ну да. Частично. |
|||
25
шаэс
27.07.14
✎
19:50
|
(24) так что осталось не так, как Вы хотите?
|
|||
26
raykom
27.07.14
✎
19:55
|
ЖЕна и зарплата ))
|
|||
27
raykom
27.07.14
✎
19:55
|
Не, пока все ОК. Карябаю код
|
|||
28
Отладчик
27.07.14
✎
20:25
|
Скоро приставку "де" откинем.
|
|||
29
Сияющий Асинхраль
27.07.14
✎
20:57
|
(19) Ну чего тупишь, тебе пару раз сказали уже об этом: Если ЧастьIDD заполнена полностью - все корректно отлавливает потому что часть IDD совпадает с нужной строкой НАЧИНАЯ С ПЕРВОГО СИМВОЛА (т.е. функция правильно возвращает 1); Если ЧастьIDD заполнена частично сиволами идущими подряд слева направо - все корректно отлавливает потому что опять таки часть IDD совпадает с нужной строкой начиная с первого символа. Во всех остальных случаях часть IDD будет совпадать с нужной тебе строкой начиная с символов по номеру больших 1, а ты самолично выбрасываешь все эти возможности из нужной тебе выборки, когда делаешь условие:
Если Найти(Спр.IDD,СокрЛП(ЧастьIDD)) = 1 Тогда Именно поэтому тебе и сказали в (7), что надо использовать условие: Если Найти(Спр.IDD,СокрЛП(ЧастьIDD)) > 0 Тогда Только этим условием ты не будешь отсекать все варианты, которые находятся посередине строки... |
|||
30
raykom
27.07.14
✎
21:03
|
ДА уже понял
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |