Имя: Пароль:
1C
1С v8
Строки
,
0 almaz102
 
17.11.16
09:13
Добрый день! Я начинающий программист, опыта еще нет.Подскажите пож-та как из строки вытащить сумму комиссии. Причем каждый раз сумма будет разной. Это у меня документ "Поступление на расчетный счет" по эквайрингу, Бухгалтерия 2.0. В реквизите "Назначении платежа" у меня текст: "Эквайринг, перечислено по реестру от 01.11.2016. (Количество операций 2 на сумму 1,400.00 по мерчанту , удержано: комиссии 25.20, возвратов 0.00/0.00)" из этого текста нужно вытащить комиссию банка "25.20"
1 oslokot
 
17.11.16
09:15
Воспользоваться функцией СтрНайти()
2 h-sp
 
17.11.16
09:18
(1) просто Найти()
3 oslokot
 
17.11.16
09:20
(2) у кого как
4 Jonny_Khomich
 
17.11.16
09:20
(2) в 8.3 есть СтрНайти(<Строка>, <ПодстрокаПоиска>, <НаправлениеПоиска>, <НачальнаяПозиция>, <НомерВхождения>)
5 Jonny_Khomich
 
17.11.16
09:22
(2) а найти() для строки нельзя использовать. сейчас в СП посмотрел.
6 h-sp
 
17.11.16
09:23
(3) (4) в БП 2.0 СтрНайти? В 8.2? С каких пор это у вас такое?
7 Jonny_Khomich
 
17.11.16
09:25
(5) не так искал, можно и найти использовать, только стрнайти гибче.
(6) версия платформы не указывалась
8 catena
 
17.11.16
09:30
(4)Странный у вас СП, я вот у себя смотрю:

Глобальный контекст (Global context)
Найти (Find)
Синтаксис:

Найти(<Строка>, <ПодстрокаПоиска>)
Параметры:

<Строка> (обязательный)

Тип: Строка.
Исходная строка.
<ПодстрокаПоиска> (обязательный)

Тип: Строка.
Искомая подстрока.
Возвращаемое значение:

Тип: Число.
Позиция первого знака найденной подстроки. Нумерация символов в строке начинается с 1. Если строка не содержит указанной подстроки, то возвращается 0.
Описание:

Функция является устаревшей! Рекомендуется использовать функцию СтрНайти.
Находит первое вхождение искомой строки как подстроки в исходной строке.
9 oslokot
 
17.11.16
09:34
(8) у вас 8.2 ОФ, у нас 8.3 УФ вот и вся разница. Метод Найти() нам даже недоступен
10 d546
 
17.11.16
09:34
(7) зато у БП 2.0 указан режим совместимости ;)
11 almaz102
 
17.11.16
09:36
Платформа 8.2
12 d546
 
17.11.16
09:39
используй Найти() и Сред(), остальное в СП
13 dmpl
 
17.11.16
09:42
(0) По опыту - стабильно это работать не будет.
14 aka AMIGO
 
17.11.16
09:48
Да нормально будет работать.. Если банк не изменит формат сообщения.
Найти подстроку комисс, в цикле прошагать до запятой, вырезать новую строку с пробела до запятой, превратить в число.
Или немного по-другому.
..
Ладно, пусть ТС фантазирует.. всего-то час-полтора затрат.
15 aka AMIGO
 
17.11.16
09:51
+14 в цикле прошагать посимвольно до пробела, читать до запятой, конкатенируя символы (цифры, точку) в новую строку..
16 catena
 
17.11.16
09:51
(9)Серьезно? Скопировано из справки 8.3
17 Лефмихалыч
 
17.11.16
09:54
/комиссии \d+.{0,1}\d+/ig
18 Лефмихалыч
 
17.11.16
09:55
+(17) оу! Перед точкой слэш должен быть - маркап его сожрал
19 oslokot
 
17.11.16
09:56
(16) там же и СтрНайти, раздел Глобальный контекст
20 dmpl
 
