Имя: Пароль:
1C
1С v8
v8: Поиск по артикулу
0 palladyi
 
26.12.13
10:47
Добрый день!
Поставили задачу - не могу понять с какой стороны подойти к решению.
Нужно найти элемент номенклатуры по артиклу, но без спец символов.
то есть у нас есть артикул к примеру: 0556-32*
нужно найти его по значению 055632
1 Леопольд Роскошный
 
26.12.13
10:48
в запросе, ключевое слово подробно
2 IamNotAlexy
 
26.12.13
10:49
3 Леопольд Роскошный
 
26.12.13
10:50
(1) http://help1c.com/faq/view/852.html

(2) ну или так
4 Поpyчик-4
 
26.12.13
10:52
(0) Полнотекстовый поиск или держать второе поле с нормализованным значением и искать по нему.
5 palladyi
 
26.12.13
10:54
хм... Спасибо, попробую все варианты, посмотрим, что быстрее отработает.
6 palladyi
 
26.12.13
12:56
что-то не получается, пишу после каждого символа из введенного артикула "_", затем получившуюся строку использую как шаблон для ПОДОБНО, но поиск все равно ничего не дает.
7 palladyi
 
26.12.13
12:59
все, получилось!
8 palladyi
 
26.12.13
13:00
Спасибо всем!

если кому поможет - выкладываю текст.
поле Артикул - вводится на форме.


Для Н = 1 По СтрДлина(Артикул) - 1 Цикл
        АртШаблон = "%" + АртШаблон + Сред(Артикул, Н, 1) + "_";
    КонецЦикла;
    АртШаблон = АртШаблон + "%";
                                                            
    Запрос = Новый Запрос;
    Запрос.Текст = "
    |ВЫБРАТЬ
    |    Номенклатура.Ссылка
    |ИЗ
    |    Справочник.Номенклатура КАК Номенклатура
    |ГДЕ
    |    Номенклатура.Артикул ПОДОБНО &Арт";
    Запрос.УстановитьПараметр("Арт", АртШаблон);
    Выборка = Запрос.Выполнить().Выбрать();
    Пока Выборка.Следующий() Цикл
        Ном = Выборка.Ссылка.ПолучитьОбъект();
        Форма = Ном.ПолучитьФорму("ФормаЭлемента");
        Форма.Открыть();
    КонецЦикла;