Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 12:58

Поиск по вхождению в строке

Автор Анжела, 01 сен 2018, 01:29

0 Пользователей и 1 гость просматривают эту тему.

Анжела

Здравствуйте друзья, столкнулся с задачей.
Есть некая таблица значений, содержащая данные.
Читаю ее запросом, в ней есть поле "Наименование" это может быть и компутер и системный блок и вдеокарта и роутер и принтер.
Для всех этих элементов есть специальный справочник, куда по категориям надо все запхать.
Как мне определить по вхождению в строку, что куда пихать. Условие то напишу не сложно будет определить зная точное вхождение.

Например:
ВыборкаДетальныеЗаписи.Наименование здесь у меня точно наименование "компутер Acer 5232" по условию буду хочу проверять на вхождение "компутер" если подошел запишу в нужную группу.
Вторая итерация "Системный блок" проверяю на "Компутер" = ложь иначе ..... доходим до "Системный" условие и в нужную группу. Есть у кого нибудь мысли или опыт реализации. Я что то не нашел, вообще в 1с проверки вхождения в строку

А вообще план мыслей такой. Выбираю ИЗ Таблицы значений мое наименование и помещаю во временную таблицу, выбираю вторым запросом сам группы куда помещать в третьем все соединяю по условию получаю нужные данные.
Пожалуйста подскажите верно ли думаю, Я немного запутался. Не могу все скомпоновать.

Анжела

В консоле отработало

ВЫБРАТЬ
Номенклатура.Наименование,
Тест.Наименование КАК Наименование1
ИЗ
Справочник.Номенклатура КАК Номенклатура
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Тест КАК Тест
ПО (Номенклатура.Наименование ПОДОБНО "%" + Тест.Наименование + "%")


В коде нет. Где ошибка, подскажите пожалуйста

Запрос = Новый Запрос;
//МенеджерВТ = Новый МенеджерВременныхТаблиц;
//Запрос.МенеджерВременныхТаблиц = МенеджерВТ;
Запрос.Текст =
"ВЫБРАТЬ
| Номенклатура.Код,
| Номенклатура.Наименование
|ИЗ
| Справочник.Номенклатура КАК Номенклатура";

РезультатЗапроса = Запрос.Выполнить();
ТЗ = РезультатЗапроса.Выгрузить(ОбходРезультатаЗапроса.Прямой);

Запрос2 = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ТЗ.Наименование КАК Наименование
|ПОМЕСТИТЬ ТЗ
|ИЗ
| &ТЗ КАК ТЗ
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| Тест.Наименование,
| ТЗ.Наименование КАК Наименование1
|ИЗ
| Справочник.Тест КАК Тест
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТЗ КАК ТЗ
| ПО (Тест.Наименование ПОДОБНО ""%"" + ТЗ.Наименование + ""%"")";

Запрос.УстановитьПараметр("ТЗ", ТЗ);
Результат  = Запрос.Выполнить();
Выборка = Результат.Выбрать();

Пока Выборка.Следующий() Цикл

КонецЦикла;




AIFrame

Цитата: Анжела от 01 сен 2018, 05:00ОбходРезультатаЗапроса.Прямой
Нет смысла, ибо 1. он по умолчанию прямой 2. У тебя нет группировок по иерархии, чтобы вообще что-то там указывать.
Цитата: Анжела от 01 сен 2018, 05:00В консоле отработало
ПО (Номенклатура.Наименование ПОДОБНО "%" + Тест.Наименование + "%")

Цитата: Анжела от 01 сен 2018, 05:00В коде нет.
|        ПО (Тест.Наименование ПОДОБНО ""%"" + ТЗ.Наименование + ""%"")";
Внимательно смотри.


Похожие темы (5)

Рейтинг@Mail.ru

Поиск