Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 7.7 и ранее

v7: Помогите разобраться с запросом

v7: Помогите разобраться с запросом
Я
   vitalka
 
16.07.19 - 14:40
ВыбФрагмент = СокрЛП(""+ВыбФрагмент);
    
    Если ПустаяСтрока(ВыбФрагмент) = 1 Тогда
        Сообщить("Пустое значение поиска!!!!");
        Возврат;
    КонецЕсли;
    
    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса =
    "//{{ЗАПРОС(Сформировать)
    |КакУПоставщика = Справочник.КодТовара.Наименование;  
    |Товар = Справочник.КодТовара.Владелец;
    |Поставщик = Справочник.КодТовара.Поставщик;
    |Группировка Товар;
    |Группировка КакУПоставщика;
    |Группировка Поставщик без групп;
    |Условие(Найти(Строка(КакУПоставщика),Строка(ВыбФрагмент))>0);
    |"//}}ЗАПРОС

    ;
    
    
    // Если ошибка в запросе, то выход из процедуры
    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
        Возврат;
    КонецЕсли;

    // Подготовка к заполнению выходных форм данными запроса
    Таб = СоздатьОбъект("Таблица");
    Таб.ИсходнаяТаблица("Сформировать");
    // Заполнение полей "Заголовок"
    Таб.ВывестиСекцию("Заголовок");
    Состояние("Заполнение выходной таблицы...");
    Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);
    Пока Запрос.Группировка(1) = 1 Цикл
        // Заполнение полей Товар
//        Таб.ВывестиСекцию("Товар");
        Пока Запрос.Группировка(2) = 1 Цикл
            Пока Запрос.Группировка(3) = 1 Цикл
                // Заполнение полей КакУПоставщика
                    Таб.ВывестиСекцию("КакУПоставщика");
            КонецЦикла;
        КонецЦикла;
    КонецЦикла;


в справочнике КодТовара есть три элемента с наименованиями (BJ3-111TOKO),(T1314011) и (T1314011=BJ3-111)

При ВыбФрагмент = "BJ3-111" запрос выдает только (T1314011=BJ3-111)
При ВыбФрагмент = "T1314011" запрос выдает только (T1314011)
При ВыбФрагмент = "T131401" запрос ничего не находит

Почиму так?
 
 
   D_E_S_131
 
1 - 16.07.19 - 14:46
А нельзя не превращать строки в строки?
   Mukrob
 
2 - 16.07.19 - 14:47
При ВыбФрагмент = "T1314011" запрос выдает только (T1314011) 
При ВыбФрагмент = "T131401" запрос ничего не находит 

это точно?
По условию (При ВыбФрагмент = "T131401" запрос ничего не находит) не может быть пустым ;-)
возможно в кодировке опечатка? проверь русские английские буквы
   vitalka
 
3 - 16.07.19 - 14:49
это я уже пробовал как-то повлиять на результат

сразу было так:

  |Условие(Найти(КакУПоставщика,ВыбФрагмент)>0);
   Mukrob
 
4 - 16.07.19 - 14:49
(0) предположу нашел 0-ой символ 
по условию

При ВыбФрагмент = "BJ3-111" запрос выдает только (T1314011=BJ3-111) т.е. фрагмент с 10 символа он не нашел BJ3-111TOKO т.к. 0-ой символ

дальше думаю допетришь.
   Mukrob
 
5 - 16.07.19 - 14:50
Условие(Найти(КакУПоставщика,ВыбФрагмент)<>Неопределено)
или как-то так.. попробуй.., ибо >0 не правильная логика.
   uno-group
 
6 - 16.07.19 - 14:51
СтрПоиска=СокрЛП(ВыбФрагмент) и заменить в условии. ТЫ его присвоил реквизиту на форме и лишние пробелы некуда не делись.
   vitalka
 
7 - 16.07.19 - 14:51
)))) допер
   Mukrob
 
8 - 16.07.19 - 14:53
(7) Родился вот такой монстр по простому ;-)
   Запрос = СоздатьОбъект("Запрос"); 
    ТекстЗапроса = 
    "//{{ЗАПРОС(Сформировать) 

    |КакУПоставщика = "ЛЮБОЙ СИМВОЛ"+Справочник.КодТовара.Наименование;   
    |Товар = Справочник.КодТовара.Владелец; 
    |Поставщик = Справочник.КодТовара.Поставщик; 
    |Группировка Товар; 
    |Группировка КакУПоставщика; 
    |Группировка Поставщик без групп; 
    |Условие(Найти(Строка(КакУПоставщика),Строка(ВыбФрагмент))>0); 
    |"//}}ЗАПРОС 


    ;
   vitalka
 
9 - 16.07.19 - 14:58
(6) сделал по Вашему совету, все заработало - проблема была в лишних пробелах


    ВыбФрагмент_ = СокрЛП(""+ВыбФрагмент);
    
    Если ПустаяСтрока(ВыбФрагмент_) = 1 Тогда
        Сообщить("Пустое значение поиска!!!!");
        Возврат;
    КонецЕсли; 
    
    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса = 
    "//{{ЗАПРОС(Сформировать)

    |КакУПоставщика = Справочник.КодТовара.Наименование;  
    |Товар = Справочник.КодТовара.Владелец;
    |Поставщик = Справочник.КодТовара.Поставщик;
    |Группировка Товар;
    |Группировка КакУПоставщика;
    |Группировка Поставщик без групп;
    |Условие(Найти(Строка(КакУПоставщика),Строка(ВыбФрагмент_))<>0);
    |"//}}ЗАПРОС

    ;
   vitalka
 
10 - 16.07.19 - 14:59
Всем спасибо
   uno-group
 
11 - 16.07.19 - 14:59
А смысл Найти(Строка(КакУПоставщика),Строка(ВыбФрагмент))>
Строка-лишнее уж лучше сокрЛП
   uno-group
 
12 - 16.07.19 - 15:01
по хорошему нужно справочник кодов подчинить ТМЦ и писать туда по 1 коду. будет подчинение многие к 1 и работать простое Спр.НайтиПоКоду

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.