Поле ссылка на множество

Материал из GedeminWiki
(Различия между версиями)
Перейти к: навигация, поиск
(Новая страница: «Возникла необходимость создания поля, которое может содержать несколько элементов из о…»)
 
Строка 2: Строка 2:
  
 
Есть простой справочник:
 
Есть простой справочник:
 
+
<syntaxhighlight lang="sql">
 
CREATE TABLE USR$GOODVIEWFORM  
 
CREATE TABLE USR$GOODVIEWFORM  
 
(
 
(
Строка 10: Строка 10:
 
   PRIMARY      KEY (ID)
 
   PRIMARY      KEY (ID)
 
);
 
);
 
+
</syntaxhighlight>
  
 
одна или несколько записей из которого должны отображаться в позиции пользовательского документа:
 
одна или несколько записей из которого должны отображаться в позиции пользовательского документа:
  
 +
<syntaxhighlight lang="sql">
 
CREATE TABLE USR$PD_BREADCONTOLLINE  
 
CREATE TABLE USR$PD_BREADCONTOLLINE  
 
(
 
(
Строка 22: Строка 23:
 
   PRIMARY KEY (DOCUMENTKEY)
 
   PRIMARY KEY (DOCUMENTKEY)
 
);
 
);
 
+
</syntaxhighlight>
 
Создадим домен: USR$DGOODVIEWFORM  
 
Создадим домен: USR$DGOODVIEWFORM  
  
Строка 50: Строка 51:
 
В данном примере интересующая часть скрипта с кросс-таблицей выглядит так :
 
В данном примере интересующая часть скрипта с кросс-таблицей выглядит так :
  
 +
<syntaxhighlight lang="sql">
 
   SELECT  
 
   SELECT  
 
     L.USR$NAME  
 
     L.USR$NAME  
Строка 55: Строка 57:
 
   JOIN USR$GOODVIEWFORM L ON C.USR$GOODVIEWFORMKEY = L.ID  
 
   JOIN USR$GOODVIEWFORM L ON C.USR$GOODVIEWFORMKEY = L.ID  
 
   WHERE C.USR$PD_BREADCONTOLLINEKEY = NEW.DOCUMENTKEY AND L.USR$NAME > ''  
 
   WHERE C.USR$PD_BREADCONTOLLINEKEY = NEW.DOCUMENTKEY AND L.USR$NAME > ''  
 
+
</syntaxhighlight> 
 
Вывод:
 
Вывод:
  

Версия 12:36, 20 июня 2022

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

Есть простой справочник:

CREATE TABLE USR$GOODVIEWFORM 
(
  ID	        DINTKEY NOT NULL,
  EDITIONDATE	DEDITIONDATE,
  USR$NAME	DTEXT60,
  PRIMARY       KEY (ID)
);

одна или несколько записей из которого должны отображаться в позиции пользовательского документа:

CREATE TABLE USR$PD_BREADCONTOLLINE 
(
  DOCUMENTKEY	DINTKEY NOT NULL,
  RESERVED	DINTEGER,
  MASTERKEY	DMASTERKEY,
  USR$GOODKEY	USR$GS_DGOOD,
  PRIMARY KEY (DOCUMENTKEY)
);

Создадим домен: USR$DGOODVIEWFORM


В таблицу позиции документа добавляем поле USR$GOODVIEWFORMKEY, которое будет использовать ранее созданный домен USR$DGOODVIEWFORM

Переподключаемся к базе, чтобы изменения вступили в силу.

Переходим в настройки грида документа.

В редактор коллекции TgsIBColumnEditors добавляем запись, где:

DisplayField - USR$GOODVIEWFORMKEY добавленное нами поле

EditorStyle - cesSetGrid вариант отображения

Заполняем свойства Lookup:

Database - ibdbGAdmin LookupTable - USR$GOODVIEWFORM таблицу-справочник gdClassName - TgdcAttrUserDefined подставится автоматически, когда укажем таблицу-справочник USR$GOODVIEWFORM LookupKeyField - ID уникальный ключ из таблицы USR$GOODVIEWFORM Transaction - ibtrCommon

Для заполнения свойств LookupSet необходимо знать кросс-таблицу созданную доменом (множества). Ее можно найти на вкладке "скрипт" таблицы документа. В данном примере интересующая часть скрипта с кросс-таблицей выглядит так :

  SELECT 
    L.USR$NAME 
  FROM USR$CROSS2076_1818884808 C 
  JOIN USR$GOODVIEWFORM L ON C.USR$GOODVIEWFORMKEY = L.ID 
  WHERE C.USR$PD_BREADCONTOLLINEKEY = NEW.DOCUMENTKEY AND L.USR$NAME > ''

Вывод:

необходимая кросс-таблица USR$CROSS2076_1818884808 USR$GOODVIEWFORMKEY - поле-связка кросс таблицы со справочником USR$PD_BREADCONTOLLINEKEY - поле-связка кросс таблицы с позицией документа

Теперь заполняем свойства LookupSet:

CrossTable - USR$CROSS2076_1818884808 используемая кросс-таблица CrossSourceField - USR$GOODVIEWFORMKEY - поле-связка кросс таблицы со справочником CrossDestField - USR$PD_BREADCONTOLLINEKEY - поле-связка кросс таблицы с позицией документа

SourceTable - USR$GOODVIEWFORM - таблица-справочник SourceParentField - USR$GOODVIEWFORMKEY SourceListField - USR$NAME - поле для отображения из таблицы-справочника

KeyField - ID SourceKeyField - ID

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

Персональные инструменты
Пространства имён

Варианты
Действия
Навигация
Инструменты