| 
    
            
         
         | 
    
  | 
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 
 | 
         
        меньше часа )))) эт еще нормально     
         | 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |