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


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

Метки: 

Чем отличается хранение даты 1с и оракла?

Я
   DES
 
11.12.17 - 12:24
Использую API одного сайта.
Там формат данных даты dateTime (http://www.w3.org/2001/XMLSchema)
Задаю дату в формате 1с8 '20170110000000'
API возвращает данные от 2017-10-01Т00:00:00
Т.е.YYYYMMDD воспринимает как YYYYDDMM
Может можно как то пересчитать дату 1с8 в формат хранения для этого API
 
  Рекламное место пустует
   Fragster
 
1 - 11.12.17 - 12:26
XMLСтрока(Дата)
   DES
 
2 - 11.12.17 - 12:28
Всмысле?
У меня параметр тип дата
я делаю 
парамДата =  '20170110000000' ;
Как вы предлагаете?
   Fragster
 
3 - 11.12.17 - 12:29
(2) не тупи
   Fragster
 
4 - 11.12.17 - 12:29
те
   DES
 
5 - 11.12.17 - 12:33
Стараюсь,но не прокатывает Ваш совет.
   DES
 
6 - 11.12.17 - 12:34
пишет несоответствие типов
   DES
 
7 - 11.12.17 - 12:36
Значение не является значением объектного типа (StartDate)
   Fragster
 
8 - 11.12.17 - 12:37
Сообщить(XMLСтрока(ТекущаяДата()));
   Вафель
 
9 - 11.12.17 - 12:37
(2) в xml дата вроде не так задается
   Fragster
 
10 - 11.12.17 - 12:38
Сообщить(XMLЗначение(Тип("Дата"), XMLСтрока(ТекущаяДата())));
 
 
   Fragster
 
11 - 11.12.17 - 12:38
да и вообще, при использовании XSD схемы все эти форматы для примитивных типов никого не волнуют и происходят прозрачно для программиста
   Fragster
 
12 - 11.12.17 - 12:39
(7) телепатов тут нету
   Вафель
 
13 - 11.12.17 - 12:39
XMLЗначение(Тип("Дата"), XMLСтрока(ТекущаяДата()))    11.12.2017 12:37:58

Это явно не тот формат
   DES
 
14 - 11.12.17 - 12:42
про XML я в курсе
Дело в том что параметр для функции создается по API и после его создания он имеет тип вида (в отладчике 1с8) дата
и значение 30.12.1899  0:00:00

Следовательно я могу записать в него только дату , а не строку
   hhhh
 
15 - 11.12.17 - 12:43
(5) парамДата =  Дата(2017,01,10,00,00,00)
   Вафель
 
16 - 11.12.17 - 12:46
(15) Дата(2017,01,10,00,00,00) = '20170110000000'
   Fragster
 
17 - 11.12.17 - 12:47
(14) -> (11)
   DES
 
18 - 11.12.17 - 12:47
(15) дата устанавливается, воспринимается API не так.
Я не могу получить данные от 28 числа любого месяца, так как API отвечает что нет такого месяца 28
   Fragster
 
19 - 11.12.17 - 12:48
(13) а (8)
   hhhh
 
20 - 11.12.17 - 12:48
(16) ну, там строка, а тут дата.
   hhhh
 
21 - 11.12.17 - 12:49
(18) так дата у вас где устанавливается? в 1с или в api?
   DES
 
22 - 11.12.17 - 12:49
(17) данные от 01.01.2017 или 02.02.2017 или 03.03.2017 получаю корректно
   Вафель
 
23 - 11.12.17 - 12:49
(20) в одинарных ковычках - это как раз не строки
   DES
 
24 - 11.12.17 - 12:50
(18) из 1с вызываю API
параметры вызова устанавливаю в 1с
   DES
 
25 - 11.12.17 - 12:51
Задаю дату 02.01.2017
получаю данные от 01.02.2017
   Fragster
 
26 - 11.12.17 - 12:52
У командира сломалась рация на бронетранспортере. Прапорщик построил
личный состав и говорит:
- У командира на бронетранспортере сломалась рация. Кто починит – поедет
в отпуск. Голос из строя:
- Товарищ прапорщик! А рация на чем: на полупроводниках или на лампах?
- Для дебилов повторяю. На БРОНЕТРАНСПОРТЕРЕ!
   Вафель
 
27 - 11.12.17 - 12:52
а как ты дату передаешь в апи?
   Вафель
 
28 - 11.12.17 - 12:53
Код в студию, плз
   DES
 
29 - 11.12.17 - 12:57
(27) присваиваю параметру, а параметр передаю .
Я же говорю , проблема не присвоить дату, а интерпретировать ее так что бы API  понимал месяз за день, а день за месяц
   Fragster
 
30 - 11.12.17 - 13:00
(28) с кодом любой дурак разберется
   hhhh
 
31 - 11.12.17 - 13:03
(29) а где там формат данных даты dateTime (http://www.w3.org/2001/XMLSchema)  ?? на какой строчке?
   DES
 
32 - 11.12.17 - 13:22
<xs:simpleType name="dateTime" id="dateTime">
<xs:annotation>
<xs:appinfo>
<hfp:hasFacet name="pattern"/>
<hfp:hasFacet name="enumeration"/>
<hfp:hasFacet name="whiteSpace"/>
<hfp:hasFacet name="maxInclusive"/>
<hfp:hasFacet name="maxExclusive"/>
<hfp:hasFacet name="minInclusive"/>
<hfp:hasFacet name="minExclusive"/>
<hfp:hasProperty name="ordered" value="partial"/>
<hfp:hasProperty name="bounded" value="false"/>
<hfp:hasProperty name="cardinality" value="countably infinite"/>
<hfp:hasProperty name="numeric" value="false"/>
</xs:appinfo>
<xs:documentation source="http://www.w3.org/TR/xmlschema-2/#dateTime"/>;
</xs:annotation>
<xs:restriction base="xs:anySimpleType">
<xs:whiteSpace value="collapse" fixed="true" id="dateTime.whiteSpace"/>
</xs:restriction>
</xs:simpleType>
   Cyberhawk
 
33 - 11.12.17 - 13:25
2017-12-11T13:25:00
 
  Рекламное место пустует
   Cyberhawk
 
34 - 11.12.17 - 13:26
Чего там тебе возвращает какое-то АПИ, это уже какое отношение имеет?
   DES
 
35 - 11.12.17 - 13:32
(33) это строка - а параметр имеет тип дата
   Cyberhawk
 
36 - 11.12.17 - 13:51
(35) Я из всей ветки не понял, что требуется. Ты в трех словах опищи
   DES
 
37 - 11.12.17 - 13:52
(35) 25 прочитай - там все
   DES
 
38 - 11.12.17 - 13:54
(37)+ как получить данные на 20.12.2017?
   Cyberhawk
 
39 - 11.12.17 - 13:57
Кривое АПИ или руки, хз что ты и куда там передаешь и что получаешь. Не все можно решить на стороне источника, но подменить СОАП-сервис на HTTP-запрос с нужным текстом тела / заголока, думаю, можно
   ambrozii-fadeevich-s
 
40 - 11.12.17 - 13:59
овер 30 постов ни о чем
Формат(ТекущаяДатаСеанса(), "ДФ='MM.dd.yyyy ЧЧ:мм:сс'; ДЛФ=T")
   DES
 
41 - 11.12.17 - 14:00
(40) да билин же, это не тип дата.
   ambrozii-fadeevich-s
 
42 - 11.12.17 - 14:03
(41) ты же в xml ее подсовываешь.
   ambrozii-fadeevich-s
 
43 - 11.12.17 - 14:06
еще на всякий случай в отладчике ТипЗнч('20170110000000') рассчитай. понятнее станет.
   DES
 
44 - 11.12.17 - 14:06
нет, не в XML
   DES
 
45 - 11.12.17 - 14:08
private EFacturaApiRef.ServiceClient _client;
_client = new EFacturaApiRef.ServiceClient();
_client.ClientCredentials.UserName.UserName = "supplier";
_client.ClientCredentials.UserName.Password = "supplier";
string newid = Guid.NewGuid().ToString();
var request = new SearchRequest
 {
 RequestId = newid,
ActorRole = 1,
Parameters = new SearchParameters
{
InvoiceStatus = 7,
e-Factura Integration Guide (API for external accounting systems)
Document prepared by Alfa -Soft S.R.L 34 System administrated by Fiscservinform
 IssuedOn = new DateSearch { StartDate =
DateTime.Now.AddDays(-100), EndDate = DateTime.Now},
 BuyerIDNO = "1002600001431"
 }
 };
 var response = _client.SearchInvoices(request);
foreach (var info in response.Results)
{
 Console.WriteLine(info.Seria + " " + info.Number + " " +
info.Xml + " Error Message: " + info.Message);
}
   DES
 
46 - 11.12.17 - 14:09
вот пример их кода, на C# наверное

там 
StartDate = DateTime.Now.AddDays(-100),
   ambrozii-fadeevich-s
 
47 - 11.12.17 - 14:14
(46) Ну вот когда ты делаешь в 1С как в (2) 
>> я делаю 
>> парамДата =  '20170110000000' ;
ты туда не дату передаешь. Ну так на всякий случай напоминаю.

И как их сервис эту строку в дату преобразует - это уже второй вопрос.
   ambrozii-fadeevich-s
 
48 - 11.12.17 - 14:15
(46) Не дошло?
   Вафель
 
49 - 11.12.17 - 14:19
(47) Так это же ДАТА
 
  Рекламное место пустует
   ambrozii-fadeevich-s
 
50 - 11.12.17 - 14:22
(49) Точно. А у меня везде считается, что строка. надо срочно править :)
   ambrozii-fadeevich-s
 
51 - 11.12.17 - 14:24
А блин. а тут везде кавычки двойные. вот налажал.
   Fragster
 
52 - 11.12.17 - 14:24
если ты используешь WSПрокси, и там валидный WSDL с нормальными определениями типов параметров, то ничего тебе делать не надо, пихай прямо 1совскую дату в объект XDTO
   DES
 
53 - 11.12.17 - 21:57
(52) да вот как бы не пихается в объект XDTO
Уже все перепробовал, дата пихается только как дата, а воспринимается как хрен знает что.
   Fragster
 
54 - 11.12.17 - 22:13
(53) ну рассказывай, как обгонял, как подрезал? Где всдл? Где то, как ты его использовал?
   DES
 
55 - 12.12.17 - 08:44
   DES
 
56 - 12.12.17 - 08:47
функция  name="SearchInvoices"
Возращает ТТН по критериям. 
Даю диапазон дат, получаю ТТН, смотрю - даты наперекосяк, не те что запрашивал.
Путает номер дня с номером месяца.
   DES
 
57 - 12.12.17 - 08:51
Или функция "GetLogs"
Можно запросить  лог действий за период.
Та же фигня, присылает не то.
Короче, все работает, кроме функций в которых параметром идет дата, причем даты в ТТН возвращает корректные (т.е. не путает в них день/месяц)
   ИмяФамилия
 
58 - 12.12.17 - 09:03
(57)
ну может просто косяк у граждан, даты в запросе хотят видеть одни, а в ответе отдают другие.
т.е. в запросе, вроде, должно быть YYYYMMDD а на самом деле воспринимаются как YYYYDDMM )
и с ответами тоже самое)

