Описание источника данных — различия между версиями

Материал из GB wiki
Перейти к: навигация, поиск
Строка 24: Строка 24:
 
   `Articul['Товар']=MyArt,Certificate['Серия']=MyCert{Constraints='Src=gb_get(1,DataSet.?MyArt,"Passports");KeyField=Id;ListField=Id.Name;DependsOn=DataSet.?MyArt'}`  
 
   `Articul['Товар']=MyArt,Certificate['Серия']=MyCert{Constraints='Src=gb_get(1,DataSet.?MyArt,"Passports");KeyField=Id;ListField=Id.Name;DependsOn=DataSet.?MyArt'}`  
 
  )
 
  )
?MyArt приходится писать из-за специфики работы функции QueryParams (на момент создания элементов управления датасет еще не активен и полей в нем еще нет)
+
?MyArt приходится писать из-за специфики работы функции QueryParams (на момент создания элементов управления датасет еще не активен и полей в нем еще нет
 +
 
 +
Список записей из справочника (пример для команды):
 +
gbobject136:Item{Constraints='Src=OpenDataSet( "gbobjects_list",[ "Type,I" : 136,"Node,I" : 0 ],"dsR" ),dsR.$data;KeyField=Id;ListField=Id.Name'}
 +
)

Версия 09:47, 26 августа 2020

Использование

Описание источника данных служит для создания элементов управления в виде списка значений, который не может быть получен стандартным способом.

Описание источника данных задается в строке описания элемента управления параметром Constraints='...', и может встречаться в параметрах колонок таблицы, в текстовых описаниях форм, отчетов, в функции QUERYPARAMS.

Структура

Состоит из элементов, разделенных ;

  • Src = выражение, возвращающее датасет.
вариант 1: GB_GET(тип, код, `поле`)
Например, GB_GET(0,:CurrentFirm,`Stocks`)
вариант 2: OpenDataSet(`процедура`,`параметры`,`src`),src.$data
вместо OpenDataSet может быть и более сложный скрипт, формирующий нужный датасет
Important yellow.png Внимание!
Поскольку символ ; является разделителем элементов, в скрипте его использование недопустимо! вместо него нужно использовать Char(59),например:
opendataset(`partners_get`,`Ids,S="`+DataSet.Partner+`"|Props,S="`+char(59)+`Stocks`+char(59)+`"`, ...)
  • KeyField = название ключевого поля в датасете
  • ListField = выражение, значение которого будет отображаться в выбиралке. Может быть как именем поля в датасете, простым выражением типа Id.Name, либо более сложным выражением, с обязательным именем поля, например, SName[@,fmName+100]=Heap.@Number+` `+AbateDate
  • Filter = выражение для фильтрации датасета. Буду отображаться только те записи, для которых результат вычисления = Истина.
  • Order = выражение для сортировки датасета.
  • DependsOn = выражение, от которого зависит список значений.

Примеры

Список серий для товара, заданного в поле MyArt:

QueryParams( 
  `Articul['Товар']=MyArt,Certificate['Серия']=MyCert{Constraints='Src=gb_get(1,DataSet.?MyArt,"Passports");KeyField=Id;ListField=Id.Name;DependsOn=DataSet.?MyArt'}` 
)

?MyArt приходится писать из-за специфики работы функции QueryParams (на момент создания элементов управления датасет еще не активен и полей в нем еще нет

Список записей из справочника (пример для команды): gbobject136:Item{Constraints='Src=OpenDataSet( "gbobjects_list",[ "Type,I" : 136,"Node,I" : 0 ],"dsR" ),dsR.$data;KeyField=Id;ListField=Id.Name'} )