8.х Врег в Запросе

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем moos, 18 сен 2007.

  1. TopicStarter Overlay
    moos
    Offline

    moos

    Регистрация:
    18 сен 2007
    Сообщения:
    2
    Симпатии:
    0
    Баллы:
    1
    Добрый день.
    Необходимо составить запрос к справочнику, который получил бы выборку наименований в верхнем регистре.
    Т.е. например, в справочнике "Контрагенты" есть один элемент ООО "ИТако". Надо чтобы запрос вернул ООО "ИТАКО".

    Это мне необходимо для поиска вхождений (используя в запросе «ПОДОБНО») вне зависимости от регистра букв строки поиска.

    Тот же метод перебором работает очень медленно, так как Контрагентов десятки тысяч. Вот "медленный код":
    Выборка = Справочники.Контрагенты.Выбрать();
    Пока Выборка.Следующий() Цикл
    ТекСсылка = Выборка.Ссылка;
    ТекНаименование = ВРег(СокрЛП(ТекСсылка.Наименование));
    Если Найти(ТекНаименование, ВРег(СокрЛП(СтрокаПоиска))) > 0 Тогда
    СтрокаТаблицаНайденныхОбъектов = ТаблицаНайденныхОбъектов.Добавить();
    СтрокаТаблицаНайденныхОбъектов.Контрагент = ТекСсылка;
    КонецЕсли;
    КонецЦикла;

    Подскажите, возможно, ли решить данную задачу при помощи языка запросов 1С 8.
  2. Greck
    Offline

    Greck Опытный в 1С

    Регистрация:
    11 дек 2006
    Сообщения:
    94
    Симпатии:
    0
    Баллы:
    26
    Конечно можно щас напишу как :)
  3. TopicStarter Overlay
    moos
    Offline

    moos

    Регистрация:
    18 сен 2007
    Сообщения:
    2
    Симпатии:
    0
    Баллы:
    1
    Вопрос решен. Тема закрыта.
  4. Greck
    Offline

    Greck Опытный в 1С

    Регистрация:
    11 дек 2006
    Сообщения:
    94
    Симпатии:
    0
    Баллы:
    26
    Давай решение в студию, а то я так и не смог вчера добится на языке запросов этого сходу :unsure:
  5. Deep
    Offline

    Deep

    Регистрация:
    20 мар 2008
    Сообщения:
    1
    Симпатии:
    0
    Баллы:
    1
    Код:
    Функция ПостроитьШаблонДляПодобно(Значение = "")
    Рез = "";
    Если СтрДлина(Значение) > 0 тогда
    Для Сч = 1 по СтрДлина(Значение) Цикл
    Рез = Рез + "["+ВРЕГ(сред(Значение,Сч,1))+НРЕГ(сред(Значение,Сч,1))+"]";
    КонецЦикла;
    КонецЕсли;
    возврат Рез;
    КонецФункции
    
    Функция Поиск(Значение)
    СписокНоменклатуры = Новый СписокЗначений;
    
    Запрос = Новый Запрос("ВЫБРАТЬ
    |	Номенклатура.Ссылка
    |ИЗ
    |	Справочник.Номенклатура КАК Номенклатура
    |ГДЕ
    |	Номенклатура.Наименование ПОДОБНО &Значение");
    Запрос.УстановитьПараметр("Значение1", ?(ЗначениеЗаполнено(Значение), "%"+ПостроитьШаблонДляПодобно(Значение)+"%", ""));
    Выборка = Запрос.Выполнить().Выбрать();
    Пока Выборка.Следующий() Цикл
    СписокНоменклатуры.Добавить(Выборка.Ссылка);
    КонецЦикла;
    Возврат СписокНоменклатуры;
    КонецФункции
    
Похожие темы
  1. Dmitrij
    Ответов:
    5
    Просмотров:
    629
  2. бухг123
    Ответов:
    12
    Просмотров:
    2.733
Загрузка...

Поделиться этой страницей