Имя: Пароль:
1C
1С v8
Не получается преобразовать строку в дату
,
0 SherifSP
 
22.07.13
18:23
Дата(05052013+ " " + 08:45:00) преобразование к типу дата не может быть выполнено
1 ale-sarin
 
22.07.13
18:24
Дата(20130505084500)
Лентяй снова.
2 Жан Пердежон
 
22.07.13
18:25
число + строка + хрен пойми что?
3 SherifSP
 
22.07.13
18:29
(2) Строка + пробел + Строка)
4 EvgeniuXP
 
22.07.13
18:29
а так: Дата('2013-05-05') + 31500?
5 EvgeniuXP
 
22.07.13
18:33
или может лучше так: Дата('2013-05-05 08:45:00')?
6 EvgeniuXP
 
22.07.13
18:34
"Участвовал в олимпийских играх 2012" - надеюсь не на 1С?
7 SherifSP
 
22.07.13
18:36
Вообще ситуация такая: Есть 2 переменные с типом строка ДатаВыезда = 05052013 и ВремяВыезда = 08:45:00 нужно преобразовать в дату
8 SherifSP
 
22.07.13
18:36
(6) Нет, по боксу выступал
9 EvgeniuXP
 
22.07.13
18:37
(7) строки в КАВЫЧКИ ЗАКЛЮЧАЮТСЯ!
10 SherifSP
 
22.07.13
18:38
(9) Не только можно методом Строка()
11 EvgeniuXP
 
22.07.13
18:39
(10) и где у тебя Строка в (7) умник?
12 Wobland
 
22.07.13
18:39
(10) как у нас записывается литерал строки? думаем, думаем
13 SherifSP
 
22.07.13
18:40
(11) Уже в методе дата(Строка(ДатаВыезда) + Строка(ВремяНач))
14 Wobland
 
22.07.13
18:41
(13) вопрос про  (7)
15 SherifSP
 
22.07.13
18:42
(14) Понял, может код преобразования выложить?)
16 szhukov
 
22.07.13
18:42
Для времени:
СтрЗаменить(Строка(ВремяНач), ":", "")

:)
17 EvgeniuXP
 
22.07.13
18:42
(13) отладчик смотри, что у тебя там получается...

скачай и посмотри, может что прояснится: http://files.spec8.ru/main_materials/BonusesSpec8RU/Open/dbase_module0.rar
18 SherifSP
 
22.07.13
18:42
+(15) Мб что то путевое подскажете)
19 Wobland
 
22.07.13
18:42
(15) выкладывай, мне пофих
20 SherifSP
 
22.07.13
18:43
Функция ПреобразоватьДату(Время,ДатаВыезда)
   
  _ДатаВыезда = Формат(ДатаВыезда,"ДФ=dd.MM.yyyy");
  ДатаВыезда = СтрЗаменить(Строка(_ДатаВыезда),".","");
  КолСимволов = СтрДлина(Время);
  Кол = 1;
  ВремяНач = Неопределено;
  ВремяКон = Неопределено;
  Для I = 1 По КолСимволов - 1 Цикл
      Строка = Сред(Время,1,Кол);
      Символ = Прав(Строка,1);
      Если Символ = "-" И Кол > 3 И ВремяНач = Неопределено И Кол < 6 Тогда
          ВремяНач = СокрЛП(СтрЗаменить(Лев(Время,Кол - 1),":","")+"00");
      ИначеЕсли ВремяНач <> Неопределено Тогда
          ВремяКон = СокрЛП(СтрЗаменить(Сред(Время,I),":","")+"00");
          Прервать;
      КонецЕсли;
      Кол = Кол + 1;
  КонецЦикла;    
 
  Если СтрДлина(ВремяНач) = 5 Тогда
      ВремяНач = "0" + ВремяНач;      
  КонецЕсли;
 
  Если СтрДлина(ВремяНач) = 5 Тогда
      ВремяКон = "0" + ВремяКон;      
  КонецЕсли;
 
  Если ВремяНач = Неопределено Тогда
      ВремяНач = "083500";
  КонецЕсли;
  Если ВремяКон = Неопределено Тогда
      ВремяКон = "175000";
  КонецЕсли;

  Структура = Новый Структура();
  Структура.Вставить("ДатаНач", Дата(ДатаВыезда + ВремяНач));
  Структура.Вставить("ДатаКон", Дата(ДатаВыезда + ВремяКон));
 
  Возврат Структура;
 