17.11.16
09:58
(14) Регулярно меняют (попадался случай даже единичных ошибок, т.е. назначение человек вводил), уже наступали на эти грабли. Потом еще 1Сники и виноваты оказываются.
21 Jonny_Khomich
 
17.11.16
09:58
(8)написано же:"Функция является устаревшей! Рекомендуется использовать функцию СтрНайти. ".
Её завтра вырежут, будете потом сидеть целый день, искать где она использовалась.
22 oslokot
 
17.11.16
09:58
(16) + Найти() устарела с какого-то релиза не помню точно, наверное с 8.3.6
23 Лефмихалыч
 
17.11.16
09:59
или
/комиссии \d+(\.\d+){0,1}/ig


или совсем в лоб

Комментарий = "Количество операций 2 на сумму 1,400.00 по мерчанту , удержано: комиссии 25.20, возвратов 0.00/0.00)";
Фрагмент = СтрПолучитьСтроку(СтрЗаменить(Комментарий, ": комиссии ", Символы.ПС), 2);
Сумма = Число(СтрПолучитьСтроку(СтрЗаменить(Фрагмент, ",", Символы.ПС),1);
24 Timon1405
 
17.11.16
10:03
(23) регулярка не сработает на "комиссии 1 000"
25 aka AMIGO
 
17.11.16
10:04
(20) Ну, да.. на неизменность надежда никакая..
(0) Конечно, задачку для обучения полезно-б и решить, а лучше-то научить бушек копипастить нужные цифири.. тогда и ошибки будут их, а не твои.
26 dmpl
 
17.11.16
10:06
(24) А еще может быть "25 руб. 20 коп.". Или даже "двадцать пять рублей 20 копеек".
27 aka AMIGO
 
17.11.16
10:06
(23) Варианты текста из банки, что в голову взбредет тамошнему работнику

комиссии
комисии :)
комисс.
комис.
ком.
к.

Все варианты имеют право на жисть :)
28 aka AMIGO
 
17.11.16
10:07
(26) ммм.. точно! так что пусть бушки научатся читать глазками и вводить ручками нужное :)
29 h-sp
 
17.11.16
10:08
(20) у меня доработка: из назначения платежа вытаскивается По счету № такому-то от даты такой-то и идет привязка к счетам в базе. 5 лет уже, никаких претензий нет пока, все довольны.
30 dmpl
 
17.11.16
10:13
(29) Ну значит везет пока :)

Не, как средство автоматизации это имеет право на существование, но кнопку принятия полученных таким образом данных должен нажимать человек после проверки их корректности. Тогда вся ответственность будет на нем.
31 catena
 
17.11.16
10:16
(19)Не об том речь. Тут утверждалось, что в 8.3 Найти() для строк недоступно. Если на каких-то платформах 8.3 это действительно так, хочется знать про эти грабли. Я в описании совместимости такого не видела.
32 almaz102
 
17.11.16
10:17
Спасибо Всем за помощь! Решил вопрос по методу     Лефмихалыча.
33 catena
 
17.11.16
10:18
(21)Вот об этом и спрашиваю. Переводить самописную конфу с платформы на платформу не так просто, как в документации пишут. Вот взгляд и цепляется за такие фразы, как "на 8.3 это недоступно"
34 oslokot
 
17.11.16
10:23
(31) Вот, нашел с версии 8.3.6 применяется СтрНайти()
http://downloads.v8.1c.ru/content//Platform/8_3_9_1850/1cv8upd.htm

т.е. как только уберешь режим совместимости 8.3.5, конфигуратор будет воспринимать Найти() как синтаксическую ошибку
35 h-sp
 
17.11.16
10:23
синтакс-помощники стали разные. Читаешь одно, ставишь режим совместимости 8.2, там уже совсем другое написано. Если поставить галочку мобильная платформа, там еще куда всего добавляется.

У каждой версии: 8.3.3, 8.3.4, 8.3.5 и т.д. свои синтакс-помощники.
36 Лефмихалыч
 
17.11.16
11:10
(24) (27) этого всего в ТЗ не было
Основная теорема систематики: Новые системы плодят новые проблемы.