Здравствуйте. Попадаются прайсы без отдельной колонки для артикулов. Артикул, размеры, свойство товара находятся в строке с наименованием. Как вариант решения проблемы в голову пришла идея использовать регулярные выражения в алгоритмах. Пошерстив интернет понял встроенного механизма нет. Но есть возможность подключить библиотерку RegExp с использованием технологии COM. И тут же на глаза попалась статейка как это сделать. Само подключение выглядит как то так:
Код
RegExp = Новый COMОбъект("VBScript.RegExp");
Но вот при выполнении этого алгоритма выскакивает ошибка
1с у нас клиент - сервер
Через конфигуратор для пользователя отключил защиту от опасных действий. Таже самая ошибка.
Подскажите пожалйста что не так, и вообще возможно подключение COM объектов в алгоритмах Мегапрайс ?
По поводу COM - использовать можно в алгоритмах поиска. Там вообще можно любой код использовать, но не все сервера поддерживают COM.
По поводу артикулов в наименованиях - эти задачи давно решены. В настроках есть два алгоритма, которые ищут вхождения артикулов в наименования - как и в справочнике, так и если оно в наименованиях поставщика.
Никаких библиотек не нужно, в запросах достаточно использовать метод ПОДОБНО.
Вот как используется это в готовом поисковом варианте "Искать артикул в наименовании справочника"
| ПО (СпрНоменклатура.Наименование ПОДОБНО ""%"" + ВременнаяДанныеПоиска.Поле_Артикул + ""%"")
Полный алгоритм нужного варианта (как пример) я могу скинуть в скайп. В нем будет полный алгоритм поиска, который можно модифицировать или написать любой свой алгоритм.
Если артикулы содержат какой то мусор (пробелы, прочерки, дефисы и прочее) есть опция предварительной чистки мусора.
вот статься, как через фабрикуXDTO регулярные выражения делать https://infostart.ru/1c/articles/464971/ Правда, насколько я помню, там подтверждение найденного выдается. Давно пользовался, тонкости забыл
Что касается поисковых алгоритмов Мегапрайса, то лично я перешел на собственные, так как во встроенных не учитывается разделитель. Я добавил в формулу, чтобы искало вхождение артикула, но только с пробелом или скобкой перед ним(после него) Так как иногда артикулы бывают одинаковыми, но длиннее на одну или две буквы. И поиск с учетом разделения слов решает проблему неправильного сопоставления короткого артикула модели с удлиненным артикулом это решает
написал: По коротким и длинным артикулам - в настройках поиска два готовых варианта которые это учитывают.
И как я писал выше в 1С используется ПОДОБНО.
Вы не читаете то, на что отвечаете. Ваш код без учета разделителей и длины артикула путал РАНЬШЕ между собой UltraStation 16/10 128 UltraStation 16/10 128-I UltraStation 16/10 SE UltraStation 16/10 SE 128 UltraStation 16/10 SE 128-I UltraStation 16/10 SE-I UltraStation 16/10-I UltraStation 16/10
т.е. вместо UltraStation 16/10 128 подставит более короткий UltraStation 16/10 вместо UltraStation 16/10 128-I подставит более короткий UltraStation 16/10 128 Поэтому я добавил проверку на дубли по своей номенклатуре и если она повторяется, то убираю дубли с самым коротким входным артикулом. Соответственно, во втором алгоритме наоборот. В зависимости, какой базовый алгоритм был переработан - с более коротким нашим или более коротким поставщика. Возможно, теперь, после добавления на проверку дублей вы проверяете на длину совпадения, а не просто все дубли удаляете кроме первого.