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


1С:Предприятие ::

Метки: 

Как получить из строки дату

Я
   TolikoSprosit
 
16.10.17 - 13:54
Есть строка "09 августа 2017 г.". Как получить из нее дату?
Возможно это?
 
 
   Ёпрст
 
1 - 16.10.17 - 13:55
(0) Вам - нет
   Волшебник
 
Модератор
2 - 16.10.17 - 13:55
парсинг нужен
   Numerus Mikhail
 
3 - 16.10.17 - 13:57
Возможно
   Fish
 
4 - 16.10.17 - 13:57
(0) Возможно, а в чём проблема?
   mehfk
 
5 - 16.10.17 - 13:58
(0) Если мояСтрока = "09 августа 2017 г." Тогда 
мояДата = Дата(2017,08,09);
КонецЕсли;
   Dotoshin
 
6 - 16.10.17 - 13:58
(4) Судя по вопросу проблема в том как это сделать вообще в принципе...
   Dotoshin
 
7 - 16.10.17 - 14:00
(0) Поди-ка из экселя что-то загружаешь?
   Numerus Mikhail
 
8 - 16.10.17 - 14:01
(5) Спасибо, то что нужно.
   TolikoSprosit
 
9 - 16.10.17 - 14:43
(1) Что не так?
   TolikoSprosit
 
10 - 16.10.17 - 14:43
(7) (6) Да
 
 Рекламное место пустует
   TolikoSprosit
 
11 - 16.10.17 - 14:44
(3) Как
   TolikoSprosit
 
12 - 16.10.17 - 14:44
Вопрос в том, есть ли в 1с что-то вроде "Формат" наоборот?)
   TolikoSprosit
 
13 - 16.10.17 - 14:45
ну или хотя бы месяц из строки в число не Если стр = "августа" тогда 8..
   Numerus Mikhail
 
14 - 16.10.17 - 14:45
(11) Для начала определим, всегда ли дата в таком формате. Будет ли потом что-то типа "пятое 03 2017 года" или всегда по шаблону? Откуда загружаете? Может вам и не надо
   TolikoSprosit
 
15 - 16.10.17 - 14:46
(14) Дата будет всегда в таком формате.
   Numerus Mikhail
 
16 - 16.10.17 - 14:47
(13) Если СтрНайти(НРЕГ(Строка), "январ") Тогда 01 
ИначеЕсли СтрНайти(НСТР(Строка), "феврал") Тогда 02
ИначеЕсли СтрНайти(НСТР(Строка), "март") Тогда 03

ну и так все 12 месяцев
   Numerus Mikhail
 
17 - 16.10.17 - 14:48
(15) Если все-таки полная дата нужна, то разбиваешь на массив подстрок. Число у тебя цифрой, месяц как в (16) получаешь, год тоже цифрой. Легчайшая задача.
   TolikoSprosit
 
18 - 16.10.17 - 14:50
(16) (17) Не самое элегантное решение, хочется что-то от команды Нуралиева)

Но если ничего не найдется, так и будет.
   Aleksey
 
19 - 16.10.17 - 14:50
(16) проще список с месяцами строкой составить. И далее найти в списке и ты получишь нужный номер месяца
   aka AMIGO
 
20 - 16.10.17 - 14:50
1. мояСтрока = "09 августа 2017 г.";
Если Найти(мояСтрока, "Янв") Тогда
   нужныймесяц=1;
...
ИначеЕсли Найти(мояСтрока..
...

2. СЗ= Новый "СписокЗначений" (или как там у вас в 8-ке)
СЗ.ДобавитьЗначение("янв");
...
СЗ.добавитьЗначение("авг");
...//и так 12 раз


Дальше - искать в СЗ, вернуть номер позиции
   aka AMIGO
 
21 - 16.10.17 - 14:52
(18) Команда Нуралиева не предоставила решения твоей задачи.
   Aleksey
 
22 - 16.10.17 - 15:00
НачДата = Дата(2017,01,01);
нужныймесяц=0;
Пока не Найти(Формат(НачДата,"D ДФ=MMММ"),мояСтрока) Цикл
  нужныймесяц=нужныймесяц+1;
  НачДата = ДобавитьМесяц(НачДата);
КонецЦикла;
   Ёпрст
 
23 - 16.10.17 - 15:02
(22) Найти число возвращает
   Ёпрст
 
24 - 16.10.17 - 15:05
ну и 
Формат(Дата(2017,01,01),"ДФ=MMММ") = Январь
а не январЯ
   TolikoSprosit
 
25 - 16.10.17 - 15:11
(23) Но "найти" отрботает)
   Dotoshin
 
26 - 16.10.17 - 15:14
(10) А не проще сначала в экселе преобразовать дату в удобоваримый формат, а потом загружать из него?
   TolikoSprosit
 
27 - 16.10.17 - 15:17
(26) Там не дата, а строка) была бы дата, проблем бы не было.
   TolikoSprosit
 
