Имя: Пароль:
1C
1C 7.7
v7: Не работает поиск по ТЗ
0 brenli
 
10.03.17
13:31
Доброго дня.
Почему может не работать поиск по таблице значений.
Мне её что циклом обходить сравнивая получаемые значения с искомыми.
Значение в таблице точно есть, а метод НайтиЗначение возвращает 0.
Искомое значение пробовал указать руками.
Результат тот же.


ТЗ     = СоздатьОбъект("ТаблицаЗначений");
ТЗ.НоваяКолонка("Код","Строка",9);
ТЗ.НоваяКолонка("НомКод","Строка",15);
ТЗ.НоваяКолонка("Объект","Справочник.Номенклатура");

//......
//Заполнили таблицу результатом запроса....
//......

ТЗ.Сортировать("НомКод");

//......
//......
Если ТЗ.НайтиЗначение(НовыйНомер,,"НомКод")=1 Тогда
Иначе
КонецЕсли;

Значение "00001", в ТЗ есть ТОЧНО.
Переменная НовыйНомер содержит это значение.
Почему результат работы метода 0??!!
Вообще х....й пойму как работают очевидные на 1 взгляд вещи в этом языке.
1 brenli
 
10.03.17
13:33
(0) Небольшая поправочка в коде,  поиск осуществляется в бесконечном цикле

Пока 1=1 Цикл
Если ТЗ.НайтиЗначение(НовыйНомер,,"НомКод")=1 Тогда
//....
КонецЕсли;
КонецЦикла;
2 Это_mike
 
10.03.17
13:36
патамушта "строка15"
3 ADirks
 
10.03.17
13:37
в
ТЗ.НоваяКолонка("НомКод","Строка",15);
длину строки не указывай

в поиске
ТЗ.НайтиЗначение(СокрЛП(НовыйНомер),,"НомКод")
4 brenli
 
10.03.17
13:42
(3) (2) Результат тот же (
Значение не найдено.
5 Это_mike
 
10.03.17
13:42
значит, ошибка там же, где и всегда...
6 brenli
 
10.03.17
13:43
(5) Стесняюсь спросить... ?
7 Это_mike
 
10.03.17
13:49
(6) в ДНК...
8 azernot
 
10.03.17
13:55
ТЗ.ВыбратьСтроки();
Пока ТЗ.ПолучитьСтроку() = 1 Цикл
Сообщить("'"+ТЗ.НомКод+"'");
КонецЦикла;


Вставь этот код после сортировки ТЗ, результат из окна сообщений размести тут
9 azernot
 
10.03.17
13:56
Да, а ещё чуть ниже вставь

Сообщить("'"+НовыйНомер+"'");
10 brenli
 
10.03.17
13:56
(9) момент, сейчас сделаю
11 пипец
 
10.03.17
13:56
перебери ТЗ по строкам с кодом
Сообщить("!"+ТЗ.НомКод+"!");
и посмотри сколько у тебя там и чего )))
и потом - НайтиЗначение все таки не совсем стандартное применение конструкции

)))))))))))))
12 Остап Сулейманович
 
10.03.17
13:57
(8) Не поможет.

"Значение "00001", в ТЗ есть ТОЧНО."

ставлю 1 бакс на то что такого значения в ТЗ нет.
13 azernot
 
10.03.17
13:58
(12) Вот и убедимся, что того, значения, которое ищется в ТЗ - нет
14 Остап Сулейманович
 
10.03.17
13:59
+ (12) Скорее всего там есть значение : "00001          ". Как сказано в (2).
15 пипец
 
10.03.17
13:59
(12) эээ классику не помним , ранее дайм ставили )))
16 azernot
 
10.03.17
14:00
(14) Я тоже так думаю. Потому как нет кода заполнения ТЗ. Что-то там из результата запроса, наверняка без обрезки пробелов, поэтому и не сработало (3)
17 brenli
 
10.03.17
14:00
(14) (15) (13) Ребята сейчас вывод  будет.
А перед тем как это написать я из отладчика вызывал не однократно метод ТЗ.ВыбратьСтроку().
В оконном режиме получаю эту самую ТЗ в которой есть строки со значениями которыми мне нужно
18 azernot
 
10.03.17
14:01
(17) Ты же пробелы глазами не видишь.
19 brenli
 
10.03.17
14:02
(18) С учетом поправок на (2) (3)  тоже не робит
20 пипец
 
10.03.17
14:03
(17) ты не видишь длинны строки ... это раз
про префиксы и буквы вместо цифер - уже паранойя но и такое бывает
21 azernot
 
10.03.17
14:04
(19) Потому что мы не видим, как заполняется ТЗ.
Давай убедимся, что в ТЗ нет пробелов слева, справа, что там не "1", что там именно "00001" и что переменная НовыйНомер = "00001"
22 brenli
 
10.03.17
14:12
(21) +++
Вы правы оказались.
Даже после того как я убрал длину строки у колонки, длина строки стала как длина поля.

'00001          '

НовыйНомер = '00001'
23 brenli
 
10.03.17
14:13
Пока Запрос.Группировка()=1 Цикл
    ТЗ.НоваяСтрока();
    ТЗ.Код       = Запрос.Код;
    ТЗ.НомКод = СокрЛП(Запрос.НомКод);
    ТЗ.Объект = Запрос.Объект;
КонецЦикла;

Решил...
Спасибо всем ))
24 Остап Сулейманович
 
10.03.17
14:14
А правильный ответ был еще в (2)...
25 azernot
 
10.03.17
14:16
(23) Спасибом не отделаешься!
Отправь СМС со словом "ДОБРО" на 5541
26 Это_mike
 
10.03.17
14:17
(25) и что в ответ?
"Пароль!
--"план по валу"!!!
-"вал по плану". проходи!"
©
27 пипец
 
10.03.17
15:11
меньше часа )))) эт еще нормально
Независимо от того, куда вы едете — это в гору и против ветра!