Разбитие номенклатуры на артикул, наименование, бренд. Нетленка
Понадобилось в самописке разбить наименование на артикул, наименование, бренд. Причем бренд сделан справочником. Пример:
3410 Киянка Taka => 3410|Киянка|Taka
Нашел в интернете примерно похожий код и наспех облагородил его в виде обработки:
Код обработки:
&НаСервере Процедура ОбработатьНаСервере() //Образец кода взят отсюда https://forum.mista.ru/topic.php?id=669265 ЗапросНом = Новый Запрос; ЗапросНом.Текст = "ВЫБРАТЬ | Номенклатура.Наименование КАК Наименование, | Номенклатура.Ссылка КАК Ссылка |ИЗ | Справочник.Номенклатура КАК Номенклатура |ГДЕ | НЕ Номенклатура.ЭтоГруппа | И НЕ Номенклатура.ПометкаУдаления"; Результат = ЗапросНом.Выполнить(); ВыборкаНом = Результат.Выбрать(); Пока ВыборкаНом.Следующий() Цикл Наим = СокрЛП(ВыборкаНом.Наименование); М = СтрРазделить(Наим, " ", ложь); Если М.Количество() < 3 Тогда Продолжить; КонецЕсли; Артикул = СокрЛП(М[0]); Бренд = СокрЛП(М[М.Количество() - 1]); М.Удалить(М.Количество()-1); М.Удалить(0); НаименованиеКраткое = СокрЛП(СтрСоединить(М, " ")); Сообщить("" + Наим + " => " + Артикул + "|" + НаименованиеКраткое + "|" + Бренд); Если Записывать Тогда ОО = ВыборкаНом.Ссылка.ПолучитьОбъект(); ОО.БрендТовара = ДатьБренд(Бренд); ОО.НаименованиеКраткое = НаименованиеКраткое; ОО.Артикул = Артикул; ОО.Записать() КонецЕсли; КонецЦикла; КонецПроцедуры &НаКлиенте Процедура Обработать(Команда) ОбработатьНаСервере(); КонецПроцедуры Функция ДатьБренд(Наименование) Экспорт ЗапросБрендов = Новый Запрос; ЗапросБрендов.Текст = "ВЫБРАТЬ | Бренды.Наименование КАК Наименование, | Бренды.Ссылка КАК Ссылка |ИЗ | Справочник.БрендыТоваров КАК Бренды |ГДЕ | Бренды.Наименование = &Наименование"; ЗапросБрендов.УстановитьПараметр("Наименование", Наименование); Результат = ЗапросБрендов.Выполнить(); ВыборкаБрендов = Результат.Выбрать(); Если ВыборкаБрендов.Следующий() Тогда Возврат ВыборкаБрендов.Ссылка; КонецЕсли; Если НЕ Записывать Тогда Возврат Неопределено; КонецЕсли; ОО = Справочники.БрендыТоваров.СоздатьЭлемент(); ОО.Наименование = Наименование; ОО.Записать(); Возврат ОО.Ссылка; КонецФункции
Обработку прилагаю:
Среда: Нетленка. Объем: 0.8 час.
Свежие комментарии