Имя: Пароль:
1C
1С v8
Помогите с поиском похожих артикулов!
0 tciban
 
23.04.21
14:29
Уважаемые коллеги! Есть база со справочником Номенклатура, есть реквизит Артикул. И есть задачка от клиента, сформулированная так:
"Нужно контролировать ввод Артикула. Совпадающим считать артикул если набор символов без знаков препинания точно совпадает с набором символов без знаков препинания артикула, который уже есть в базе

Знаки препинания, которые игнорируются: пробел, двойные кавычки, апостроф (одинарные кавычки), скобки, дефис, тире, слеш, обратный слеш, звездочка, плюс, запятая, точка с запятой, решетка, точка

Пример: в базе есть NPort 5110-T/W(1)
Будет ошибка, если оператор набирает:
NPort5110TW1

NPort 5110 T-W1

Nport-5110-T/W(1)
и тп"

Подскажите пути решения?! Как сделать? Через Подобно в запросе? Тогда какой шаблон? Есть еще идея сохранять артикул, очищенный от "знаков препинания" в отдельном реквизите (или в регистре сведений) и там потом искать. Но если б сделать через Подобно - было б проще и красивее.
1 программистище
 
23.04.21
14:34
Подобно медленно, второй вариант с реквизитом предпочтительнее
2 Chameleon1980
 
23.04.21
14:35
сохраняй дополнительно артикул без знаков в доп реквизит
пере записью ищи запросом на равенство нового артикула без знаков
3 Базис
 
naïve
23.04.21
14:35
У тебя нормально написано, так и делай. Реестр ещё нормализуй. Потом, если мало будет, расстояние Левенштейна считай для каждого существующего, но это сильно больше рассчётов.
4 SSSSS_AAAAA
 
23.04.21
14:38
(0)
Примерно так:
СтрЗам(Артикул, "'()-\|/*+,;#. "+симв(39), "")
5 Garykom
 
гуру
23.04.21
14:41
(0) Замены символов УЧИTЫBATЬ ?
6 Garykom
 
гуру
23.04.21
14:42
(5)+ рус/лат одинаковые могут быть

А задачка решается через https://ru.wikipedia.org/wiki/Хеш-таблица
7 Garykom
 
гуру
23.04.21
14:43
(0) через подобно не пойдет, точнее можно но слишком долго искать будет
8 Garykom
 
гуру
23.04.21
14:43
(6) "Есть еще идея сохранять артикул, очищенный от "знаков препинания" в отдельном реквизите (или в регистре сведений) и там потом искать." - вот это оно самое
9 tciban
 
23.04.21
14:49
(6) "рус/лат одинаковые могут быть " - Я не стал писать, но сначала идет проверка что бы не было кирилицы в артикуле.
10 tciban
 
23.04.21
14:52
(8) Ок, если сохранять "очищенный артикул" то куда лучше - реквизит в справочнике или все ж регистр сведений для скорости? Впрочем справочник не слишком большой, за скорость можно не убиваться. 92 тыс. записей (с группами)