Имя: Пароль:
1C
1С v8
найти в строке число
,
0 начинающий1спрог
 
31.07.12
15:16
В Бухгалтерии 2.0 есть такой документ ПоступлениеНаРасчетныйСчёт. В этом документе есть графа Назначение Платежа. так вот к примеру назначение платежа такое "терминал Кирпичное (...8848)" и по номеру 8848, который совпадает с частью имени договора контрагента, подставить значение в строку Договор контрагента (например "эквайринг Кирпичное (терм...8848)"). какие методы исп-ть для этого, подскажите? спасибо
1 mikecool
 
31.07.12
15:17
Найти
2 palpetrovich
 
31.07.12
15:21
(1) подозреваю там не только 8848 может быть ;)
3 начинающий1спрог
 
31.07.12
15:23
(2)в том то и дело. просто цифры совпадают в строке назначение платежа и в имени договора
4 palpetrovich
 
31.07.12
15:26
(3) что тут посоветовать? только парсить побуквенно строку с проверкой по КодуСимвола, как только находишь число - начинаешь его собирать. Хотя, если число в всегда скобках, то можно сразу плясать от скобки - чуток побыстрее будет
5 GLazNik
 
31.07.12
15:27
Как-то так:

Числа = "0123456789";
СтрЧисла = "";
Для к = 1 по СтрДлина(НазначениеПлатежа) Цикл
   Если Найти(Числа,Сред(НазначениеПлатежа,к,1)) > 0 Тогда
       СтрЧисла = СтрЧисла + Сред(НазначениеПлатежа,к,1);
   ИначеЕсли СтрДлина(СтрЧисла) > 0 Тогда
       НайденноеЧисло = Число(СтрЧисла);
       СтрЧисла = "";
   КонецЕсли;
КонецЦикла;
6 GLazNik
 
31.07.12
15:29
+(5) но точность сопоставления договора и назначения платежа по такому принципу достаточно не велика. я бы поискал другие критерии.
7 Kreont
 
31.07.12
15:33
(0) Заставьте клиентов указывать номер договора через *8848*, и будет просто парсить.
8 Лефмихалыч
 
31.07.12
15:44
Everebody stand back!

RE = New COMObject("VBScript.RegExp");
RE.Global    = Истина;
RE.IgnoreCase    = Истина;
RE.Multiline    = Истина;
RE.Pattern = "\d+";

Для каждого Match Из RE.Execute("эквайринг Кирпичное (терм...8848)") Цикл
   Сообщить(""+Match.Value+" @ "+Match.FirstIndex);
КонецЦикла;
9 palpetrovich
 
31.07.12
16:08
(8)  8848 @ 28
забавно, спасибо запомню, мо пригодится ;)
10 1C_OOLer
 
31.07.12
16:16
(8) Круть)
11 hhhh
 
31.07.12
17:40
ну парсер кстати нормально работает. У меня например строку типа "8848, 8849, 8851" клиент-банк спокойно разбирает, и по датам тоже. Ну и по остаткам на 62-м счете смотрит и предварительно разбивает сумму на несколько договоров.
12 izekia
 
31.07.12
17:44
(11) какой парсер?
AdBlock убивает бесплатный контент. 1Сергей