КонецФункции
21 EvgeniuXP
 
22.07.13
18:44
ушел плакать...
22 EvgeniuXP
 
22.07.13
18:45
и поговори с Лизой, вы друг-друга стоите: v8: Почему на этом коде зависает?.
23 SherifSP
 
22.07.13
18:45
+(20) Время в параметре в таком виде 8:45-17:45
24 szhukov
 
22.07.13
18:45
(20) Для даты:
Формат(ДатаВыезда,"ДФ=yyyyMMdd");

+

время

:)
25 SherifSP
 
22.07.13
18:46
Время может быть и такое 08-45:17:45
26 Wobland
 
22.07.13
18:47
я надеюсь, входные данные извне прилетают? только в этом случае может быть хоть какое-то оправдание
27 SherifSP
 
22.07.13
18:48
Во времени фигурируют только 2 вида символов "-" и ":", они могут быть в любом месте переменной
28 szhukov
 
22.07.13
18:48
(25)  Кури тогда: СтрЗаменить()
29 SherifSP
 
22.07.13
18:49
(26) С другой программы
30 szhukov
 
22.07.13
18:49
+(28) см (16)
31 szhukov
 
22.07.13
18:49
(29) Дата(коммент(24)+коммент(16)) - будет дата
32 Фокусник
 
22.07.13
18:49
(21) ё-маё, дайте скидку боксеру!
33 szhukov
 
22.07.13
18:52
(27)(32) Скидка:

Дата(Формат(ДатаВыезда,"ДФ=yyyyMMdd")+СтрЗаменить(СтрЗаменить(Строка(ВремяНач), ":", ""), "-", ""))
34 Wobland
 
22.07.13
18:53
(32) ушёл всхлипывать ;)
35 SherifSP
 
22.07.13
19:01
Ладно, я быстро учусь вот смотрите )

Функция ПреобразоватьДату(Время,ДатаВыезда)
   
  Если СтрДлина(Время) = 10 Тогда
      ВремяНач = "0" + Лев(Время,4)+":00";
  Иначе
      ВремяНач = Лев(Время,5)+":00";
  КонецЕсли;
  ВремяКон = Прав(Время,5)+"00";
 
  ВремяНачала = Дата(Формат(ДатаВыезда,"ДФ=yyyyMMdd")+СтрЗаменить(ВремяНач), ":", ""));
 
  Структура = Новый Структура();
  Структура.Вставить("ДатаНач", Дата(ДатаВыезда + ВремяНач));
  Структура.Вставить("ДатаКон", Дата(ДатаВыезда + ВремяКон));
 
  Возврат Структура;
 
КонецФункции
36 SherifSP
 
22.07.13
19:01
(35) Структуру забыл переделать, но то ничего, главное факт)
37 SherifSP
 
22.07.13
19:20
Решил немного похвастаться кодом, если есть что то лишнее буду рад за подсказку

Функция ПреобразоватьДату(Время,ДатаВыезда)
   
  _ВремяНач = ?(СтрДлина(Время) = 10, "0" + Лев(Время,4)+":00", Лев(Время,5)+":00");
  _ВремяКон = Прав(Время,5)+":00";
 
  ВремяНач = ?(Сред(_ВремяНач,3,1) = ":", СтрЗаменить(_ВремяНач, ":", ""), СтрЗаменить(_ВремяНач, "-", ""));
  ВремяКон = ?(Сред(_ВремяКон,3,1) = ":", СтрЗаменить(_ВремяКон, ":", ""), СтрЗаменить(_ВремяКон, "-", ""));

  ДатаНач = Дата(Формат(ДатаВыезда,"ДФ=yyyyMMdd") + ВремяНач);
  ДатаКон = Дата(Формат(ДатаВыезда,"ДФ=yyyyMMdd") + ВремяКон);
 
  Структура = Новый Структура();
  Структура.Вставить("ДатаНач", ДатаНач);
  Структура.Вставить("ДатаКон", ДатаКон);
 
  Возврат Структура;
 
КонецФункции
Независимо от того, куда вы едете — это в гору и против ветра!