Разбитие номенклатуры на артикул, наименование, бренд. Нетленка

Понадобилось в самописке разбить наименование на артикул, наименование, бренд. Причем бренд сделан справочником. Пример:

3410 Киянка Taka => 3410|Киянка|Taka

Нашел в интернете примерно похожий код и наспех облагородил его в виде обработки:

Код обработки:


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

КонецПроцедуры

&НаКлиенте
Процедура Обработать(Команда)
	ОбработатьНаСервере();
КонецПроцедуры

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

Обработку прилагаю:

Среда: Нетленка. Объем: 0.8 час.

fixin

Программирую на 1С с 1999 года. В 1С просто Гений. В 2020 году ушел из офиса на вольные хлеба фриланса. Принимаю заказы.

Читайте также:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *