Дополнительно

РАЗДЕЛ НАХОДИТСЯ В РАЗРАБОТКЕ

Статьи из этого раздела помогают лучше понять некоторые элементы платформы WT и не добавляют новую логику в учебный проект.

Статьи посвящены:

  • Array - универсальное значение для работы с массивами/матрицами на форме;

  • ArrayGetDataConnection - загружающее соединение с данными, которое преобразует массив/матрицу в DataConnection для использования на форме, например, в таблице DatabaseTable;

  • ConvertDataConnection - загружающее соединение с данными преобразующее структуру данных, полученных из другого загружающего соединения с данными.

Подготовка

Для работы со статьями этого раздела нам понадобиться тестовая форма:

Скачайте файл формы и добавьте его в папку Forms проекта. Настройте команду открытия тестовой формы с главной формы WT-программы, например, через главное меню - так будет удобнее работать с формой без необходимости перезапускать приложение.

Форма

На форме есть список клиентов, список городов и список позиций заказов. Архивные клиенты и города закрашиваются серым цветом.

На основе этих списков будем рассматривать работу с универсальным значением <Array> и ArrayGetDataConnection. Полученные результаты от выполнения операций над массивом/матрицей будем отображать в текстовом поле справа. А результат работы с ArrayGetDataConnection будем отображать в таблице.

Запросы

Добавьте в серверный xml-файл запрос на получение списка клиентов, списка городов и списка позиций заказов:

Template.xml
<SqlQuery Name="TestClientSelectSqlQuery">
  <Text>
    SELECT
      client_id AS "ClientId",
      title AS "Title",
      city_id AS "CityId",
      archive AS "Archive"
    FROM
      template.client
    ORDER BY client_id;
  </Text>
</SqlQuery>

<SqlQuery Name="TestCitySelectSqlQuery">
  <Text>
    SELECT
      city_id AS "CityId",
      title AS "Title",
      archive AS "Archive"
    FROM
      template.city
    ORDER BY city_id;
  </Text>
</SqlQuery>

<SqlQuery Name="TestOrderPositionSelectSqlQuery">
  <Text>
    SELECT
      O.client_id AS "ClientId",
      M.title AS "MaterialTitle",
      OP.quantity AS "Quantity",
      OP.unit_price AS "UnitPrice",
      MC.title AS "MaterialCategoryTitle",
      U.short_title AS "UnitShortTitle"
    FROM
      template.order_position OP
      LEFT JOIN template.order O USING(order_id)
      LEFT JOIN template.material M USING(material_id)
      LEFT JOIN template.material_category MC USING(material_category_id)
      LEFT JOIN template.unit U USING(unit_id)
    ORDER BY O.client_id;
  </Text>
</SqlQuery>

<SqlQuery Name="TestOrderSelectSqlQuery">
  <Text>
    SELECT
      order_id AS "OrderId",
      client_id AS "ClientId",
      order_number AS "OrderNumber",
      order_date AS "OrderDate"
    FROM
      template.order
    WHERE
      NOT deleted AND
      added;
  </Text>
</SqlQuery>

Добавьте права доступа на тестовые запросы группе GuestGroup.

Отлично! Теперь можем подробнее поговорить об особенностях работы <Array> и ArrayGetDataConnection.

Last updated