уточни у разработчиков что они имели ввиду)
   1Сергей
 
59 - 12.12.17 - 09:12
YYYYDDMM амерский формат, локализацию проверь
   ИмяФамилия
 
60 - 12.12.17 - 09:45
(59) это гражданам разработчикам апи нужно сообщить.
либо дока не полная. и необходимо в запросе указывать локаль.
   Cyberhawk
 
61 - 12.12.17 - 10:52
<xs:complexType name="DateSearch">
<xs:sequence>
<xs:element minOccurs="0" name="EndDate" nillable="true" type="xs:dateTime"/>
<xs:element minOccurs="0" name="StartDate" type="xs:dateTime"/>
</xs:sequence>
</xs:complexType>
   Cyberhawk
 
62 - 12.12.17 - 10:53
   Fragster
 
63 - 12.12.17 - 11:01
если так:
<xs:element minOccurs="0" name="EndDate" nillable="true" type="xs:dateTime"/>
<xs:element minOccurs="0" name="StartDate" type="xs:dateTime"/>

то в объект XDTO присваиваешь прямо 1сную дату, и всё работает как надо
   Fragster
 
64 - 12.12.17 - 11:01
без всяких преобразований
   ambrozii-fadeevich-s
 
65 - 12.12.17 - 11:50
(53) Да попробуй запихни простую строку из даты в формате ymd "20171201" (в двойных кавычках) и посмотри, что получится, ибо если в XDTO не пихается дата, то скорее всего - там тупо строка из которой потом сервис конвертит дату. А все обертки с типами данных такие же гуру-прогеры (или горе-прогеры), как мы в ТЗ для важности написали.
   DES
 
