Имя: Пароль:
1C
1C 7.7
v7: Помогите разобраться с запросом
,
0 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" запрос ничего не находит

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

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

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

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

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

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

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


    ВыбФрагмент_ = СокрЛП(""+ВыбФрагмент);
    
    Если ПустаяСтрока(ВыбФрагмент_) = 1 Тогда
        Сообщить("Пустое значение поиска!!!!");
        Возврат;
    КонецЕсли;
    
    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса =
    "//{{ЗАПРОС(Сформировать)
    |КакУПоставщика = Справочник.КодТовара.Наименование;  
    |Товар = Справочник.КодТовара.Владелец;
    |Поставщик = Справочник.КодТовара.Поставщик;
    |Группировка Товар;
    |Группировка КакУПоставщика;
    |Группировка Поставщик без групп;
    |Условие(Найти(Строка(КакУПоставщика),Строка(ВыбФрагмент_))<>0);
    |"//}}ЗАПРОС
    ;
10 vitalka
 
16.07.19
14:59
Всем спасибо
11 uno-group
 
16.07.19
14:59
А смысл Найти(Строка(КакУПоставщика),Строка(ВыбФрагмент))>
Строка-лишнее уж лучше сокрЛП
12 uno-group
 
16.07.19
15:01
по хорошему нужно справочник кодов подчинить ТМЦ и писать туда по 1 коду. будет подчинение многие к 1 и работать простое Спр.НайтиПоКоду