Перейти к содержанию

Статья для предыдущей поддерживаемой версии ПО — 4.7!

Текущая рекомендованная версия — Comindware Platform 5.0. См. документацию к версии 5.0.

Ввод запроса from where select

Ввод заготовки конструкции from where select

Определения

Запрос from where select возвращает список значений из указанного источника данных, соответствующих заданному условию.

С помощью предиктивного ввода можно вставить заготовку запроса from where select.

  1. Нажмите клавиши Ctrl Пробел.
  2. Отобразится список источников данных для запроса — атрибутов типа «Запись» в текущем шаблоне и шаблонов в текущем приложении.
    Список источников данных для запроса from where select

    Список источников данных для запроса from where select

  3. Дважды нажмите системное имя атрибута или шаблона в списке, чтобы вставить в формулу заготовку конструкции from where select для него:
    Заготовка конструкции from where select

    Заготовка конструкции from where select

  4. Замените строку Ваше условие после оператора where на условие выборки записей из источника данных.

Примечание

  • В качестве источника данных для запроса from where select рекомендуется использовать атрибут типа «Запись», содержащий ID записей, из которых требуется произвести выборку.
  • Запрос по записям, связанным с атрибутом, выполняется быстрее, чем запрос по всем записям из шаблона.
  • В качестве источника данных можно использовать атрибуты типа «Запись», у которых установлен флажок «Хранить несколько значений».
  • Атрибуты, подходящие для запроса, отображаются в подсказке в начале списка с префиксом $ и суффиксом (запрос): $AttributeName (запрос).

Синтаксис запроса from where select

  • from a — объявление локальной переменной-селектора a, в которую будут помещены записи из источника данных.
  • in — объявление источника данных:
    • db->TemplateName — шаблон записи с системным именем TemplateName;
    • $RecordAttributeName — атрибут типа «Запись» с системным именем RecordAttributeName, хранящий несколько значений;
    • (from where select) — вложенный запрос. Вложенный запрос необходимо заключить в скобки и использовать в нём уникальную переменную-селектор:
      from a in (from b in $DataSource2 where Condition2 select b->Attribute2)  where Condition1 select a->Attribute1 
  • where Condition — выбор записей, для которых выражение Condition возвращает true.
  • orderby SortAttribute ascending — сортировка записей по значению атрибута SortAttribute. Порядок сортировки указывается оператором ascending — по возрастанию (порядок по умолчанию, указывать необязательно) или descending — по убыванию.
  • select a->ReturnAttribute — выборка значений атрибута ReturnAttribute записей из источника данных. Оператор select может содержать выражение.
Пример: запрос записей районов Москвы с сортировкой по убыванию названия района
from a in $Cities  where a->CityName == "Москва"  orderby a->Districts->DistrictName descending  select a->Districts 
Пример: запрос названий и авторов книг, у которых указан автор, с сортировкой по возрастанию имени автора и выводом в формате «Название: название книги. Автор: имя автора»
from book in $Books  where NOT(EMPTY(book->Author))  orderby a->boook->Author->Name  select CONCAT(LIST('Название: ', book->Name, '. Автор: ', book->Author->Name)) 

Внимание! Зарезервированные слова

Следующие слова нельзя использовать в запросе в качестве локальной переменной, так как они зарезервированы как системные:

  • and, ascending, between, by, db, descending, equals, from, group, in, into, item, join, let, on, orderby, select, source, where
  • слова, начинающиеся с подчеркивания (_)
  • имена функций и литералы

Ввод запроса из атрибута текущего шаблона

  1. Введите строку:
    from a in  
  2. После ввода оператора in отобразится список доступных источников данных. Этот список также можно вызвать, нажав клавиши Ctrl Пробел в позиции после оператора in.
    Список источников данных

    Список источников данных

  3. Дважды нажмите системное имя атрибута типа «Запись», отображающегося в списке с префиксом $ и без суффикса (запрос), чтобы вставить его в формулу.
  4. Введите условие выборки записей и атрибут для выборки с помощью операторов where и select.
Пример: формула, возвращающая список записей в шаблоне, связанном с атрибутом Costs, в которых значение атрибута TotalAmount больше значения атрибута PlannedCosts в текущей записи
from a in $Costs where a->TotalAmount > $PlannedCosts select a->id 

Ввод запроса из шаблона текущего приложения

  1. Введите строку:
    from a in db->  
  2. После ввода символов db-> отобразится список шаблонов текущего приложения. Этот список также можно вызвать, нажав клавиши Ctrl Пробел в позиции после db->.
    Список шаблонов в текущем приложении

    Список шаблонов в текущем приложении

  3. Дважды нажмите системное имя шаблона, чтобы вставить его в формулу.
  4. Введите условие выборки записей и атрибут для выборки с помощью операторов where и select.