66 - 12.12.17 - 13:43
(62) это на что намек?
   DES
 
67 - 12.12.17 - 13:44
(65) строка не пихается по определению.
Насчет локали - есть зерно истины, где бы ее прописать....
   Лефмихалыч
 
68 - 12.12.17 - 13:49
в оракле дата хранится вот так
https://i.imgur.com/aDg3NVz.png

вопрос к ораклу отношения не имеет
   Cyberhawk
 
69 - 12.12.17 - 13:50
(66) Ну это кусочек одной из XSD-схем, типами данных которых оперирует твой веб-сервис
   DES
 
70 - 12.12.17 - 13:54
(69) а вот тут заморочка, параметры идут не типом XML, а типом ДатаВремя
   DES
 
71 - 12.12.17 - 13:55
(68) это не хранение - это показано отображение (одного из вариантов)
   Лефмихалыч
 
72 - 12.12.17 - 13:57
(71) к ораклу вопрос все равно отношения не имеет
   MM
 
73 - 12.12.17 - 13:57
Опирайтесь на стандарт https://ru.wikipedia.org/wiki/ISO_8601
   DES
 
74 - 12.12.17 - 14:07
(73) не прокатывает.
   mistеr
 
75 - 12.12.17 - 14:31
(68) Твоя картинка к *хранению* даты в Оракле также отношения не имеет.
   Cyberhawk
 
76 - 12.12.17 - 15:23
(70) Ты написал какую-то хрень или ты ошибся номером поста
   DES
 
77 - 12.12.17 - 19:35
(76) а ты не ошибся?
XSD — это язык описания структуры XML документа.
XML не используется в параметрах.
   Cyberhawk
 
78 - 12.12.17 - 20:46
(77) Хз, что ты пишешь
   DES
 
79 - 13.12.17 - 14:34
ну вот у них нулевое значение соответствует 
30.12.1899 00:00:00 
А в 1С-не 01.01.0001 00:00:00
т.е. если я запилю туда 0, то ДР христа Спасителя я не получу.
Вот может в этом дело?
   Fragster
 
80 - 13.12.17 - 15:31
нет



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