Подскажите как разложить строку

1. Raideres 8 30.01.21 08:44 Сейчас в теме
Как разложить ячейку вида товар 100 x 1= 275.00

например
Лизобакт таб. д/рассас. №30 275.00 x 1 = 275.00
Ромашки цветки пак.-фильтр 1,5г №20 45.00 x 1 = 45.00
Тест-полоска Accu-Chek Active №100 1700.00 x 1 = 1700.00
Прикрепленные файлы:
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. spacecraft 30.01.21 09:04 Сейчас в теме
(1) как-то так:
МассивСтрок = СтрРазделить(ВхСтрока," ", Ложь);
РазмерМассива = МассивСтрок.Количество();
Если РазмерМассива > 4 Тогда
	Попытка
		Цена = Число(МассивСтрок[РазмерМассива-5]);
		Количество = Число(МассивСтрок[РазмерМассива-3]);
		Сумма = Число(МассивСтрок[РазмерМассива-1]);
	Исключение
		Сообщить("Ошибка формата");
	КонецПопытки;
КонецЕсли;
Показать
3. Raideres 8 30.01.21 10:43 Сейчас в теме
(2)Спасибо итоговое разбитие у меня вот так вышло
Массив = СтрРазделить(стр.N34, Символы.ПС, Ложь);
		Если Массив.Количество()=0 Тогда
			Продолжить;
		КонецЕсли;          
		Для каждого строка  Из Массив Цикл
			
		МассивСтрок = СтрРазделить(строка, " ", Ложь);
		РазмерМассива = МассивСтрок.Количество();
		
		Если РазмерМассива > 4 Тогда
			Попытка
				Наименование = "";
				
				Для Н = 0 По Число(РазмерМассива - 6)Цикл
				Наименование = СокрЛП(Наименование + " "+МассивСтрок[Н]); 	
				КонецЦикла;
				
				Цена = Число(МассивСтрок[РазмерМассива-5]);
				Количество = Число(МассивСтрок[РазмерМассива-3]);
				Сумма = Число(МассивСтрок[РазмерМассива-1]);
			Исключение
				Сообщить("Ошибка формата");
			КонецПопытки;
		КонецЕсли;
	КонецЦикла;
	 Сообщить(Наименование+" "+Цена+"*"+Количество+"="+Сумма);
Показать
9. user856012 13 30.01.21 16:23 Сейчас в теме
(3)
Спасибо итоговое разбитие у меня вот так вышло
Ну что же, вполне работоспособное решение.

Лично я бы раскладывал по следующему алгоритму:
1. Разбирал бы строку справа налево (от конца к началу).
2. Все, что правее первого (с учетом п.1 - последнего) нецифрового знака (т.е. "=" или пробел) - это сумма.
3. Все, что левее суммы и правее первого нецифрового знака ("х", "*" или пробел) - это количество.
4. Все, что левее количества с первого нецифрового знака (пробел) - наименование.

Готовый код писать не стану, учитывая, что автора ветки вполне устроило разложение по номерам подстрок... .. до первого изменения в формате строки.
4. Fox-trot 158 30.01.21 14:35 Сейчас в теме
имхо проще/правильнее за знак умножения зацепиться
5. spacecraft 30.01.21 15:39 Сейчас в теме
(4) учитывая что в данном случае "знак умножения" это обычная буква "х"...
6. Fox-trot 158 30.01.21 15:54 Сейчас в теме
для функции СтрНайти() этот символ будет всегда первым справа
7. spacecraft 30.01.21 16:02 Сейчас в теме
(6) вы бы код привели, чтобы оценить всю глубину мысли
8. Fox-trot 158 30.01.21 16:03 Сейчас в теме
(7) не магу, я сейчас на работе
Оставьте свое сообщение

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