Пример: формула, возвращающая количество записей в шаблоне Cars, с таким же значением атрибута Make, как в текущей записи
COUNT(from a in db->Cars where a->Make == $Make select a->id) 

Ввод системного имени атрибута после переменной-селектора

Здесь используется приведённый ниже пример конфигурации приложения.

  1. Введите строку:
    from a in $RequestedCars where a-> 
  2. После ввода символов a-> отобразится список атрибутов шаблона, связанного с атрибутом RequestedCars, на который ссылается локальная переменная-селектор a. Этот список также можно вызвать, нажав клавиши Ctrl Пробел в позиции после a->.
    Список атрибутов, вызванный посредством переменной-селектора

    Список атрибутов, вызванный посредством переменной-селектора

  3. Дважды нажмите системное имя атрибута _creator, чтобы вставить его в формулу. _creator — это системный атрибут, в котором хранится ID аккаунта, создавшего запись.
  4. Введите строку:
    == USER() select a->id 
Пример: формула, возвращающая количество записей в шаблоне, связанном с атрибутом RequestedCars, созданных под текущим аккаунтом
COUNT(from a in $RequestedCars where a->_creator == USER() select a->id) 

Ввод системного имени атрибута из цепочки связанных шаблонов

Здесь используется приведённый ниже пример конфигурации приложения.

  1. Введите строку:
    from a in $$RequestedCars where b->_creator-> 
  2. После ввода символов _creator-> отобразится список атрибутов системного шаблона аккаунта, с которым связан системный атрибут _creator. Этот список также можно вызвать, нажав клавиши Ctrl Пробел в позиции после оператора ->.

Список атрибутов, вызванный по цепочке связанных шаблонов

Список атрибутов, вызванный по цепочке связанных шаблонов

  1. Дважды нажмите системное имя атрибута username, чтобы вставить его в формулу.
  2. Введите строку:
    == "admin" select a->id 
Пример: формула, возвращающая список записей в шаблоне, связанном с атрибутом $RequestedCars, созданных под аккаунтом admin
from a in $RequestedCars where a->_creator->username == "admin" select a->id 

Практический пример

Подсчёт количества автомобилей марки «Лада» в заявке

Конфигурация приложения

  • Шаблон записи «Заявка на автомобили»
    • Атрибут «Запрошенные автомобили»
      • Системное имя: RequestedCars
      • Тип данных: запись
      • Связанный шаблон: Автомобили
      • Хранить несколько значений: флажок установлен
    • Запись: заявка на несколько автомобилей разных марок
  • Шаблон записи «Автомобили»
    • Атрибут «Марка»
      • Системное имя: Make
      • Тип данных: текст
      • Использовать как заголовок записей: флажок установлен
    • Записи: УАЗ, Москвич, Лада

Составление формулы

  1. Введите функцию COUNT(). См. «Ввод имени функции и просмотр подсказки по функции».
  2. В позиции аргумента функции нажмите клавиши Ctrl Пробел.
  3. Отобразится список источников данных.
    Список источников данных для запроса

    Список источников данных для запроса

  4. Дважды нажмите в списке пункт $RequestedCars (запрос), чтобы вставить в формулу заготовку конструкции from where select для него:
    Заготовка запроса

    Заготовка запроса

  5. Выделите строку Ваше условие после оператора where, чтобы заменить её на условие выборки записей из шаблона «Автомобили».
  6. Введите строку where a->.
  7. В отобразившемся списке атрибутов шаблона «Автомобили» дважды нажмите системное имя атрибута Make, чтобы вставить его в формулу. См. «Ввод системного имени атрибута после переменной-селектора».
    Список атрибутов шаблона _«Автомобили»_

    Список атрибутов шаблона «Автомобили»

  8. Введите оператор == и нажмите клавиши Ctrl Пробел.
  9. Отобразится список записей шаблона «Автомобили» в виде марок автомобилей. См. «Ввод заголовка записи связанного шаблона».
    Список записей в шаблоне _«Автомобили»_

    Список записей в шаблоне «Автомобили»

  10. Дважды нажмите пункт «Лада», чтобы вставить в формулу строковый литерал "Лада".
Формула, возвращающая количество записей, связанных с атрибутом RequestedCars, у которых атрибут Make имеет значение «Лада»
COUNT(from a in $RequestedCars where a->Make == "Лада" select a->id) 

Синтаксис формулы

  • COUNT() — возвращает количество элементов в списке, переданном в качестве аргумента.
  • from a — объявление локальной переменной a.
  • in $RequestedCars — объявление атрибута RequestedCars в качестве источника данных.
  • where a->Make == "Лада" — выборка в переменную a записей, связанных с атрибутом RequestedCars, у которых атрибут Make имеет значение `"Лада".
  • select a->id — выборка значений атрибута id полученных записей и передача списка этих значений в функцию COUNT().

Связанные статьи

Редактор выражений

Примеры использования формул

Ввод имени функции и просмотр подсказки по функции

К началу