Стандартный интерфейс OData. Регистры накопления

Печать (Ctrl+P)


В данной статье я показываю как научиться работать с регистрами накопления через стандартной интерфейс 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" },
{

См. также :

0

Автор публикации

не в сети 2 недели

master1c8

0
Комментарии: 11Публикации: 426Регистрация: 25-12-2016

One Reply to “Стандартный интерфейс OData. Регистры накопления”

  1. nsbars

    Здравствуйте. Спасибо, статья многое прояснила. А как мне получить остатки по дням. Т.е. не просто за период, а с разбивкой по дням?

    0

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.