Имя: Пароль:
1C
1С v8
Запрос с условием вхождения
0 mua thu
 
27.09.16
19:02
Добрый день!

Пожалуйста подскажите: есть в word список кодов контрагентов из 1С в виде   "111,222,333,444,555,666,777..." Нужно выбрать запросом контрагентов именно из этого списка. Как можно максимально  быстро это сделать? Мне пока только один вариант приходит на ум - это разобрать эту строку и добавить в массив все коды а потом уже делать запрос с условием вхождения в массив..)))

Заранее благодарю!
1 jsmith
 
27.09.16
19:03
Да
2 Господин ПЖ
 
27.09.16
19:03
я не против
3 mua thu
 
27.09.16
19:10
Сорри, все - вопрос закрыт))

Решение такое нашел:


// Функция "расщепляет" строку на подстроки, используя заданный

//      разделитель. Разделитель может иметь любую длину.
//      Если в качестве разделителя задан пробел, рядом стоящие пробелы

//      считаются одним разделителем, а ведущие и хвостовые пробелы параметра Стр
//      игнорируются.

//      Например,
//      РазложитьСтрокуВМассивПодстрок(",один,,,два", ",") возвратит массив значений из пяти элементов,

//      три из которых - пустые строки, а
//      РазложитьСтрокуВМассивПодстрок(" один   два", " ") возвратит массив значений из двух элементов

//
//  Параметры:

//      Стр -           строка, которую необходимо разложить на подстроки.
//                      Параметр передается по значению.

//      Разделитель -   строка-разделитель, по умолчанию - запятая.
//

//  Возвращаемое значение:
//      массив значений, элементы которого - подстроки

//
Функция РазложитьСтрокуВМассивПодстрок(Знач Стр, Разделитель = ",") Экспорт
    
    МассивСтрок = Новый Массив();
    Если Разделитель = " " Тогда
        Стр = СокрЛП(Стр);
        Пока 1 = 1 Цикл
            Поз = Найти(Стр, Разделитель);
            Если Поз = 0 Тогда
                МассивСтрок.Добавить(Стр);
                Возврат МассивСтрок;
            КонецЕсли;
            МассивСтрок.Добавить(Лев(Стр, Поз - 1));
            Стр = СокрЛ(Сред(Стр, Поз));
        КонецЦикла;
    Иначе
        ДлинаРазделителя = СтрДлина(Разделитель);
        Пока 1 = 1 Цикл
            Поз = Найти(Стр, Разделитель);
            Если Поз = 0 Тогда
                Если (СокрЛП(Стр) <> "") Тогда
                    МассивСтрок.Добавить(Стр);
                КонецЕсли;
                Возврат МассивСтрок;
            КонецЕсли;
            МассивСтрок.Добавить(Лев(Стр,Поз - 1));
            Стр = Сред(Стр, Поз + ДлинаРазделителя);
        КонецЦикла;
    КонецЕсли;
    
КонецФункции
4 mkalimulin
 
27.09.16
19:22
(3) Есть стандартная функция стрРазделить()
5 youalex
 
27.09.16
19:23
(0) может прокатить:

СписокКодов = ","+ СписокКодов + ","

//в запросе:
ГДЕ &СписокКодов  ПОДОБНО "%," + СпрКонтрагенты.Код + ",%"