Имя: Пароль:
1C
1С v8
Поиск артикула в наименовании
0 sereban
 
26.08.11
11:49
Есть прайс от поставщика, в котором названия товаров выглядят таким образом:

FCN89024 З/п"Колгейт"свеж.дых.50мл.
8670281 Део тв."Рексона"кислород 40г.
FTR22295 Гель-душ"Палмолив"энергия 250мл.
3866 М/с"Фейри"зелен.яблоко 500мл.

А некоторые позиции вообще без артикулов.
Прайс порядка 8000 тысяч позиций. При помощи задания шаблона в операторе ПОДОБНО можно определить есть ли артикул в Наименовании. А существует ли возможность выбрать запросом сами артикулы?

Слышал что возможно реализовать при помощи регулярных выражений. Может кто сталкивался с подобной задачей?
1 Ненавижу 1С
 
гуру
26.08.11
11:51
(0) СКД
2 sereban
 
26.08.11
11:52
(1) А по-подробнее?
3 Ненавижу 1С
 
гуру
26.08.11
11:53
(2) в СКД можно юзать произвольные пользовательские функции
например

Лев(Реквизит,Найти(Реквизит," ")-1)
4 sereban
 
26.08.11
11:59
Через найти не получится, нет точного значения строки поиска. Там может быть произвольная последовательность цифр или сначала буквы потом цифры
5 Ненавижу 1С
 
гуру
26.08.11
12:00
(4) а я ищу пробел вообще то
6 Eugeneer
 
26.08.11
12:01
(0) сталкивался. написал загрузку из экселя в которой сделал более 10 вариантов поиска, плюс полнотекстовый поиск если вообще ничерта нету по чем бы сходилось.
7 Ненавижу 1С
 
гуру
26.08.11
12:03
(6) кроме как хвастаться, что умеешь?
8 sereban
 
26.08.11
12:06
(5) Если искать пробел, а артикула нет в наименовании, то выдернет первое слово из названия
9 Eugeneer
 
26.08.11
12:07
Артикул может быть в любом месте в наименовании. спереди/сзади/где попало. Размер артикула может быть какой угодно.
10 Ненавижу 1С
 
гуру
26.08.11
12:07
(8) как отличить артикул от просто слова?
(9) тогда практически невозможно выдернуть
11 shuhard
 
26.08.11
12:07
(8) Маня прав
случай тривиальный
бери первое слово
проверяй на цифры и латиницу, считай артикулом
12 Eugeneer
 
26.08.11
12:09
Причем может быть варианты:
1) в файле в строке есть артикул / в базе его нет в поле артикула, но есть в наименовании где попало
2) в файле нету артикула в колонке, но есть в наименовании строки экселя / в базе есть артикул
3) в файле нету артикула в отдельной колонке, но есть в наименовании / в базе нету артикула у номенклатуры, но тоже есть в наименовании причем расходится с строкой файла.
4) артикул есть в загрузке но символьно что то не совпадает (лишний пробел, лишние знакм, черточки, галочки, или целые лишние слоги)
13 shuhard
 
26.08.11
12:10
(12) угу
+ большие/маленькие буквы
14 Eugeneer
 
26.08.11
12:11
Тут только точно может помочь специальная обработка которая бы показывала результаты поиска. Только так можно отладить необходимый поиск
http://subsystems.ru/upload/iblock/c0e/c0ea82a1aeaaabd371c99ee1dd7b809b.png
http://subsystems.ru/upload/iblock/151/1514f70aca2de02b772b52da447bcfdf.png
15 Ненавижу 1С
 
гуру
26.08.11
12:13
(14) заипал рекламировать свои протухшие поделки
16 Eugeneer
 
26.08.11
12:13
А еще может быть
5) артикул есть в файле/ есть артикул в базе - НО это совершенно другая номенклатура.
17 shuhard
 
26.08.11
12:15
(16) угу
вариантов до фига
полнотекстовый поиск лучшее решение
18 Eugeneer
 
