Имя: Пароль:
1C
1С v8
преобразовать в строку 10.10.2018
0 ДядяМитяй
 
02.11.18
14:45
Видимо, у меня пятница, но уперся в проблему.
Мне из внешнего источника(с сайта) приходит параметр.
Вообще-то это подразумевается как дата, только 1с (на базе ут10) чтобы понять, что это дата, надо добавить хотя бы 0:0:0 (время).
Преобразовать в строку не могу, заменить точки не могу, преобразовать в дату не могу.
Убейте меня
1 1Сергей
 
02.11.18
14:47
И какого же типа оно приходит?
2 VladZ
 
02.11.18
14:50
(0) А проблема в чем?
3 cons24
 
02.11.18
14:52
Дата("10.10.2018"+"00:00:00")
4 ДядяМитяй
 
02.11.18
14:52
тут проблемы с отладкой по http
но оно берется из строки параметров запроса и, видимо, 1с пытается его понять как число и на второй точке затыкается.
(2) проблема в том, что этот параметр передается не просто так, с ним надо работать...
7 ДядяМитяй
 
02.11.18
14:53
(3) как кавычки добавить если оно пришло не строкой?
10 Aleksey
 
02.11.18
14:54
(7) оно не может прийти не строкой
11 cons24
 
02.11.18
14:55
Ничего не понимаю.
Дата(""+параметр+"00:00:00") - не але?
12 ДядяМитяй
 
02.11.18
14:58
Пробовал. Сам попробуй
Строка(" + 10.10.2018) или Строка(10.10.2018) или Дата(те же ...)
13 ДядяМитяй
 
02.11.18
15:01
платформа считает, что 10.10 - это число, а дальше точка - это ошибка, что при приведении к дате, что к строке
14 Базис
 
naïve
02.11.18
15:07
"" + ТвояДата всегда будет приведено к строке.
15 dezss
 
02.11.18
15:08
показывай код
16 ДядяМитяй
 
02.11.18
15:12
Функция GetDocs(Запрос)
    
    ГУИДконтр = Запрос.ПараметрыЗапроса.Получить("GUID");
    ДатаС = Запрос.ПараметрыЗапроса.Получить("ДатаНачала");
    ДатаС = Дата(СокрЛП(ДатаС) + " 0:0:0");
    ДатаПо = Запрос.ПараметрыЗапроса.Получить("ДатаКонца");
    ДатаПо = Дата(СокрЛП(ДатаПо) + "23:59:59");
    ВидДока = Запрос.ПараметрыЗапроса.Получить("ВидДокумента");
17 ДядяМитяй
 
02.11.18
15:12
только это вряд ли поможет
18 polosov
 
02.11.18
15:12
Строка = "02.11.2018";
ГодСтрока = Прав(Строка,4);
ДеньСтрока = Лев(Строка,2);
МесяцСтрока = Сред(Строка, 4,2);
ТвояДата = Дата(ГодСтрока+ МесяцСтрока + ДеньСтрока + "000000") ;
//Вот тыж болезный
19 VladZ
 
02.11.18
15:13
ДатаС = Запрос.ПараметрыЗапроса.Получить("ДатаНачала"); - что возвращает?
20 dezss
 
02.11.18
15:14
(18) +1
скорей всего в этом и проблема)))
как всегда, читайте СП
21 ДядяМитяй
 
02.11.18
15:15
(18) как все просто!
только вот 02.11.2018 не получается сделать строкой
22 dezss
 
02.11.18
15:16
(21) Строка(ДатаС = Запрос.ПараметрыЗапроса.Получить("ДатаНачала"));
23 dezss
 
02.11.18
15:16
(22) тьфу
(21) ДатаС = Строка(Запрос.ПараметрыЗапроса.Получить("ДатаНачала"));
24 dezss
 
02.11.18
15:16
кстати, а что в ДатаС тогда хранится?
25 ДядяМитяй
 
02.11.18
15:18
это обработчик GET-запроса. Приходит именно так - 10.10.2018. С этим надо дальше работать. поэтому (22) (23) попробуй Строка(10.10.2018) и посоветуй как ее разобрать по частями или еще чего-нибудь сделать
26 polosov
 
02.11.18
15:19
(21) Если у тебя ДатаС  тип - Дата,
То
НачалоТупняковогоДня = НачалоДня(ДатаС);
КонецТупняковогоДня = КонецДня(ДатаС);
27 ДядяМитяй
 
02.11.18
15:20
(24) ДатаС - переменная, в которую пихается получаемый параметр, в ней до этого ничего не было.
28 sitex
 
naïve
02.11.18
15:24
(0) Так кого типа изначально приходит этот параметр ?
29 ДядяМитяй
 
02.11.18
15:28
мне недоступна отладка http сервисов. Хотелось бы, чтобы приходил строкой))
Но приходит из урла типа http://194.труляля:45678/Имя базы/hs/PersAccount/c1e2f571-3783-11e2-a121-00241dc19c7d/01.11.2015/01.12.2015/2
30 ДядяМитяй
 
02.11.18
15:29
два предпоследних параметра
31 dezss
 
