Поле ссылка на множество
MoS (обсуждение | вклад) |
MoS (обсуждение | вклад) |
||
| Строка 41: | Строка 41: | ||
В редактор коллекции TgsIBColumnEditors добавляем запись, где: | В редактор коллекции TgsIBColumnEditors добавляем запись, где: | ||
| − | '''DisplayField''' - | + | '''DisplayField''' - USR$GOODVIEWFORMKEY добавленное нами поле |
| − | '''EditorStyle''' - | + | '''EditorStyle''' - cesSetGrid вариант отображения |
| Строка 50: | Строка 50: | ||
| − | Database - ibdbGAdmin | + | '''Database''' - ibdbGAdmin |
| − | LookupTable - USR$GOODVIEWFORM таблицу-справочник | + | '''LookupTable''' - USR$GOODVIEWFORM таблицу-справочник |
| − | gdClassName - TgdcAttrUserDefined подставится автоматически, когда укажем таблицу-справочник USR$GOODVIEWFORM | + | '''gdClassName''' - TgdcAttrUserDefined подставится автоматически, когда укажем таблицу-справочник USR$GOODVIEWFORM |
| − | LookupKeyField - ID уникальный ключ из таблицы USR$GOODVIEWFORM | + | '''LookupKeyField''' - ID уникальный ключ из таблицы USR$GOODVIEWFORM |
| − | Transaction - ibtrCommon | + | '''Transaction''' - ibtrCommon |
Для заполнения свойств LookupSet необходимо знать кросс-таблицу созданную доменом (множества). | Для заполнения свойств LookupSet необходимо знать кросс-таблицу созданную доменом (множества). | ||
| Строка 75: | Строка 75: | ||
Теперь заполняем свойства LookupSet: | Теперь заполняем свойства LookupSet: | ||
| − | CrossTable - USR$CROSS2076_1818884808 используемая кросс-таблица | + | '''CrossTable''' - USR$CROSS2076_1818884808 используемая кросс-таблица |
| − | CrossSourceField - USR$GOODVIEWFORMKEY - поле-связка кросс таблицы со справочником | + | '''CrossSourceField''' - USR$GOODVIEWFORMKEY - поле-связка кросс таблицы со справочником |
| − | CrossDestField - USR$PD_BREADCONTOLLINEKEY - поле-связка кросс таблицы с позицией документа | + | '''CrossDestField''' - USR$PD_BREADCONTOLLINEKEY - поле-связка кросс таблицы с позицией документа |
| − | SourceTable - USR$GOODVIEWFORM - таблица-справочник | + | '''SourceTable''' - USR$GOODVIEWFORM - таблица-справочник |
| − | SourceParentField - USR$GOODVIEWFORMKEY | + | '''SourceParentField''' - USR$GOODVIEWFORMKEY |
| − | SourceListField - USR$NAME - поле для отображения из таблицы-справочника | + | '''SourceListField''' - USR$NAME - поле для отображения из таблицы-справочника |
| − | KeyField - ID | + | '''KeyField''' - ID |
| − | SourceKeyField - ID | + | '''SourceKeyField''' - ID |
Сохраняем настройки. Теперь в поле позиции документа можно выбрать несколько вариантов из справочника. | Сохраняем настройки. Теперь в поле позиции документа можно выбрать несколько вариантов из справочника. | ||
Версия 12:47, 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
Сохраняем настройки. Теперь в поле позиции документа можно выбрать несколько вариантов из справочника.