26.08.11
12:15
(15) тебе что не нравится? я что то рекламирую?? заипал флудить в теме. Никуя человеку помочь не можешь какую то куйню советуешь. еще и возникаешь.
19 Eugeneer
 
26.08.11
12:16
(10) "(9) тогда практически невозможно выдернуть"
Иди гуляй Вася. Не умеешь - бросай в 1С работать.
20 shuhard
 
26.08.11
12:17
(17) уймись
реклама на форуме конечно запрещена правилами
[Не публикуйте рекламные объявления]
21 Ненавижу 1С
 
гуру
26.08.11
12:18
(18)(19) хахаха, ты смотрю помог
в общем случае вытащить не вариант
вот строка
"БАК АВАТАР" где здесь артикул? возможно это "БАК", а возможно "АВАТАР", ну и возможно его вообще нет
включи логику, хотя как ты хреню пишешь, то не взлетит
22 Eugeneer
 
26.08.11
12:19
(21) если в базе естьв артикулах любое из этих слов значит найти его можно!
23 Ненавижу 1С
 
гуру
26.08.11
12:20
(22) а кто сказал что в базе есть? поставщик прислал новый товар и надо его загрузить
24 Eugeneer
 
26.08.11
12:23
(23) ну так стоят задачи.
1) найти по максимуму номенклатуру
2) если не нашлась то это новая.
Мы же не обсуждаем тут новую. Автор хочет алгоритмы именно поиска номенклатуры чтобы избежать дублирования
25 Eugeneer
 
26.08.11
12:25
Вообще все очень просто делается. Алгоритм простой.

Бежим по выборке файла.
Получаем строку с артикулом и наименованием.
Ищем по артикулу стандартно, плюс наименованию.
Не находим. Ищем дальше.
Допустим вариант. нету артикула в файле отдельной колонкой. он в наименовании.

Раскладываем наименование по словам и делаем подзапросы по словам по поиску в базе по артикулу.
Вот и вариант решения. Один из ситуаций.
26 shuhard
 
26.08.11
12:25
(23) может быть и такое
100% решения задачи нет, но 99% обеспечивается

я писал загрузчик для Price.ru
вендоров было штук 20
каждый со своим форматом
27 Eugeneer
 
26.08.11
12:26
(26) Хм. может нам есть что по личке обсудить?
28 shuhard
 
26.08.11
12:27
(26) вряд ли
загрузчик был для SAP B1
и писался на Access
29 Ненавижу 1С
 
гуру
26.08.11
12:27
(27) вызови на дуэль, только приедь на логане
30 sereban
 
26.08.11
12:53
Извиняюсь, я немного отлучился и тут без меня нагородили что-то непонятное.
(10) Артикул отличается от простого слова:
1. Это последовательность цифр в начале Наименования
2. Это несколько букв + последовательность цифр в начале Наименования

И есть позиции, в которых нет артикула. Задача найти артикул в наименовании, чтобы его можно было оттуда просто удалить за ненадобностью(наименование попадет в интернет магазин). Для какого-либо поиска артикул не нужен(есть отдельная колонка ИД - с артикулом не связана).
Прайс 8000 строк - большой. Загрузка каждый день. + Будут еще прайсы от других поставщиков с подобными проблемами. Загрузка тоже каждый день.
Конечно в цикле перелопатить все наименования можно, проверить первое слово на наличие цифр и убрать его. Но какой то "костыль" получается. Хотелось бы запросом или еще как то это оптимизировать. Про запрос писал в начале темы
31 Ненавижу 1С
 
гуру
26.08.11
12:55
(30) найти первый пробел, установить что ДО него стоит символ цифра
все это в СКД - пользовательские функции
32 sereban
 
26.08.11
12:55
Ненавижу 1С как я понимаю если вместо цикла использовать скд с вызовом процедуры общего модуля, то работать быстрее будет. или нет?
33 Ненавижу 1С
 
гуру
26.08.11
12:56
(32) хз, но в клиент-серверном варианте скорее всего да
34 sereban
 
26.08.11
12:56
Спасибо. Буду пробовать