Имя: Пароль:
1C
1С v8
Поиск "Подобно" как в запросе 1с8
,
0 Casper211
 
13.03.17
01:07
У меня есть строка  "5-5*99/01.23,001"
Я ищу "59901230" и мне надо чтобы нашло эту позицию.
То есть поиск как в запросе "Подобно". Как это можно сделать?
1 Casper211
 
13.03.17
01:08
то есть вот так  "%59901230%"
Чтобы находило подряд эти цифры. И все равно что впереди или в конце
2 Casper211
 
13.03.17
01:14
просто использовать СтрЗаменить?
3 Casper211
 
13.03.17
01:14
СтроковыеФункцииКлиентСервер.ЗаменитьОдниСимволыДругими(":)+-*}{[]-?#$%^&=._/\|(-!№;%?", ОригинальнаяСтрокаПоиска, "");
4 Casper211
 
13.03.17
01:15
но остается проблема найти где-то внутри сроки
5 ДемонМаксвелла
 
13.03.17
01:22
ну собственно так и сделай - подобно и твоя строка "%59901230%"
6 ДемонМаксвелла
 
13.03.17
01:22
в чем проблема то?
7 Casper211
 
13.03.17
01:23
(5) но там где будет искать будет  "5-5*99/01.23,001"
8 Casper211
 
13.03.17
01:23
надо чтобы проигнорировало символы
9 ДемонМаксвелла
 
13.03.17
01:25
(7) ну так подготовь таблицу, скорми её запросу и зачем найди искомое
10 ДемонМаксвелла
 
13.03.17
01:26
а чтоб не было долго добавь в базу поле и рассчитай его заранее
11 Casper211
 
13.03.17
01:30
(10) пробовал. В другой теме писал.
Я получил информацию. Запихнул в запрос, но выводит пусто. Хотя в Тз является строчка


ЗапросТЗ.Текст = "ВЫБРАТЬ
                         |    Таб.Номенклатура КАК Номенклатура,
                         |    Таб.НомерОригинальный КАК НомерОригинальный,
                          |    Таб.НомерПроизводителя КАК НомерПроизводителя,
                         |    Таб.НомерПоставщика КАК НомерПоставщика
                         |ПОМЕСТИТЬ ВТДанные
                         |ИЗ
                         |    &Данные КАК Таб
                        |;
                        ///////////////////////////////////////////////

                        |ВЫБРАТЬ
                        |  ВТДанные.Номенклатура КАК Номенклатура,
                        |    ВТДанные.НомерОригинальный КАК НомерОригинальный,
                         |    ВТДанные.НомерПроизводителя КАК НомерПроизводителя,
                        |    ВТДанные.НомерПоставщика КАК НомерПоставщика
                        |ИЗ
                        |   ВТДанные КАК ВТДанные
                        |ГДЕ
                        |    (ВТДанные.НомерОригинальный ПОДОБНО &СтрокаПоискаСПроцентом
                        |            ИЛИ ВТДанные.НомерПроизводителя ПОДОБНО &СтрокаПоискаСПроцентом
                        |            ИЛИ ВТДанные.НомерПоставщика ПОДОБНО &СтрокаПоискаСПроцентом)";

                        
        ЗапросТЗ.УстановитьПараметр("Данные",ТЗНоменклатур);
        ЗапросТЗ.УстановитьПараметр("СтрокаПоискаСПроцентом",СтрокаПоискаБезСимволов);
        
        Результат = ЗапросТЗ.Выполнить().Выгрузить();
12 Casper211
 
13.03.17
01:30
13 Casper211
 
13.03.17
01:32
возможно я ошибся в написании запроса?
14 ДемонМаксвелла
 
13.03.17
01:33
(13) или в параметре. и в той теме у тебя три Подобно - мегатормоз
15 ДемонМаксвелла
 
13.03.17
01:39
закидывай запрос в консоль и разбирайся
16 Casper211
 
13.03.17
01:41
СтрокаПоискаБезСимволов ="%" +СтроковыеФункцииКлиентСервер.ЗаменитьОдниСимволыДругими(",:)+-*}{[]-?#$%^&=._/\|(-!№;%?", ОригинальнаяСтрокаПоиска, "")+"%";
        ТЗНоменклатур = Запрос.Выполнить().Выгрузить();
        Для каждого СтрокаТЗ Из ТЗНоменклатур Цикл
            СтрокаТЗ.НомерОригинальный=СтроковыеФункцииКлиентСервер.ЗаменитьОдниСимволыДругими(",:)+-*}{[]-?#$%^&=._/\|(-!№;%?", СтрокаТЗ.НомерОригинальный, "");
            СтрокаТЗ.НомерПроизводителя=СтроковыеФункцииКлиентСервер.ЗаменитьОдниСимволыДругими(",:)+-*}{[]-?#$%^&=._/\|(-!№;%?", СтрокаТЗ.НомерПроизводителя, "");
            СтрокаТЗ.НомерПоставщика=СтроковыеФункцииКлиентСервер.ЗаменитьОдниСимволыДругими(",:)+-*}{[]-?#$%^&=._/\|(-!№;%?", СтрокаТЗ.НомерПоставщика, "");
        КонецЦикла;
        ЗапросТЗ = Новый Запрос;
        //МенеджерВТ = Новый МенеджерВременныхТаблиц;
        //ЗапросТЗ.МенеджерВременныхТаблиц = МенеджерВТ;
                                
                        
                    ЗапросТЗ.Текст = "ВЫБРАТЬ
                         |    Таб.Номенклатура КАК Номенклатура,
                         |    Таб.НомерОригинальный КАК НомерОригинальный,
                         |    Таб.НомерПроизводителя КАК НомерПроизводителя,
                         |    Таб.НомерПоставщика КАК НомерПоставщика
                         |ПОМЕСТИТЬ ВТДанные
                         |ИЗ
                         |    &Данные КАК Таб
                        |;
                        |///////////////////////////////////////////////
                        |ВЫБРАТЬ
                        |  ВТДанные.Номенклатура КАК Номенклатура,
                        |    ВТДанные.НомерОригинальный КАК НомерОригинальный,
                        |    ВТДанные.НомерПроизводителя КАК НомерПроизводителя,
                        |    ВТДанные.НомерПоставщика КАК НомерПоставщика
                        |ИЗ
                        |   ВТДанные КАК ВТДанные
                        |ГДЕ
                        |    (ВТДанные.НомерОригинальный ПОДОБНО &СтрокаПоискаСПроцентом
                        |            ИЛИ ВТДанные.НомерПроизводителя ПОДОБНО &СтрокаПоискаСПроцентом
                        |            ИЛИ ВТДанные.НомерПоставщика ПОДОБНО &СтрокаПоискаСПроцентом)";

                        
        ЗапросТЗ.УстановитьПараметр("Данные",ТЗНоменклатур);
        ЗапросТЗ.УстановитьПараметр("СтрокаПоискаСПроцентом",СтрокаПоискаБезСимволов);
        //Результат = ЗапросТЗ.Выполнить().Выгрузить();  
        Список = ЗапросТЗ.Выполнить().Выгрузить().ВыгрузитьКолонку("Номенклатура");
17 Casper211
 
13.03.17
01:42
Сделал, спасибо за помощь
Закон Брукера: Даже маленькая практика стоит большой теории.