Здравствуйте! В теме новичок, столкнулся с необходимостью интеграции сервиса клиента на сайт. В целом сервис был написан еще до меня и работал, но появилась непредвиденная ситуация. На сайт выгружаются объекты (квартиры/дома и т.п.) из crm клиента, проверка идет по полю ModifiedOn. И для самих объектов это срабатывает. Но в отдельной коллекции есть фото объектов, и там меняется именно поле updated (поле ModifiedOn при этом может быть года этак 2015 и в выборку свежих объектов не попадает). Пример запроса:
Здравствуйте,
вы неправильно поняли, поля updated не существует в базе данных для данной сущности. Это поле добавляется сервисом, и отображает серверное время ответа на ваш запрос, а дата изменения сущности в Bpmonline, это как раз колонка ModifiedOn, которая существует, и меняется в рамках Bpmonline когда данная сущность изменяется. Следовательно, если у картинки такая дата изменения, то возможно она именно тогда и была загружена\изменена. Сам объект недвижимости мог быть скорректирован вчера, но картинки загружены в него еще полгода назад, и конечно же их ModifiedOn не будет изменен только потому что ModifiedOn самого объекта изменен, и.т.д. В общем одата судя по всему работает корректно, а вам стоит пересмотреть саму бизнес задачу получения данных.
Вы можете получать свою информацию в несколько этапов, к примеру, вначале получаете объекты недвижимости, измененные сегодня, потом оббегая список этих объектов, делаете запрос к их картинкам, с условием по родителю. Id которого вы получили в предыдущем запросе.
Спасибо за ваши ответы, что-то такое я и подозревал (собственно, ранее уже пытался брать фотку по id исходного объекта, и столкнулся с той же ошибкой, что опишу далее).
Почитал еще по поводу фильтра, но делаю как в примерах, и ответ сервера не тот)
В данном случае id исходного объекта - PropertyId. Взял guid этого объекта из сообщения выше, создал запрос:
<error xmlns="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata">[geshifilter-code]1[/geshifilter-code]<message xml:lang="">Элемент коллекции с именем PropertyId не найден</message><innererror><message>Элемент коллекции с именем PropertyId не найден</message><type>Terrasoft.Common.ItemNotFoundException</type><stacktrace>
at Terrasoft.Core.MetaItemCollection`1.GetByName(String name)
at Terrasoft.Core.Entities.EntitySchema.GetInheritedPath(String columnPath)
at Terrasoft.Core.Entities.EntitySchemaQuery.CreateSchemaColumnExpression(EntitySchemaQuery parentQuery, EntitySchema rootSchema, String columnPath, Boolean useCoalesceFunctionForMultiLookup, Boolean useDisplayValue)
at Terrasoft.Core.Entities.EntityQueryWhereBlockBuilder.CreateExpression(Expression node)
at Terrasoft.Core.Entities.EntityQueryWhereBlockBuilder.CreateSimpleFilter(BinaryExpression binary)
at Terrasoft.Core.Entities.EntityQueryWhereBlockBuilder.BuildBlock(MethodCallExpression node)
at Terrasoft.Core.Entities.EntityQueryProvider.VisitMethodCall(MethodCallExpression node)
at Terrasoft.Core.Entities.EntityQueryProvider.Build(Expression expression)
at Terrasoft.Core.Entities.EntityQueryProvider.LoadEntityCollection(Expression expression)
at Terrasoft.Core.Entities.EntityQueryProvider.ExecuteEnumerable(Type elementType, Expression expression)
at Terrasoft.Core.Entities.EntityQuery`1.GetEnumerator()
at System.Data.Services.WebUtil.GetRequestEnumerator(IEnumerable enumerable)
at System.Data.Services.DataService`1.SerializeResponseBody(RequestDescription description, IDataService dataService, IODataResponseMessage responseMessage)
at System.Data.Services.DataService`1.HandleRequest()</stacktrace></innererror></error>