28 - 16.10.17 - 15:17
Функция ПолучитьНомерМесяца(Строка)
    
    МассивМесяцев = Новый Массив;
    
    МассивМесяцев.Добавить("Январ");
    МассивМесяцев.Добавить("Феврал");
    МассивМесяцев.Добавить("Март");
    МассивМесяцев.Добавить("Апрел");
    МассивМесяцев.Добавить("Май");;
    МассивМесяцев.Добавить("Июн");
    МассивМесяцев.Добавить("Июл");
    МассивМесяцев.Добавить("Август");
    МассивМесяцев.Добавить("Сентябр");
    МассивМесяцев.Добавить("Октябр");
    МассивМесяцев.Добавить("Ноябр");
    МассивМесяцев.Добавить("Декабр");
    
    Для ё=1 ПО МассивМесяцев.Количество() Цикл
        Если Найти(Строка,МассивМесяцев[ё-1]) Тогда
            Возврат ё;        
        КонецЕсли;
    КонецЦикла;
    
КонецФункции
   Dotoshin
 
29 - 16.10.17 - 15:19
   Timon1405
 
30 - 16.10.17 - 15:19
(28) на "09 маЯ 2017 г." не сработает функция. и все-таки лучше использовать объект соответствие
   TolikoSprosit
 
31 - 16.10.17 - 15:22
(30) "маЯ" не будет, если будет напишу Нрег.
Не понимаю зачем Соответствие?
   TolikoSprosit
 
32 - 16.10.17 - 15:23
(29) Вы мне в пользовательском режиме что-то делать предлагаете?)
   Numerus Mikhail
 
33 - 16.10.17 - 15:27
(31) имеется в виду что "май" и "мая" это разные слова.
 
 
   TolikoSprosit
 
34 - 16.10.17 - 15:32
(33) Блин) Не подумал)
   TolikoSprosit
 
35 - 16.10.17 - 15:35
Короче вроде это:

Функция ПолучитьДатуИзСтроки(Строка)
    
    МСтрока = СтрЗаменить(Строка," ",Символы.ПС);
    
    Возврат Дата(СтрПолучитьСтроку(МСтрока,3)
                +ПолучитьНомерМесяца(СтрПолучитьСтроку(МСтрока,2))
                +СтрПолучитьСтроку(МСтрока,1));
                
КонецФункции// ()


Функция ПолучитьНомерМесяца(Строка)
    
    МассивМесяцев = Новый Массив;
    
    МассивМесяцев.Добавить("Январ");
    МассивМесяцев.Добавить("Феврал");
    МассивМесяцев.Добавить("Март");
    МассивМесяцев.Добавить("Апрел");
    МассивМесяцев.Добавить("Ма");;
    МассивМесяцев.Добавить("Июн");
    МассивМесяцев.Добавить("Июл");
    МассивМесяцев.Добавить("Август");
    МассивМесяцев.Добавить("Сентябр");
    МассивМесяцев.Добавить("Октябр");
    МассивМесяцев.Добавить("Ноябр");
    МассивМесяцев.Добавить("Декабр");
    
    Для ё=1 ПО МассивМесяцев.Количество() Цикл
        Если Найти(Строка,МассивМесяцев[ё-1]) Тогда
            Возврат Формат(ё,"ЧЦ=2; ЧВН=");        
        КонецЕсли;
    КонецЦикла;
    
КонецФункции
   Dotoshin
 
36 - 16.10.17 - 15:36
(32) Я предлагаю привести исходные данные к нужному формату, а как это сделать решайте сами.
   lodger
 
37 - 16.10.17 - 15:46
никто не пробовал такую штуку шарашить?
https://www.techonthenet.com/excel/formulas/cdate.php
   TolikoSprosit
 
38 - 16.10.17 - 15:52
(37) Макросы по COMу, уж лучше костылями)
   Ёпрст
 
39 - 16.10.17 - 15:52
(36) ну-ну. Теперь МАй = МАрт
   TolikoSprosit
 
40 - 16.10.17 - 15:55
(39) Нет, Март первый отработает)
   Timon1405
 
41 - 16.10.17 - 15:55
ВходСтрокаМесяца="Августа";
СоответствиеМесяцев = Новый Соответствие;
СоответствиеМесяцев.Вставить("января","01");
СоответствиеМесяцев.Вставить("февраля","02");
СоответствиеМесяцев.Вставить("марта","03");
СоответствиеМесяцев.Вставить("апреля","04");
СоответствиеМесяцев.Вставить("мая","05");
СоответствиеМесяцев.Вставить("июня","06");
СоответствиеМесяцев.Вставить("июля","07");
СоответствиеМесяцев.Вставить("августа","08");
СоответствиеМесяцев.Вставить("сентября","09");
СоответствиеМесяцев.Вставить("октября","10");
СоответствиеМесяцев.Вставить("ноября","11");
СоответствиеМесяцев.Вставить("декабря","12");
НомерМесяца= СоответствиеМесяцев.Получить(нрег(ВходСтрокаМесяца));
   TolikoSprosit
 
42 - 16.10.17 - 16:06
(41) Быстрее, да.



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