Несколько примеров работы с регистром сведений, подчиненным регистратору (поэтому с суффиксом RecordType).
Срез последних:
http://localhost/test/odata/standard.odata/InformationRegister_Аттестация_RecordType/SliceLast(Period=datetime'2020-09-01T00:00:00')?$format=json
Данные с фильтрацией и с выбором нескольких полей:
http://localhost/test/odata/standard.odata/InformationRegister_Аттестация_RecordType/SliceLast(Period=datetime'2020-09-01T00:00:00',Condition='ПериодКонтроля_Key eq guid'61fe1cdc-ca01-11e3-9f8a-000c290d648a' and ФизическоеЛицо_Key eq guid'9810cac8-6ade-11e7-8a9e-000c29c51bb4'')?$format=json&$select=ВидВедомости,Отметка_Key
Получаем реквизиты некоторых полей. В частности если хочу получить не просто уидник формы обучения, а сразу же его наименование, или приоритет оценки:
http://localhost/test/odata/standard.odata/InformationRegister_Аттестация_RecordType/SliceLast(Period=datetime'2020-09-01T00:00:00',Condition='ПериодКонтроля_Key eq guid'61fe1cdc-ca01-11e3-9f8a-000c290d648a' and ФизическоеЛицо_Key eq guid'9810cac8-6ade-11e7-8a9e-000c29c51bb4'')?$format=json&$select=ВидВедомости,Отметка_Key,Дисциплина_Key,ФормаОбучения/Description,Отметка/ПриоритетОценки&$expand=ФормаОбучения,Отметка
Развернутся реквизиты только того справочника, на который открыт доступ для odata. И ключевой параметр &expand, который определяет какие данные выводимой сущности будут разворачиваться.
Выборка из регистра сведений за период:
http://localhost/test/odata/standard.odata/InformationRegister_СостояниеСтудентов_RecordType?$format=json&$filter=Period ge datetime'2020-08-01T00:00:00' and Period le datetime'2020-08-01T23:59:59'
Выборка документов за период:
http://localhost/test/odata/standard.odata/Document_Приказы?$format=json&$filter=Date ge datetime'2020-08-01T00:00:00' and Date le datetime'2020-08-01T23:59:59'
Выборка из табличной части документа уже не даст делать выборку по дате, поэтому как вариант по ссылке на документ:
http://localhost/test/odata/standard.odata/Document_Приказы_ИмяТаблицы?$format=json&$filter=Ref_Key eq guid'9e571bb2-ece5-11ea-7383-000c29c51bb4'
Создание документа:
http://localhost/test/odata/standard.odata/Document_Ведомость?$format=json
В данном случае нужно будет использовать метод POST и передавать тело запроса.
{ "Date": "0020-10-28T12:00:00", "ВидВедомости": "АттестационнаяВедомость", "ВидКонтроля": "bfc1af83-bad3-4089-a05d-f5826b28dd17" "ДанныеПоАттестации": [ { "LineNumber": "1", "ФизическоеЛицо_Key": "db60b5af-7ed2-11e4-8279-6c3be51acb55", "ЗачетнаяКнига_Key": "28b0e3a2-8480-11e5-8e89-000c29c51bb4" } ] }
В данном случае ДанныеПоАттестации это табличная часть документа.
После сохранения документа guid не возвращается в теле ответа, но возвращается присвоенный новому документу номер, поэтому guid можно получить, например так:
http://localhost/test/odata/standard.odata/Document_Ведомость?$format=json&$filter=Number eq '000165654'
Плюсом еще лучше конечно дату документа добавить, если нумерация периодическая.
Изменение документа:
Метод запроса будет PATCH.
Адрес: http://localhost/test/odata/standard.odata/Document_Ведомость(guid'52655844-18fa-11eb-8dba-e0699590fb50')?$format=json
Тело запроса:
{ "Комментарий": "Тест" }
В данном случае поменяли комментарий документа.
Удаление документа:
Метод: DELETE
Адрес тот же: http://localhost/test/odata/standard.odata/Document_Ведомость(guid'52655844-18fa-11eb-8dba-e0699590fb50')
Жаль, что автор примеры придумывал и не проверял, просто откуда-то скопипастил. Выборка документов по датам так не работает!!!
Жаль что находятся такие всезнайки, которые бездоказательно берутся обвинять других. Скажи тогда откуда я скопипастил. Или может весь мой блог это сплошной копипаст? Или все не копипаст, а вот именно выборку документов я откуда-то скопипастил?
Как выбрать записи только с заполненным атрибутом?
Не пробовал подобные выборки. Наверное, что-то типа:
Можно ли получить результат запроса к связанным таблицам ? Можно ли передать в качестве параметра запроса массив (список) ?
По связанным данным может я не так понял, но приведу на всякий случай пример из ИТС, где раскрывается должность:
localhost/REST/odata/standard.odata/Catalog_Сотрудники?$format=json&$select=Description, ДатаРождения, Должность&$expand=Должность
А по поводу передачи списка в качестве параметра очень сомневаюсь. Т.к. если фильтрация происходит с помощью GET запроса, то там есть ограничение на количество символов, ну а если массив не большой, то тогда можно и логическое or использовать. Хотя могу ошибаться, знания ограничиваются в основном тем, что написано в ИТС.
Спасибо! Помогло
Добрый день! Как одновременно для регистра накопления указать выборку за период и выборку по нескольким полям?
Кто-нибудь знает как отобрать табличные части документа по реквизиту документа?
Или отобрать сначала документы, а потом получить их табличные части?
Отправить комментарий