<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://wiki.era-platform.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%A0%D0%B0%D0%B1%D0%BE%D1%82%D0%B0_%D1%81_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D0%BC%D0%B8_%D0%BA%D0%BB%D0%B0%D1%81%D1%81%D0%B0_%D1%87%D0%B5%D1%80%D0%B5%D0%B7_API</id>
	<title>Работа с данными класса через API - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.era-platform.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%A0%D0%B0%D0%B1%D0%BE%D1%82%D0%B0_%D1%81_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D0%BC%D0%B8_%D0%BA%D0%BB%D0%B0%D1%81%D1%81%D0%B0_%D1%87%D0%B5%D1%80%D0%B5%D0%B7_API"/>
	<link rel="alternate" type="text/html" href="https://wiki.era-platform.ru/index.php?title=%D0%A0%D0%B0%D0%B1%D0%BE%D1%82%D0%B0_%D1%81_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D0%BC%D0%B8_%D0%BA%D0%BB%D0%B0%D1%81%D1%81%D0%B0_%D1%87%D0%B5%D1%80%D0%B5%D0%B7_API&amp;action=history"/>
	<updated>2026-05-01T02:21:38Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.42.3</generator>
	<entry>
		<id>https://wiki.era-platform.ru/index.php?title=%D0%A0%D0%B0%D0%B1%D0%BE%D1%82%D0%B0_%D1%81_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D0%BC%D0%B8_%D0%BA%D0%BB%D0%B0%D1%81%D1%81%D0%B0_%D1%87%D0%B5%D1%80%D0%B5%D0%B7_API&amp;diff=1525&amp;oldid=prev</id>
		<title>AZykov: Новая страница: «Создадим два класса и заполним небольшим количеством данных:   * demo/Customers (свойства - name, address). Режим хранилища - category  * demo/Orders (свойства - datetime, customer, description, cost). Режим хранилища - history  Доступ к данным всех классов продуктового слоя возможен через REST API. Подроб...»</title>
		<link rel="alternate" type="text/html" href="https://wiki.era-platform.ru/index.php?title=%D0%A0%D0%B0%D0%B1%D0%BE%D1%82%D0%B0_%D1%81_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D0%BC%D0%B8_%D0%BA%D0%BB%D0%B0%D1%81%D1%81%D0%B0_%D1%87%D0%B5%D1%80%D0%B5%D0%B7_API&amp;diff=1525&amp;oldid=prev"/>
		<updated>2025-03-28T14:02:57Z</updated>

		<summary type="html">&lt;p&gt;Новая страница: «Создадим два класса и заполним небольшим количеством данных:   * demo/Customers (свойства - name, address). Режим хранилища - category  * demo/Orders (свойства - datetime, customer, description, cost). Режим хранилища - history  Доступ к данным всех классов продуктового слоя возможен через REST API. Подроб...»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Создадим два класса и заполним небольшим количеством данных: &lt;br /&gt;
