Стандартный интерфейс OData. Регистры накопления
В данной статье я показываю как научиться работать с регистрами накопления через стандартной интерфейс OData. Для демонстрации примеров я обращаюсь к регистру накопления ДемоОстаткиТоваровВМестахХранения
демонстрационной версии библиотеки стандартных подсистем 3.0 . Базу данных DemoSSL я опубликовал локально на беб-сервере на моем компьютере и включил интерфейс OData .

Для обращения к виртуальным таблицам регистров накопления через стандартный интерфейс OData нужно использовать одну из следующих функции :
- Balance() – Обращение к виртуальной таблице остатков с параметрами :
- Condition (условие) типа строка
- Dimensions (измерения регистра) типа строка
- Period ( период ) типа дата время
- Turnovers() – Обращение к виртуальной таблице оборотов с параметрами
- Condition (условие) типа строка
- Dimensions (измерения) типа строка
- EndPeriod (Конец периода) типа дата время
- StartPeriod” (Начало периода ) типа строка
- BalanceAndTurnovers() – Обращение к виртуальной таблице остатков и оборотов. Функция содержит те же параметры как и у функции Turnovers()
Отметим, что в этих функциях отсутствует параметр, связанный с периодичностью виртуальных таблиц обороты и остатки и обороты и мне не удалось получить обороты в разрезе регистратора
oData работает с виртуальными таблицами регистров накопления и бухгалтерии с помощью функции Balance(), Turnovers() и BalanceAndTurnovers() . В этих функциях отсутствует параметр, связанный с периодичностью
Для получения движение по регистраторам нужно написать адрес ресурса таким образом :
http://Localhost/DemoSSL/odata/standard.odata/AccumulationRegister__ДемоОстаткиТоваровВМестахХранения?&$top=1&$format=json
В результате получается одна запись регистра в формате json благодаря параметру $top=1. В адресе ресурса доступны также другие параметры, такие как :
- $filter – Правила формирования условия отбора,
- $orderby – Данный параметр позволяет задать упорядочивание результата запроса ,
- $select – описывает перечень свойств сущности, которые получаются при обращении к стандартному интерфейсу OData
- $expand – Данный параметр позволяет вместе с результатами основного запроса получать значения связанных сущностей, что позволит не запрашивать каждую сущность отдельно.
Примеры с использованием функции
Balance(), Turnovers() и BalanceAndTurnovers() :
Следующий запрос дает остатки номенклатуры в разрезе складов :
http://Localhost/DemoSSL/odata/standard.odata/AccumulationRegister__ДемоОстаткиТоваровВМестахХранения/Balance(Dimensions='Номенклатура,МестоХранения')?&$format=json
Фрагмент результата запроса:
value": [
{ "КоличествоBalance": -36,
"Номенклатура_Key": "b1edc237-ea23-11de-8634-001d600d9ad2", "МестоХранения_Key": "b1edc23f-ea23-11de-8634-001d600d9ad2" },
{ "КоличествоBalance": 1,
"Номенклатура_Key": "b1edc237-ea23-11de-8634-001d600d9ad2", "МестоХранения_Key": "b1edc240-ea23-11de-8634-001d600d9ad2" },
{
Следующий запрос дает остатки на начала , обороты за период и остатки на конец в разрезе номенклатуры.
http://Localhost/DemoSSL/odata/standard.odata/AccumulationRegister__ДемоОстаткиТоваровВМестахХранения/BalanceAndTurnovers(EndPeriod=datetime'2018-02-01T00:00:00',StartPeriod=datetime'2018-01-01T00:00:00',Dimensions='Номенклатура')?&$format=json
Фрагмент результата:
"value": [
{ "КоличествоOpeningBalance": -35,
"КоличествоTurnover": 0,
"КоличествоReceipt": 0,
"КоличествоExpense": 0,
"КоличествоClosingBalance": -35,
"Номенклатура_Key": "b1edc237-ea23-11de-8634-001d600d9ad2" },
{ "КоличествоOpeningBalance": -24,
"КоличествоTurnover": 0,
"КоличествоReceipt": 0,
"КоличествоExpense": 0,
"КоличествоClosingBalance": -24,
"Номенклатура_Key": "b1edc238-ea23-11de-8634-001d600d9ad2" },
{
См. также :
Здравствуйте. Спасибо, статья многое прояснила. А как мне получить остатки по дням. Т.е. не просто за период, а с разбивкой по дням?