02.11.18
15:31
(29) это приходит от твоего сервиса?
32 ZDenis
 
02.11.18
15:31
(30) А если так
Запрос.ПолучитьТелоКакСтроку()
33 dezss
 
02.11.18
15:31
(32) это не тело
34 ДядяМитяй
 
02.11.18
15:32
конечно, можно напрячься и достучаться до гастарбайтеров-аутсорсеров, чтобы они по-другому слали параметры, но стало уже интересно самому
35 ДядяМитяй
 
02.11.18
15:32
Да, тела там нету, запрос простейший
36 dezss
 
02.11.18
15:32
Бери Запрос.АдресРесурса, там будет строка, парси сам
37 dezss
 
02.11.18
15:33
вообще, какого типа у тебя переменная Запрос?
38 Garykom
 
гуру
02.11.18
15:35
Запрос.ПараметрыЗапроса.Получить("имя_параметра") - в данном случае возвращает или Неопределено или строку
39 dezss
 
02.11.18
15:35
(36) + не АдресРесурса, а ОтносительныйURL
40 dezss
 
02.11.18
15:38
Хотя если у тебя есть ПараметрыЗапроса, то там не такая конструкция, как в (29), а скорей такая:
http://194.труляля:45678/Имя базы/hs/PersAccount?GUID=c1e2f571-3783-11e2-a121-00241dc19c7d&ДатаНачала=01.11.2015&ДатаКонца=01.12.2015&ВидДокумента=2
41 ДядяМитяй
 
02.11.18
15:39
(40) нет, такая как в (29), это обязательные параметры
42 dezss
 
02.11.18
15:39
пройдись циклом по ПараметрыЗапроса и сохранить куда-нить ключ-значение для отладки
43 dezss
 
02.11.18
15:39
(41) тогда бери ОтносительныйURL и парси сам
44 ДядяМитяй
 
02.11.18
15:40
(43) Да, спасибо, это наверное сработает, хоть это и анальная стоматология
45 dezss
 
02.11.18
15:40
(41) стоп...если так, то у тебя должны быть ПараметрыURL, а не ПараметрыЗапроса
46 dezss
 
02.11.18
15:41
(45) + СП
HTTPСервисЗапрос (HTTPServiceRequest)
ПараметрыURL (URLParameters)
Использование:

Только чтение.
Описание:

Тип: ФиксированноеСоответствие.
Содержит части URL-адреса, которые были параметризованы в шаблоне.

Доступность:

Сервер, толстый клиент.
Примечание:

Например, если шаблон URL-адреса был "/{Doc}/ByNum/{Num}", а URL запрос - "Накладная/ByNum/НО-2345", то соответсвие будет содержать две пары:
Doc - Накладная,
Num - НО-2345.
47 dezss
 
02.11.18
15:42
(44) + ты уверен, что в
    ГУИДконтр = Запрос.ПараметрыЗапроса.Получить("GUID");
хоть что-то было?
48 ДядяМитяй
 
02.11.18
15:46
(45) Да, действительно, может в этом дело. Я переделывал из ?парам =  
в
/{парам}
и упустил этот момент

Но вопрос о преобразовании N.N.N в строку остался нерешен))))
49 dezss
 
02.11.18
15:48
(48) так что в ФиксированноеСоответствие хранится ты смотрел?
выведи куда-нибудь в файл, например...
50 dezss
 
02.11.18
15:49
(48) ну там может этих параметров тупо нет?
51 Nyoko
 
02.11.18
15:56
проблема решается просто, есть постит форму то должны быть параметры, если нет то не обязательно,  для отладки можно использовать curl и файловую базу.
52 Пес Барбос
 
02.11.18
16:24
(29) Исли приходит из урла, то может сначала в нем "поправить" ?
Источник = "http://194.труляля:45678/Имя базы/hs/PersAccount/c1e2f571-3783-11e2-a121-00241dc19c7d/01.11.2015/01.12.2015/2";
Источник = СтрЗаменить(Источник,".","*");
// здесь вычленяем "даты"
// http://194*труляля:45678/Имя базы/hs/PersAccount/c1e2f571-3783-11e2-a121-00241dc19c7d/01*11*2015/01*12*2015/2
Дата1 = "01*11*2015";
МасСтрок = СтрРазделить(Дата1,"*");
ТвояДата = Дата(МасСтрок[2]+ МасСтрок[1] + МасСтрок[0] + "000000") ;
53 1Сергей
 
02.11.18
17:07
(16) Сообщить(ТипЗнч(ДатаПо));
54 dezss
 
07.11.18
09:05
(52) зачем такие танцы, если сразу из строки можно вычленять даты?)
55 ДядяМитяй
 
08.11.18
11:24
Проблема, как оказалось, была в том, что я последний параметр (в примере - 2) пытался сравнивать с числом, а не со строкой.
Но то, что при этом выходило сообщение, что неправильный предыдущий параметр, да еще и то, что его никак не привести к формату "ДАТА", - вот это очень сбило с толку.
2 + 2 = 3.9999999999999999999999999999999...