&lt;br /&gt;
* demo/Customers (свойства - name, address). Режим хранилища - category &lt;br /&gt;
* demo/Orders (свойства - datetime, customer, description, cost). Режим хранилища - history&lt;br /&gt;
&lt;br /&gt;
Доступ к данным всех классов продуктового слоя возможен через REST API. Подробное описание принципов работы методов GET/POST/PUT/PATCH/DELETE приведено на [https://vendor.era-platform.ru/docs/era/latest/api/rest/rest_api_approach.html ресурсе Vendor].&lt;br /&gt;
&lt;br /&gt;
После входа в систему можно выполнять GET-запросы через браузер. Для выполнения других методов удобно использовать сторонние утилиты (например, Talend API Tester).&lt;br /&gt;
&lt;br /&gt;
Получение коллекции: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;http://localhost/rest/v1/model/demo/Customers&amp;lt;/nowiki&amp;gt;:&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 {&lt;br /&gt;
 &amp;quot;address&amp;quot;: null,&lt;br /&gt;
 &amp;quot;id&amp;quot;: &amp;quot;d6cf6060-ea44-48aa-8670-1d37b963a2b6&amp;quot;,&lt;br /&gt;
 &amp;quot;name&amp;quot;: &amp;quot;Сергей Петрович&amp;quot;&lt;br /&gt;
 },&lt;br /&gt;
 {&lt;br /&gt;
 &amp;quot;address&amp;quot;: &amp;quot;пр. Мира д. 1&amp;quot;,&lt;br /&gt;
 &amp;quot;id&amp;quot;: &amp;quot;6208fd97-2b80-41a5-85b2-95649bcde981&amp;quot;,&lt;br /&gt;
 &amp;quot;name&amp;quot;: &amp;quot;Михаил Иванович&amp;quot;&lt;br /&gt;
 },&lt;br /&gt;
 {&lt;br /&gt;
 &amp;quot;address&amp;quot;: &amp;quot;г. Калининград&amp;quot;,&lt;br /&gt;
 &amp;quot;id&amp;quot;: &amp;quot;5f347978-dba0-4180-b702-eac35923fcd0&amp;quot;,&lt;br /&gt;
 &amp;quot;name&amp;quot;: &amp;quot;Яков Игоревич&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Получение сущности по идентификатору: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;http://localhost/rest/v1/model/demo/Customers/6208fd97-2b80-41a5-85b2-95649bcde981&amp;lt;/nowiki&amp;gt;:&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;address&amp;quot;: &amp;quot;пр. Мира д. 1&amp;quot;,&lt;br /&gt;
 &amp;quot;id&amp;quot;: &amp;quot;6208fd97-2b80-41a5-85b2-95649bcde981&amp;quot;,&lt;br /&gt;
 &amp;quot;name&amp;quot;: &amp;quot;Михаил Иванович&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;При больших объемах данных в хранилище выдача будет ограничена (максимальное количество строк можно указать в параметрах класса). Для постраничного получения коллекции предназначены параметры limit и offset:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;http://localhost/rest/v1/model/demo/Customers?limit=1&amp;amp;offset=2&amp;lt;/nowiki&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 {&lt;br /&gt;
 &amp;quot;address&amp;quot;: &amp;quot;г. Калининград&amp;quot;,&lt;br /&gt;
 &amp;quot;id&amp;quot;: &amp;quot;5f347978-dba0-4180-b702-eac35923fcd0&amp;quot;,&lt;br /&gt;
 &amp;quot;name&amp;quot;: &amp;quot;Яков Игоревич&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Для сортировки данных предназначен параметр order:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;http://localhost/rest/v1/model/demo/Customers?order=&amp;lt;/nowiki&amp;gt;[{&amp;quot;name&amp;quot;:&amp;quot;desc&amp;quot;}]&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 {&lt;br /&gt;
 &amp;quot;address&amp;quot;: &amp;quot;г. Калининград&amp;quot;,&lt;br /&gt;
 &amp;quot;id&amp;quot;: &amp;quot;5f347978-dba0-4180-b702-eac35923fcd0&amp;quot;,&lt;br /&gt;
 &amp;quot;name&amp;quot;: &amp;quot;Яков Игоревич&amp;quot;&lt;br /&gt;
 },&lt;br /&gt;
 {&lt;br /&gt;
 &amp;quot;address&amp;quot;: null,&lt;br /&gt;
 &amp;quot;id&amp;quot;: &amp;quot;d6cf6060-ea44-48aa-8670-1d37b963a2b6&amp;quot;,&lt;br /&gt;
 &amp;quot;name&amp;quot;: &amp;quot;Сергей Петрович&amp;quot;&lt;br /&gt;
 },&lt;br /&gt;
 {&lt;br /&gt;
 &amp;quot;address&amp;quot;: &amp;quot;пр. Мира д. 1&amp;quot;,&lt;br /&gt;
 &amp;quot;id&amp;quot;: &amp;quot;6208fd97-2b80-41a5-85b2-95649bcde981&amp;quot;,&lt;br /&gt;
 &amp;quot;name&amp;quot;: &amp;quot;Михаил Иванович&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Для получения коллекции history обязательно указать интервал: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;http://localhost/rest/v1/model/demo/Orders&amp;lt;/nowiki&amp;gt;: &lt;br /&gt;
&lt;br /&gt;
{&amp;quot;error_code&amp;quot;:1413,&amp;quot;error_message&amp;quot;:&amp;quot;Expected &amp;#039;interval&amp;#039; parameter: [From, To]&amp;quot;} &lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;http://localhost/rest/v1/model/demo/Orders?interval=&amp;lt;/nowiki&amp;gt;[&amp;quot;2022-01-01&amp;quot;,&amp;quot;2022-02-01&amp;quot;]:&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 {&lt;br /&gt;
 &amp;quot;cost&amp;quot;: 35000,&lt;br /&gt;
 &amp;quot;customer_id&amp;quot;: &amp;quot;6208fd97-2b80-41a5-85b2-95649bcde981&amp;quot;,&lt;br /&gt;
 &amp;quot;datetime&amp;quot;: &amp;quot;2022-01-06T08:10:00Z&amp;quot;,&lt;br /&gt;
 &amp;quot;description&amp;quot;: &amp;quot;Телевизор&amp;quot;,&lt;br /&gt;
 &amp;quot;id&amp;quot;: &amp;quot;43a538d5-a5ee-4f14-85d1-534545fa5565&amp;quot;&lt;br /&gt;
 },&lt;br /&gt;
 {&lt;br /&gt;
 &amp;quot;cost&amp;quot;: 55000,&lt;br /&gt;
 &amp;quot;customer_id&amp;quot;: &amp;quot;6208fd97-2b80-41a5-85b2-95649bcde981&amp;quot;,&lt;br /&gt;
 &amp;quot;datetime&amp;quot;: &amp;quot;2022-01-06T16:00:00Z&amp;quot;,&lt;br /&gt;
 &amp;quot;description&amp;quot;: &amp;quot;Холодильник&amp;quot;,&lt;br /&gt;
 &amp;quot;id&amp;quot;: &amp;quot;da396bd0-64e2-466f-a2c8-f6f3b054417b&amp;quot;&lt;br /&gt;
 },&lt;br /&gt;
 {&lt;br /&gt;
 &amp;quot;cost&amp;quot;: 10000,&lt;br /&gt;
 &amp;quot;customer_id&amp;quot;: &amp;quot;6208fd97-2b80-41a5-85b2-95649bcde981&amp;quot;,&lt;br /&gt;
 &amp;quot;datetime&amp;quot;: &amp;quot;2022-01-04T08:00:00Z&amp;quot;,&lt;br /&gt;
 &amp;quot;description&amp;quot;: &amp;quot;Пылесос&amp;quot;,&lt;br /&gt;
 &amp;quot;id&amp;quot;: &amp;quot;c3b903be-a534-406b-8842-407f54ffdc43&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Важно помнить, что значения типа дата-время хранятся и обрабатываются в часовом поясе UTC&lt;br /&gt;
&lt;br /&gt;
Средства по работе с интервалами &lt;br /&gt;
&lt;br /&gt;
При работе с коллекциями history из продуктового слоя в качестве интервала можно указывать одну из следующих констант, которые будут автоматически конвертированы в массив из двух элементов с учетом текущего времени: &lt;br /&gt;
&lt;br /&gt;
* now &lt;br /&gt;
* hour &lt;br /&gt;
* day &lt;br /&gt;
* week &lt;br /&gt;
* month &lt;br /&gt;
* year &lt;br /&gt;
* currentHour &lt;br /&gt;
* currentDay = today &lt;br /&gt;
* currentWeek &lt;br /&gt;
* currentMonth &lt;br /&gt;
* currentYear &lt;br /&gt;
&lt;br /&gt;
full – интервал с 01.01.1900 по 01.01.2100 &lt;br /&gt;
&lt;br /&gt;
Для использования в отчетах, календарях и других элементах управления на базе классов history предусмотрены стандартные фильтры с полями timeStartFrom и timeStartTo: &lt;br /&gt;
&lt;br /&gt;
* platform/HistoryInputToday &lt;br /&gt;
* platform/HistoryInputWeek &lt;br /&gt;
* platform/HistoryInputMonth &lt;br /&gt;
* platform/HistoryInputYear &lt;br /&gt;
* platform/HistoryInputFutureWeek&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Для фильтрации данных предназначен параметр filter. &lt;br /&gt;
&lt;br /&gt;
Синтаксис параметра – массив, представляющий собой польскую запись выражений. Первый элемент массива – оператор, последующие – его аргументы. &lt;br /&gt;
&lt;br /&gt;
Примеры: &lt;br /&gt;
&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;http://localhost/rest/v1/model/demo/Customers?filter=&amp;lt;/nowiki&amp;gt;[&amp;quot;==&amp;quot;,[&amp;quot;property&amp;quot;,&amp;quot;name&amp;quot;], [&amp;quot;const&amp;quot;,&amp;quot;Михаил Иванович&amp;quot;]] &lt;br /&gt;
* &amp;lt;nowiki&amp;gt;http://localhost/rest/v1/model/demo/Customers?filter=&amp;lt;/nowiki&amp;gt;[&amp;quot;like&amp;quot;,[&amp;quot;property&amp;quot;,&amp;quot;name&amp;quot;], [&amp;quot;const&amp;quot;,&amp;quot;*е*&amp;quot;]] &lt;br /&gt;
* &amp;lt;nowiki&amp;gt;http://localhost/rest/v1/model/demo/Customers?filter=&amp;lt;/nowiki&amp;gt;[&amp;quot;and&amp;quot;,[&amp;quot;like&amp;quot;,[&amp;quot;property&amp;quot;,&amp;quot;name&amp;quot;], [&amp;quot;const&amp;quot;,&amp;quot;*е*&amp;quot;]],[&amp;quot;isnotnull&amp;quot;,[&amp;quot;property&amp;quot;,&amp;quot;address&amp;quot;]]]&lt;br /&gt;
&lt;br /&gt;
Поддерживаются следующие функции (после слеша указано количество аргументов, в скобках – синонимы):&lt;br /&gt;
&lt;br /&gt;
* isnull/1&lt;br /&gt;
* isnotnull/1&lt;br /&gt;
* not/1 (&amp;#039;!&amp;#039;)&lt;br /&gt;
* bool/1&lt;br /&gt;
* integer/1&lt;br /&gt;
* float/1&lt;br /&gt;
* string/1&lt;br /&gt;
* uuid/1&lt;br /&gt;
* const/1&lt;br /&gt;
* lower/1&lt;br /&gt;
* upper/1&lt;br /&gt;
* year/1 (&amp;#039;toYYYY&amp;#039;,&amp;#039;toYear&amp;#039;)&lt;br /&gt;
* quarter/1&lt;br /&gt;
* month/1&lt;br /&gt;
* day/1&lt;br /&gt;
* hour/1&lt;br /&gt;
* minute/1&lt;br /&gt;
* second/1&lt;br /&gt;
* weekday/1&lt;br /&gt;
* toYYYYMM/1&lt;br /&gt;
* toYYYYMMDD/1&lt;br /&gt;
* concat/any (&amp;#039;.&amp;#039;)&lt;br /&gt;
* join/any (&amp;#039;..&amp;#039;)&lt;br /&gt;
* list/any&lt;br /&gt;
* null/0&lt;br /&gt;
* +/any (&amp;#039;add&amp;#039;)&lt;br /&gt;
* -/2 (&amp;#039;sub&amp;#039;)&lt;br /&gt;
* */2 (&amp;#039;mul&amp;#039;)&lt;br /&gt;
* //2 (&amp;#039;div&amp;#039;)&lt;br /&gt;
* ///2 (&amp;#039;ddiv&amp;#039;)&lt;br /&gt;
* %/2 (&amp;#039;rem&amp;#039;)&lt;br /&gt;
* &amp;amp;&amp;amp;/any (&amp;#039;and&amp;#039;)&lt;br /&gt;
* ||/any (&amp;#039;or&amp;#039;)&lt;br /&gt;
* ==/2 (&amp;#039;equal&amp;#039;,&amp;#039;equals&amp;#039;)&lt;br /&gt;
* !=/2 (&amp;#039;notequal&amp;#039;,&amp;#039;notequals&amp;#039;,&amp;#039;&amp;lt;&amp;gt;&amp;#039;)&lt;br /&gt;
* &amp;gt;/2 (&amp;#039;greater&amp;#039;)&lt;br /&gt;
* &amp;gt;=/2 (&amp;#039;notless&amp;#039;,&amp;#039;greaterorequal&amp;#039;)&lt;br /&gt;
* &amp;lt;/2 (&amp;#039;less&amp;#039;)&lt;br /&gt;
* &amp;lt;=/2 (&amp;#039;notgreater&amp;#039;,&amp;#039;lessorequal&amp;#039;,&amp;#039;=&amp;lt;&amp;#039;)&lt;br /&gt;
* in/2&lt;br /&gt;
* contains/2&lt;br /&gt;
* like/2&lt;br /&gt;
* interval_in_minutes/2&lt;br /&gt;
* dateadd/2&lt;br /&gt;
* datediff/2&lt;br /&gt;
* between/3&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Для построения агрегирующих выборок предназначены параметры groupby и aggr: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;http://localhost/rest/v1/model/demo/Orders?interval=&amp;lt;/nowiki&amp;gt;[&amp;quot;2022-01-01&amp;quot;,&amp;quot;2022-02- 01&amp;quot;]&amp;amp;groupby={&amp;quot;customer_id&amp;quot;:[&amp;quot;property&amp;quot;,&amp;quot;customer_id&amp;quot;]}&amp;amp;aggr={&amp;quot;count&amp;quot;:[&amp;quot;count&amp;quot;,1],&amp;quot;sum&amp;quot;: [&amp;quot;sum&amp;quot;,[&amp;quot;property&amp;quot;,&amp;quot;cost&amp;quot;]],&amp;quot;avg&amp;quot;:[&amp;quot;avg&amp;quot;,[&amp;quot;property&amp;quot;,&amp;quot;cost&amp;quot;]]}:&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
 {&lt;br /&gt;
 &amp;quot;avg&amp;quot;: 33333.333333333336,&lt;br /&gt;
 &amp;quot;count&amp;quot;: 3,&lt;br /&gt;
 &amp;quot;customer_id&amp;quot;: &amp;quot;6208fd97-2b80-41a5-85b2-95649bcde981&amp;quot;,&lt;br /&gt;
 &amp;quot;sum&amp;quot;: 100000&lt;br /&gt;
 }&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Поддерживаются следующие агрегирующие функции: &lt;br /&gt;
&lt;br /&gt;
* count/1 &lt;br /&gt;
* sum/1 &lt;br /&gt;
* min/1 &lt;br /&gt;
* max/1 &lt;br /&gt;
* avg/1 &lt;br /&gt;
* and/1 &lt;br /&gt;
* or/1 &lt;br /&gt;
* join/2&lt;br /&gt;
&lt;br /&gt;
[[Категория:Практика]]&lt;br /&gt;
[[Категория:Курс Разработка приложений]]&lt;/div&gt;</summary>
		<author><name>AZykov</name></author>
	</entry>
</feed>