Имя: Пароль:
1C
 
каким кодом вы ищете даты в строках ?
0 Холст
 
30.03.11
21:58
например, задача, из произвольной строки вида "счет № 2345 от 30.11.2009, сч. N 2 25.05.08" получить СписокЗначений или ТаблицуЗначений с датами и желательно с текстом перед этой датой до предыдущей даты
дату могут указать в виде ЧЧ.ММ.ГГ или ЧЧ.ММ.ГГГГ, иногда даже в виде ЧЧ месяц прописью год, 3й вариант редко правда
1 Хряк
 
30.03.11
22:02
создай список
".01."
...
".12."
2 Armando
 
30.03.11
22:03
регексп
3 G-Re
 
30.03.11
22:06
(1)+ 2 списка второй "января"...."декабря".
И перед поиском желательно удалить из строки множественные пробелы.
4 nop
 
30.03.11
22:08
(0) клиент-банк подключаешь ?
5 ДенисЧ
 
30.03.11
22:09
я с таким вопросом обычно посылаю туда, где гений мобилки раздаёт...
6 NikVars
 
30.03.11
22:09
(0) Сам 3 варианта и перечислил.
Мыслю через Если Тогда ИначеЕсли Тогда ...
7 zak555
 
30.03.11
22:10
(0) что тут произвольного :?
8 NikVars
 
30.03.11
22:11
Вариаций в разделителях число-месяц-год может быть много и точка не единственный разделитель.
Сегодня 30-03-2011 а так же 2011-03-30.
9 nop
 
30.03.11
22:13
(8) есть через / , а есть членисторукие операторши копируют строку с 01.01.11 правят её и получают 05,02.11
10 zak555
 
30.03.11
22:34
кстати, в вдруг вместо 25.05.08 будет двоичные числа ?
11 Armando
 
30.03.11
22:41
или месяц римскими цифрами))
12 nop
 
30.03.11
22:42
(11) или палочками написано, число 25 = |||||||||||||||||||||||||. итд
13 unknown181538
 
30.03.11
22:43
Например, СтрЗаменить все варианты разделителей на ".", потом все, что в двух цифрах до и 4х после точки (если они не включают пробелы) заменить на ##. Потом Найти(Стр,"##.##.##"), запомнить символы начал, и из исходной собрать даты.

Или тупой посимвольный цикл, от каждого символа "заглядываем" на 2 вперед, если не подходит смещаемся....
14 nop
 
30.03.11
22:44
(13) ужас
15 zak555
 
30.03.11
22:44
(12) у тебя и вправду 25 =)
16 unknown181538
 
30.03.11
22:45
+(12) Еще может быть "Счет позавчерашний для Васи" или "Перед пасхой выставили".
17 zak555
 
30.03.11
22:45
(13) криптография ?
18 nop
 
30.03.11
22:46
"от каждого символа "заглядываем" на 2 вперед"
двойной ужас

(15) 2 года в племени Чувача учетчиком коров работал
19 unknown181538
 
30.03.11
22:46
(14) в чем?)
20 nop
 
30.03.11
22:47
(19) ни один нормальный парсер не читает вперед. Только уже прочитанное в буффер обрабатывается
21 opty
 
30.03.11
22:48
нет такого извращения с вводом даты в строку которе не мог бы сделать криворукий оператор :)
22 opty
 
30.03.11
22:54
Либо делать доп реквизит с типом значения "Дата" , либо парсить строку при записи документа на проверку корректного ввода даты в строку , и не давать записывать пока правильно не введут
23 G-Re
 
30.03.11
23:41
Задача без формализации ввода даты полностью не решается никогда. Мне как-то нужно было выловить из текста платежки выловить сумму НДС, которая обычно пишется, например, в т.ч. НДС 123.45. Оказывается это "в т.ч. НДС" можно написать и было написано реально бесчисленным количеством способом(+ язык то рус, то укр). Где-то полгода добавлял варианты, потом бросил, сказал, все, процентов 98 правильно ловит, остальное глазками.
24 nop
 
30.03.11
23:42
(23) я за 2 недели сделал по выборке за год
25 nop
 
30.03.11
23:44
а даты я решил, дав допуск на самые отвратительные написания даты. Они заносятся в список предполагаемых дат. Каждый подходящий по длине набор символов из строки проверяется по выборке документов (не номер ли документа это), далее проверяются варианты дат, с вариантами номера документа. Опираясь на выборку документов, вышло 100% попадание при ежедневной обработке свыше 100 платежей
26 G-Re
 
30.03.11
23:45
(24) У тебя была выборка... У меня до перехода на Клиент-Банк Содержание не вводилось.
27 opty
 
30.03.11
23:47
(24) Дата в строке произвольная , никакого отношения к дате документа не имеет ? Если есть возможность лучше эту строку генерировать в коде , она тогда будет формализована и будет легко парсится
28 nop
 
30.03.11
23:47
(26) а откуда же ты даты выдирал тогда? (содержание полагаю = назначение платежа)
29 G-Re
 
30.03.11
23:54
(28) Не понял, в (26) я продолжаю (23) по НДС, с датами не заморачивался.
Да, Содержание=Назначение платежа, но это Наименование реквизита в Документ.ПлатежноеПоречение.
30 nop
 
30.03.11
23:57
(29) не знаю, по моему мы говорим об одном "оплата за то то согласно дог. 5891 от 12/03/10 в т.ч. ПДВ 800 гр"
31 nop
 
30.03.11
23:58
(30) но это ещё красота: тут сравнительно мало суржека, разделитель даты постоянный, есть пробелы, и главное все по одному договору, а не счета разных договоров намешаны
32 G-Re
 
31.03.11
00:09
(31) Согласен, не зря же Казначейство формализовало основание платежа, в отличие от ПФ. Как они будут разбираться, какие ЕСВ за какой период и пр...
33 nop
 
31.03.11
00:11
(32) ничего об этом не знаю, я не бюджетник
34 Лефмихалыч
 
31.03.11
00:13
(0) регэкспом.
35 G-Re
 
31.03.11
00:16
(33) А как же налоги платишь? ;КодОКПО;КодПлатежа;;;; и т.д.
У них(Казначейства) разделитель ; и обязательные реквизиты для заполнения через него, а после этого пиши буквами, что хочешь
36 NikVars
 
31.03.11
00:34
(23) Я афигеваю... ловить НДС в платежках...
НДС в платежках очень часто берется от суммы платежки и вписывается автоматом.
В итоге получаем, что НДС в другом документе, который считается построчно, может не совпасть с НДС в плажеке от той же суммы, который берется от конечной суммы.
Еще не видел учетчиков, считающих НДС в платежках.
Интересно, бухи тот платежный НДС на 19 счет не складывали?!
37 nop
 
31.03.11
00:37
(35) это делает операционист, не я же
38 Aleksey
 
31.03.11
00:39
(36) А еще может быть в накладной товар с 10 и 18%. а в платежки просто НДС 18% от общей суммы
39 nop
 
31.03.11
00:40
есть в сумму включен НДС, есть не включен, и вся эта информация приходит ввиде текстовой строки. Что тут не понятно?
40 NikVars
 
31.03.11
01:00
С таким же успехом можно в тексте платежки считать количество знаков препинания и в ежедневном режиме городить диаграммы из этого собранного добра своем диру.
К учету эта деятельность имеет только такое отношение, чтобы к реальной базе не подпускать одноруких, одноглазых, одноголовых битовых падаванов, у которых должно быть дело с утра до вечера.
41 Злопчинский
 
31.03.11
03:29
Сзтемп = глРазложить(СтрокаЧегоТо," ");
ДатаСчета=Дата(Сзтемп.ПолучитьЗначение(Сзтемп.размерСписка()));
42 zak555
 
31.03.11
08:17
(41) а там будет 01 апреля 2011 г
43 1Сергей
 
31.03.11
08:39
СписокДат = НайтиДатыВСтроке(СтрокаСДатами);
44 acsent
 
31.03.11
08:44
С помощью генетических алгоритмов
45 DrZombi
 
гуру
31.03.11
08:50
(0)Обычно, тут же, пользователь посылается туда, где он был зачат.
И создается полноценный реквизит типа Дата...
...Читать не стал, просто ляпнул ;)...
46 DrZombi
 
гуру
31.03.11
08:51
+(0)ИМХО - ты потом еще будешь удивлятся, когда люди будут писать дату, то с запятой, то просто без точек с пробелом, то полным годом, то вообще без года.
47 opty
 
31.03.11
09:02
(46) Ага , и О вместо 0  :)
48 1Сергей
 
31.03.11
09:03
первае опрелю динннатсатова г.
49 opty
 
31.03.11
09:04
Так что вариантов три
Реквизит
Генерация строки на основании реквизитов без участия пользователя
Парсинг при записи , чтоб не правильно не записали

Кстати платежка например может идти по счетам от разных дат , что тогда ?
50 DrZombi
 
гуру
31.03.11
09:11
+(47)И это тоже будет :)
51 opty
 
31.03.11
09:15
Так что без знания алгоритмов с нечеткой логикой , а так же телепатического модуля не обойтись :)
52 Armando
 
31.03.11
09:20
Автору пох. Не напрягайтесь.