Имя: Пароль:
1C
1С v8
Как записать/отправить в XML пустую дату
0 kugelfangg
 
04.03.19
19:04
Всем привет.

Столкнулся с очень забавной проблемой. Нужно передать в XML-файл пустую дату. Но это сделать не получается.

Пробовал:
1) Передавать "Дата(1,1,1)", в файл записывается, но это не устраивает систему, которая эти файлы потом читает, так как она видит 0001-01-01T00:00:00, а это уже не пустая дата для нее
2) Передавать строку "0000-00-00T00:00:00", но тогда выдает ошибку: не соответствует простому типу: {http://www.w3.org/2001/XMLSchema}dateTime
3) Передавать NULL но тогда выдает ошибку: не соответствует простому типу: {http://www.w3.org/2001/XMLSchema}dateTime

Подскажите пожалуйста, как можно забороть эту проблему?
1 Fram
 
04.03.19
19:05
пустую строку или вообще опустить этот узел пробовал?
2 palsergeich
 
04.03.19
19:06
Передавай без значения просто тег
3 palsergeich
 
04.03.19
19:08
Ибо в unix time. Отсчёт ведётся не от рождества Христова, попробуй 01.01.1970
4 kugelfangg
 
04.03.19
19:20
(2) Генератор файла устроен так что если ничего не передавать, то он просто этот параметр не добавляет в файл
5 palsergeich
 
04.03.19
19:22
01.01.1970 бахни
6 Fram
 
04.03.19
19:31
(4) ну может так и нужно?
7 kugelfangg
 
04.03.19
19:34
(5) Не, получается не то что нужно:
<PartsOrderReceivedDateTime>1970-01-01T00:00:00</PartsOrderReceivedDateTime>
8 kugelfangg
 
04.03.19
19:37
(4) в том то и дело, что нет=(
Люди, которые систему-приемник админят, сказали что должна быть пустая дата.
9 Fram
 
04.03.19
19:38
(8) а пример пустой даты у них попросить гордость не позволяет? ) лучше форум помучать
10 kugelfangg
 
04.03.19
19:52
(9) вот что должно быть: "0000-00-00T00:00:00"
11 Fram
 
04.03.19
20:01
(10) а как же пункт 2) из (0)
12 kugelfangg
 
04.03.19
20:03
(11) это по тому что я строку передавал в тип "Дата" по этому не прокатило. В том то и затык, что не понятно как такое значение с типом дата передать.
13 Fram
 
04.03.19
20:07
(12) весь xml документ по сути это строка. типизация уже от парсера зависит на том конце. ты тут причем?
14 palsergeich
 
04.03.19
20:14
Ну есть еще вариант. СТРЗАМЕНИТЬ называется
15 palsergeich
 
04.03.19
20:20
Ибо я тут глянул этот ISO и что то мне говорит, что "0000-00-00T00:00:00" эта запись не каннонична и является плодом автора Вашей поделки
16 Garykom
 
гуру
04.03.19
20:28
XMLСтрока (XMLString)
Синтаксис:

XMLСтрока(<Значение>)
Параметры:

<Значение> (обязательный)

Тип: Неопределено; Null; Булево; Число; Строка; Дата; УникальныйИдентификатор; ДвоичныеДанные; ХранилищеЗначения; значения перечислений, значения системных перечислений (ВидСчета; ВидДвиженияБухгалтерии; ВидДвиженияНакопления; ДопустимыйЗнак; ДопустимаяДлина; ЧастиДаты) или все ссылки на объекты базы данных.
Значение, для которого должно быть получено строковое представление, которое может быть использовано как текст элемента или значение атрибута XML.
Возвращаемое значение:

Тип: Строка.

Описание:

Получает XML представление значения для помещения в текст элемента или значение атрибута XML.
XML представление зависит от типа значения:
Строка - как есть;
Булево: Истина - как "true", Ложь - как "false";
Дата - XML представление соответствует представлению типа dateTime схемы XML (см. http://www.w3.org/TR/xmlschema-2/#dateTime);
Число - XML представление соответствует представлению типа decimal схемы XML (см. http://www.w3.org/TR/xmlschema-2/#decimal);
Значение системного перечисления (для перечислений, поддерживающих XML сериализацию) - как имя значения перечисления;
УникальныйИдентификатор - как строковое представление уникального идентификатора;
Ссылки - как XML представление уникального идентификатора ссылки;
ХранилищеЗначения и ДвоичныеДанные - как строка в формате base64.


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

Сервер, толстый клиент, внешнее соединение, мобильное приложение(сервер).
17 palsergeich
 
04.03.19
20:30
(16) И как это поможет.
Открываем стандлат по ссылке и видим
The date and time datatypes described in this recommendation were inspired by [ISO 8601]. '0001' is the lexical representation of the year 1 of the Common Era (1 CE, sometimes written "AD 1" or "1 AD"). There is no year 0, and '0000' is not a valid lexical representation. '-0001' is the lexical representation of the year 1 Before Common Era (1 BCE, sometimes written "1 BC").
18 palsergeich
 
04.03.19
20:32
Запись не канонична.
СТР заменить тебя спасет
19 kugelfangg
 
04.03.19
20:35
Ладно, буду пробовать XSD схему менять.
Если получится решить проблему обязательно отпишусь. Спасибо всем за участие.
20 Garykom
 
гуру
04.03.19
20:38
(18) Самый простой вариант хотя и не кошерный.

Кошерно было бы привести приемную систему к https://www.w3.org/TR/xmlschema-2/#dateTime
21 palsergeich
 
04.03.19
20:41
(20) кошерно, согласен, но что то мне говорит что со второй стороны те еще фрукты
22 palsergeich
 
04.03.19
20:42
там или допилили парсер или такое древнее хм, судя по парсеру
23 etc
 
04.03.19
21:12
составной тип не прокатит?
24 etc
 
04.03.19
21:12
принимающая сторона как воспримет вообще пустое поле?
25 Скиурус
 
04.03.19
22:12
Я бы просто делал нормальный XML с представлением пустой даты как 0001-01-01T00:00:00. А потом уже в тексте обычной заменой строки заменил бы "0001-01-01T00:00:00" на "0000-00-00T00:00:00", чтобы удовлетворить идиотов, которые думают, что был нулевой год, нулевой месяц или нулевое число.
26 palsergeich
 
04.03.19
22:17
(25) Стр заменить в посте было уже 2 раза)
27 Скиурус
 
04.03.19
23:02
(26) сорян, чувствую себя чукчей-писателем :(
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.