Добрый день.
Занимаюсь реализацией интеграции с BPM'Online 7.10 через DataService.
Возникла проблема которая выражается в том, что никак не удается создать запись с заполненной датой и временем или обновить поле дату и время в имеющейся записи.
Код примерно такой
foreach(....)
{
list.Add(c1.Attribute.FieldName, new ColumnExpression()
{
ExpressionType = EntitySchemaQueryExpressionType.Parameter,
Parameter = new Parameter()
{
Value = value,
DataValueType = c1.Attribute.DataType
}
});
}
var insertQuery = new InsertQuery()
{
RootSchemaName = EntityName,
ColumnValues = new ColumnValues()
};
insertQuery.ColumnValues.Items = new Dictionarystring, ColumnExpression>(list);
Как только в список полей для создания попадается поле с датой и временем, то при попытке создать запись выходит ошибка.
Позже я пытался вместо объекта DataTime передавать строку с форматированием которое указано в https://community.terrasoft.ru/forum/topic/24597 , но это так же не помогло.
1) Подскажите, пожалуйста, как работать с полями дата и время?
2) Есть ли способ чтобы DataService выдавал более UserFrendly ошибку чем "Удаленный сервер возвратил ошибку: (500) Внутренняя ошибка сервера."? Т.к. выяснение того, что ошибка связана именно с типом DataTime заняло много времени, причем формат запроса корректен и "вроде бы" DataService не должен ругаться на него 500 ошибкой...
Нравится
Добрый день!
Для передачи даты через DataService формат должен быть следующий : [""\""2000-12-31T09:41:59\""""""""]. Например:
[quote="Мотков Илья"]
Добрый день!
Для передачи даты через DataService формат должен быть следующий : [""\""2000-12-31T09:41:59\""""""""]. Например:
"Габбазов Искандер Рустемович" написал:На сколько я понимаю ваш пример это кусок "правильного" JSON'а.
нет, JSON тут совсем не при чем.
Это текстовое представление формата TimeStamp,
Оператор @ - интерпритирует строку без управляющих последовательностей, ну и двойные кавычки "схлопываются" по две в одну, на выходе имеем
const string startDate = @"""\""2000-12-31T09:41:59\"""""""""";
Добрый день, Илья!
Другим Ильей :) формат указан правильный:
[quote="Мотков Илья"]
const string startDate = @"""\""2000-12-31T09:41:59\"""""""""";
значение
@"""\""2000-12-31T09:41:59\"""""""""";
Илья, нет, формат все же верный, то есть тайм-стамп в экранированных кавычках, и в кавычках. Я не имел ввиду, что это должен быть валидный json, это просто формат, в виде которого по определенным архтиктурным причинам передается дата в приложении.
"Кот Владимир Владимирович" написал:то есть тайм-стамп в экранированных кавычках, и в кавычках.
вот, смысл прояснился :) понятно, спасибо за пояснения.
На данный момент сделал так:
switch (t.Name) { ... case "DateTime": value = @"""\""2000-12-31T09:41:59\"""""""""";
Те кто все-таки забрел в эту тему, достаточно передать DateTime обернутым в экранированные кавычки.
var date = DateTime.Now; insertQuery.ColumnValues.Items.Add("....", new ColumnExpression() { ExpressionType = EntitySchemaQueryExpressionType.Parameter, Parameter = new Parameter() { Value = "\""+date+ ""\""""