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

1. HaIIpuKoJIe 18.09.18 14:57 Сейчас в теме
Добрый день. Вся номенклатура в базе имеет название типа "Труба 1м Ø 120". При печати этикетки нужно печатать "120" крупным шрифтом что-бы издалека на складе видели какой это диаметр. Можно создать дополнительный реквизит и печатать его крупным шрифтом на макете этикетки. Подскажите как можно массово из наименования номенклатуры выдернуть именно "120" и скопировать в доп реквизит? Может быть есть что то типа скопировать три знака после значка Ø?
По теме из базы знаний
Найденные решения
2. DenisCh 18.09.18 14:59 Сейчас в теме
Есть.
Сред(ТвояСтрока, стрНайти(ТвояСтрока, ТвойСимвол) + 1, 3)

где-то так
alex-l19041; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
5. Doreng 27 18.09.18 15:15 Сейчас в теме
(1)Чуть сложнее, но можно так
ПравильныеСимволы = "0 123456789";
ДиаметрТрубы = "";
НачальныйСимвол = СтрНайти(Строка.Наименование, "Ø") + 1;
Для Сч = НачальныйСимвол По СтрДлина(Строка.Наименование) Цикл
Если СтрНайти(ПравильныеСимволы,Сред(Строка.Наименование,Сч,1) <> 0 
И СтрНайти(ПравильныеСимволы,Сред(Строка.Наименование,Сч,1) <> 2 Тогда
ДиаметрТрубы = ДиаметрТрубы + Сред(Строка.Наименование,Сч,1);
ИначеЕсли СтрНайти(ПравильныеСимволы,Сред(Строка.Наименование,Сч,1) = 0 Тогда
Прервать;
КонецЕсли;
КонецЦикла;
Показать

Так можно обработать "Труба 1м Ø 120" и "Труба 1м Ø 120/23" и и "Труба 1м Ø 120 *23"
8. user1051031 19.09.18 12:37 Сейчас в теме
Очень понравился пример с регулярными выражениями, меня бы понесло в что-то типа (5)
2. DenisCh 18.09.18 14:59 Сейчас в теме
Есть.
Сред(ТвояСтрока, стрНайти(ТвояСтрока, ТвойСимвол) + 1, 3)

где-то так
alex-l19041; +1 Ответить
3. Boneman 298 18.09.18 15:02 Сейчас в теме
ну или
Значение = Прав(ТвояСтрока, 3);

Вообще, конечно надо справочник просмотреть, чтобы уловить общую картину, и уже по ней построить алгоритм парсинга.
Использовать, конечно, примитивные функции работы со строками.
user916115; +1 Ответить
4. VmvLer 18.09.18 15:05 Сейчас в теме
мЭлементыНаименования = СтрРазделить(ТоварНаименование, "Ø", Ложь);
Если  мЭлементыНаименования.Количество() > 1 Тогда
    Диаметр = СокрЛП(мЭлементыНаименования[1]);
Иначе
    Диаметр = ""; 
КонецЕсли;
alex-l19041; +1 Ответить
6. Skill 18.09.18 16:10 Сейчас в теме
В вашем случае хорошо помогут регулярные выражения.
Здесь можно создать шаблон который загоняется в Pattern - https://regex101.com/
Вот кусок кода для помощи
RegExp = Новый COMОбъект("VBScript.RegExp");    // создаем объект для работы с регулярными выражениями
    
    //Заполняем данные
    RegExp.MultiLine = Ложь;                  // истина — текст многострочный, ложь — одна строка
    RegExp.Global = Истина;   // истина — поиск по всей строке, ложь — до первого совпадения
    RegExp.IgnoreCase = истина;        // истина — игнорировать регистр строки при поиске
	//RegExp.Pattern = "\d+х\d+х\d+";  //1200x485x444
	//RegExp.Pattern = "\d+x\d+";  //1200x485

	МассивРазмеров = Новый Массив;
	ТаблицаДопРеквизитов = Новый ТаблицаЗначений;
	ТаблицаДопРеквизитов.Колонки.Добавить("Свойство", Новый ОписаниеТипов("ПланВидовХарактеристикСсылка.ДополнительныеРеквизитыИСведения"));
	ТаблицаДопРеквизитов.Колонки.Добавить("Значение");
	
	Пока Выборка.Следующий() Цикл 
		RegExp.Pattern = "\d+.\d+[х,x,\/]\d+.\d+[х,x,\/]\d+.\d+";
		Matches = RegExp.Execute(Выборка.Наименование);
		Если ЗначениеЗаполнено(Matches) Тогда 
			Match = Matches.Item(0);
Показать
7. Skill 18.09.18 16:20 Сейчас в теме
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот