Вход | Регистрация


1С:Предприятие :: 1С:Предприятие 8 общая

Поиск года в строке

Поиск года в строке
Я
   NikolayNiko
 
23.10.17 - 14:08
НЕ могу найти алгоритм. Подскажите пожалуйста, как сделать.
Пример: "2 квартал 2015 г." или "2013-2014".
 
 
   Лефмихалыч
 
1 - 23.10.17 - 14:11
vbscript.regexp

\d\d\d\d
   Лефмихалыч
 
2 - 23.10.17 - 14:11
или \d{4,4}
   NikolayNiko
 
3 - 23.10.17 - 14:15
(2) Не cилен в VB, к сожалению. Можно как-то ближе к 1с?
   Масянька
 
4 - 23.10.17 - 14:16
(3) Откуда берется "2 квартал 2015 г." или "2013-2014"?
   vfire1000
 
5 - 23.10.17 - 14:17
(3) RegExp = Новый COMОбъект("VBScript.RegExp");
   1dvd
 
6 - 23.10.17 - 14:17
(3) ПОДОБНО
   Lexey_
 
7 - 23.10.17 - 14:18
(3) Лев(), Прав(), Сред()
   NikolayNiko
 
8 - 23.10.17 - 14:18
(4) Строка, забивается в ручную. Реквизит ТЧ документа
   Масянька
 
9 - 23.10.17 - 14:19
(8) Не понял... Это ручками забивают "2 квартал 2015 г."?
   NikolayNiko
 
10 - 23.10.17 - 14:21
(9) да
 
 Рекламное место пустует
   igork1966
 
11 - 23.10.17 - 14:21
(8) Сделал бы ты там ввод стандартного периода периода, а хранил как две даты
   Лефмихалыч
 
12 - 23.10.17 - 14:21
(3) можно
    RegExp = Новый COMОбъект("VBScript.RegExp");
    RegExp.IgnoreCase = истина;
    RegExp.Global = истина;
    RegExp.MultiLine = Истина;    
    RegExp.Pattern = "\d{4,4}";

    Matches= RegExp.Execute("Пример: 2 квартал 2015 г. или 2013-2014");

    Для Сч = 0 по Matches.Count()-1 Цикл
        Match = Matches.Item(Сч);
        Сообщить("""" + Match.Value+ """");
    КонецЦикла;
   Масянька
 
13 - 23.10.17 - 14:21
(10) А если забьют "2 кв. 15 г." - чего делать будешь?
   NikolayNiko
 
14 - 23.10.17 - 14:22
(7) Не догадываюсь как это можно использовать в данном случае
   NikolayNiko
 
15 - 23.10.17 - 14:23
(13) такого не должно быть. Если встретиться - исправлять в ручную
   Масянька
 
16 - 23.10.17 - 14:24
(15) Зашибись...
Рекомендую внимательно прочитать (11).
   NikolayNiko
 
17 - 23.10.17 - 14:24
(12) что-то новенькое
   NikolayNiko
 
18 - 23.10.17 - 14:26
(16) Что есть - то есть. Моя задача получить год в формате ГГГГ.
   Лефмихалыч
 
19 - 23.10.17 - 14:26
(16) +100500

и еще по рукам себя линейкой шлёпнуть рекомендую и больше так (8) не делать
   igork1966
 
20 - 23.10.17 - 14:26
(15) Никогда не говори никогда. Рано или поздно это дело забудут и пользователь введет как ему захочется. B c претензией к прогу.
Может сразу нормально сделать не текстовым полем?
   Масянька
 
21 - 23.10.17 - 14:27
(18) Автоматизация бардака приводит к автоматизированному бардаку (С)
   1dvd
 
22 - 23.10.17 - 14:27
Для Идн = 1700 По 2200 Цикл
   Если Найти(СтрокаСГодом, "" + Идн)>0 Тогда
       НайденГод = Идн;
   КонецЕсли;
КонецЦикла;
   igork1966
 
23 - 23.10.17 - 14:30
(22) неразрывные пробелы пользователь как введет?  ;-)
   NikolayNiko
 
24 - 23.10.17 - 14:31
(20) Вы не поняли. У меня есть база, куда долгие годы в реквизит ТЧ документа(строкового типа) вносили эти данные. Теперь создан реквизит документа с типом дата. Мне нужно написать обработку, которая перелопатит все документы, отберет самую свежую дату из ТЧ каждого документа и присвоит её реквизиту документа. Как-то так
   NikolayNiko
 
25 - 23.10.17 - 14:31
В реквизит тч уже никто ничего больше вбивать не будет
   Лефмихалыч
 
26 - 23.10.17 - 14:33
(24) а много документов?
   igork1966
 
27 - 23.10.17 - 14:33
(24) если у тебя одна дата, то "2013-2014" как год преобразовывать хочешь?  В 2013?
   NikolayNiko
 
28 - 23.10.17 - 14:33
(26) довольно таки да
   igork1966
 
29 - 23.10.17 - 14:34
(24) варианты только указанные в (0)?
   1dvd
 
30 - 23.10.17 - 14:34
(23) пардон
Для Идн = 1700 По 2200 Цикл
   Если Найти(СтрокаСГодом, Формат(Идн, "ЧГ=0"))>0 Тогда
       НайденГод = Идн;
   КонецЕсли;
КонецЦикла;
   NikolayNiko
 
31 - 23.10.17 - 14:34
В самую свежую, то есть в 2014. А ТЧ может быть несколько строк с датой. Там то же самое - берем самую свежую
   NikolayNiko
 
32 - 23.10.17 - 14:35
(29) НЕт, варианты могут быть разные. Главное что дата в формате ГГГГ
   perester
 
33 - 23.10.17 - 14:39
(0) короче парсишь строку в цифры и готово, или как подсказал (30) , если это разовая акция то изящество решения это не главное
 
 
   Масянька
 
34 - 23.10.17 - 14:41
(31) А что за документ? Смысловая нагрузка его какова?
   NikolayNiko
 
35 - 23.10.17 - 14:45
(34) Да обычный документ. Самописная конфа.
   NikolayNiko
 
36 - 23.10.17 - 14:46
(30) Попробуем. Спасибо всем кто отозвался!
   Масянька
 
37 - 23.10.17 - 14:48
(35) У обычного документа есть дата. Смысл даты (периода) в ТЧ?
   NikolayNiko
 
38 - 23.10.17 - 14:51
(37) Говорю же самописка. Был какой-то умысел видимо у создателя. Но сейчас это уже не нужно. Нужна просто одна самая свежая дата
   igork1966
 
39 - 23.10.17 - 14:52
(38) еще нечто такое:

Год = 0;
сч = 1;
Пока сч <= СтрДлина(СтрокаСГодом) Цикл
  год = "";
  Пока сч <= СтрДлина(СтрокаСГодом) и СтрНайти("0123456789", Сред(СтрокаСГодом,cч,1)) > 0 Цикл
    год = год + Сред(СтрокаСГодом,cч,1);
    сч = сч + 1;
  КонецЦикла; 
  Если СтрДлина(год) = 4 Тогда
    Год = Макс(Год,Число(год));
  КонецЕсли;
  сч = сч + 1;
КонецЦикла;
   Масянька
 
40 - 23.10.17 - 14:52
(38) Так... Пойдем длинным путём...
Дата документа и дата из ТЧ чем отличаются?
А вообще, если "умысел" не понятен - снеси и не выноси мозг.
   X Leshiy
 
41 - 23.10.17 - 14:56
(40) Может он сам разберется?
   NikolayNiko
 
42 - 23.10.17 - 14:57
(40) Дата документа не причем! Есть реквизит "Дата бла-бла", отличный от даты документа. Что значит Снеси?
   NikolayNiko
 
43 - 23.10.17 - 14:59
(39) Всё же я думал есть какие-то менее "творческие" пути) Не уж то придется так извращаться?
   igork1966
 
44 - 23.10.17 - 14:59
(42) в переменную Год нужно как-то отлично от год назвать...
   Масянька
 
45 - 23.10.17 - 14:59
(42) В (38) написано: "Был какой-то умысел видимо у создателя. Но сейчас это уже не нужно." Если "не нужно" - снеси.
А что нужно? Смысл этой "Дата бла-бла"?
   igork1966
 
46 - 23.10.17 - 15:01
(45) Он уже выбросил, хочет в старых документах заполнить новое поле по этому полю, чтобы заставить пользователей исправить только немного документов где год не сумеет вычислить из этого текста.
   NikolayNiko
 
47 - 23.10.17 - 15:03
(46) именно!
   Масянька
 
48 - 23.10.17 - 15:04
(46) Подожди...
"Дата бла-бла" снес, значит, на фиг не нужно. А год зачем тогда?
   Масянька
 
49 - 23.10.17 - 15:05
(47) Что "именно"? Top secret - что за док-т, и что за дата (период)?
 
 Рекламное место пустует
   RomaH
 
50 - 23.10.17 - 15:05
(43) см (3)
   RomaH
 
51 - 23.10.17 - 15:06
ну если не хочешь (3) см ВК в БСП - в поиске и удалении дублей используется fuzzy чего-то там
   RomaH
 
52 - 23.10.17 - 15:07
(43) см не (3), а (12)
   Масянька
 
53 - 23.10.17 - 15:07
(46) Кстати, если это акт сверки - период есть в ТЧ. Так, к слову.
   NikolayNiko
 
54 - 23.10.17 - 15:24
(12) Спасибо большое! Все работает!


Список тем форума
Рекламное место пустует  Рекламное место пустует
Прочитай, хотя бы, Митичкина "Разработка в системе 1С:Предприятие 8". Волшебник
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует