Как в 1С скопировать все символы справа до пробела

1. user2001016 13.10.23 00:13 Сейчас в теме
Здравствуйте, задача такая.
Дана строка "23452 Карандаш зеленый кол-во 340"
Последнее это цена
Цены разные по длине, надо посчитать сумму
Как скопировать все справа до пробела
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. user856012 14 13.10.23 01:00 Сейчас в теме
(1)
Как скопировать все справа до пробела
Можно при помощи функции СтрРазделить(МояСтрока," ") преобразовать строку в массив и "скопировать" последний элемент этого массива.
3. karamazoff 118 13.10.23 01:18 Сейчас в теме
(2)или
Число СтрНайти(ИсходнаяСтрока, ПодстрокаПоиска, [НаправлениеПоиска], [НачальнаяПозиция], [НомерВхождения])
искать с конца пробел
4. user856012 14 13.10.23 02:27 Сейчас в теме
(3) Угу, если автор знает о существовании функции Сред()... что совсем не очевидно
5. user5300 1063 13.10.23 08:49 Сейчас в теме
6. user856012 14 13.10.23 09:38 Сейчас в теме
(5) Вы, наверное, опечатались - хотели написать "Прав!"? :-)

Потому что если вы поправляете меня, то не затруднит ли вас привести код, решающий задачу автора, с использованием функции Прав()?

P.S. И без использования функции СтрДлина()! ;-)
7. anton13m 3 13.10.23 10:00 Сейчас в теме
(6)
Стр = "23452 Карандаш зеленый кол-во 340";
ПоследнийПробел = СтрНайти(Стр, " ", НаправлениеПоиска.СКонца);
ПоследнийСимвол = Прав(Стр, 1);
ДлинаСтроки = СтрНайти(Стр, Прав(Стр, 1), НаправлениеПоиска.СКонца);
  
// Вариант 1            
Цена1 = Сред(Стр, ПоследнийПробел + 1); 
// Вариант 2
Цена2 = Прав(Стр, СтрДлина(Стр) - ПоследнийПробел);
// Вариант 3
Цена3 = Прав(Стр, СтрНайти(Стр, ПоследнийСимвол, НаправлениеПоиска.СКонца) - ПоследнийПробел);
// Вариант 3 одной строкой 
Цена = Прав(Стр, СтрНайти(Стр, Прав(Стр, 1), НаправлениеПоиска.СКонца) - СтрНайти(Стр, " ", НаправлениеПоиска.СКонца));
Показать
9. user856012 14 13.10.23 10:26 Сейчас в теме
(7) Браво! Больше всего мне понравился вариант 3 - он такой нах...верченый, что сразу видно настоящего 1Сника! :-)
10. user1936667 13.10.23 10:48 Сейчас в теме
(9)
сразу видно настоящего 1Сника!
Побойся Бога! Настоящий 1Сник написал бы так:
МояСтрока = "23452 Карандаш зеленый кол-во 340";

Ява = Новый COMОбъект("MSScriptControl.ScriptControl");
Ява.Language = "JScript";

КодЯва = "
|function Cena(){
|var str = """ + МояСтрока + """;
|var r = /(\d*)[~\d]/g;
|var f  = str.match(regex);
|var i;
|var res = 0;
|for (i=0;i<f.len;i++) {
|res = f[i];
|}
|return res;
|}";

Ява.AddCode(КодЯва); 
СтрокаВызоваЯва = "Cena();";
Цена = Ява.Eval(СтрокаВызоваЯва);
Показать
8. starik-2005 3087 13.10.23 10:15 Сейчас в теме
Пробел = " ";
Х = СтрРазделить(Строка, Пробел);
Если ЗначениеЗаполнено(Х) Тогда
  Скопировано = Х[Х.ВГраница()];
Иначе
  Скопировано = Неопределено;
КонецЕсли;
Sashares; +1 Ответить
11. Said-We 13.10.23 11:12 Сейчас в теме
К (8) Выше добавить строку
Строка = Прав(СокрЛП(Строка), 20);
Цена более 20-ти знаков вряд-ли. Если может более 20-ти знаков, то увеличить до 21 :-)
Оставьте свое сообщение

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