Поле ссылка на множество
MoS (обсуждение | вклад) |
MoS (обсуждение | вклад) |
||
| (не показаны 13 промежуточных версий 1 участника) | |||
| Строка 1: | Строка 1: | ||
Возникла необходимость создания поля, которое может содержать несколько элементов из одного простого справочника, т.е. множество. | Возникла необходимость создания поля, которое может содержать несколько элементов из одного простого справочника, т.е. множество. | ||
| − | |||
| − | |||
Есть простой справочник: | Есть простой справочник: | ||
| Строка 28: | Строка 26: | ||
'''Создадим домен: USR$DGOODVIEWFORM''' | '''Создадим домен: USR$DGOODVIEWFORM''' | ||
| + | |||
| + | http://gsbelarus.com/gs/images/gs/2021/multitude/dn0.png | ||
| + | |||
| + | |||
| + | http://gsbelarus.com/gs/images/gs/2021/multitude/dn1.png | ||
| + | |||
| + | |||
В таблицу позиции документа '''добавляем поле USR$GOODVIEWFORMKEY''', которое будет использовать ранее созданный домен USR$DGOODVIEWFORM | В таблицу позиции документа '''добавляем поле USR$GOODVIEWFORMKEY''', которое будет использовать ранее созданный домен USR$DGOODVIEWFORM | ||
| + | |||
| + | http://gsbelarus.com/gs/images/gs/2021/multitude/f_1.png | ||
| + | |||
| + | |||
Переподключаемся к базе, чтобы изменения вступили в силу. | Переподключаемся к базе, чтобы изменения вступили в силу. | ||
| Строка 38: | Строка 47: | ||
'''Переходим в настройки грида документа.''' | '''Переходим в настройки грида документа.''' | ||
| + | http://gsbelarus.com/gs/images/gs/2021/multitude/m1.png | ||
| − | |||
| − | + | В редактор коллекции TgsIBColumnEditors добавляем запись, | |
| − | ''' | + | http://gsbelarus.com/gs/images/gs/2021/multitude/m2.png |
| + | |||
| + | где: | ||
| + | |||
| + | http://gsbelarus.com/gs/images/gs/2021/multitude/e1.png | ||
| + | |||
| + | |||
| + | {| border="1" cellpadding="2" cellspacing="0" style="border-collapse:collapse;" | ||
| + | !style="background:#ffdead;" width="180px"| Название | ||
| + | !style="background:#ffdead;"| Поле/Параметр | ||
| + | !style="background:#ffdead;"| Описание | ||
| + | |- valign="top" | ||
| + | | '''DisplayField''' | ||
| + | | '''USR$GOODVIEWFORMKEY''' | ||
| + | | добавленное нами поле | ||
| + | |- | ||
| + | | '''EditorStyle''' | ||
| + | | '''cesSetGrid''' | ||
| + | | вариант отображения | ||
| + | |} | ||
'''Заполняем свойства Lookup:''' | '''Заполняем свойства Lookup:''' | ||
| + | |||
| + | http://gsbelarus.com/gs/images/gs/2021/multitude/3.png | ||
| + | |||
| + | |||
| + | {| border="1" cellpadding="2" cellspacing="0" style="border-collapse:collapse;" | ||
| + | !style="background:#ffdead;" width="180px"| Название | ||
| + | !style="background:#ffdead;"| Поле/Параметр | ||
| + | !style="background:#ffdead;"| Описание | ||
| + | |- valign="top" | ||
| + | | '''Database''' | ||
| + | | '''ibdbGAdmin''' | ||
| + | | БД | ||
| + | |- | ||
| + | | '''LookupTable''' | ||
| + | | '''USR$GOODVIEWFORM''' | ||
| + | | таблица-справочник | ||
| + | |- | ||
| + | | '''gdClassName''' | ||
| + | | '''TgdcAttrUserDefined''' | ||
| + | | подставится автоматически, когда укажем таблицу-справочник USR$GOODVIEWFORM | ||
| + | |- | ||
| + | | '''LookupKeyField''' | ||
| + | | '''ID''' | ||
| + | | уникальный ключ из таблицы USR$GOODVIEWFORM | ||
| + | |- | ||
| + | | '''Transaction''' | ||
| + | | '''ibtrCommon''' | ||
| + | | | ||
| + | |} | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
Для заполнения свойств LookupSet необходимо знать кросс-таблицу созданную доменом (множества). | Для заполнения свойств LookupSet необходимо знать кросс-таблицу созданную доменом (множества). | ||
| Строка 73: | Строка 125: | ||
USR$PD_BREADCONTOLLINEKEY - поле-связка кросс таблицы с позицией документа | USR$PD_BREADCONTOLLINEKEY - поле-связка кросс таблицы с позицией документа | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | ''' | + | '''Теперь заполняем свойства LookupSet:''' |
| − | + | ||
| − | + | ||
| − | ''' | + | http://gsbelarus.com/gs/images/gs/2021/multitude/m5.png |
| − | '''SourceKeyField''' | + | |
| + | |||
| + | {| border="1" cellpadding="2" cellspacing="0" style="border-collapse:collapse;" | ||
| + | !style="background:#ffdead;" width="180px"| Название | ||
| + | !style="background:#ffdead;"| Поле/Параметр | ||
| + | !style="background:#ffdead;"| Описание | ||
| + | |- valign="top" | ||
| + | | '''CrossTable''' | ||
| + | | '''USR$CROSS2076_1818884808''' | ||
| + | | используемая кросс-таблица | ||
| + | |- | ||
| + | | '''CrossSourceField''' | ||
| + | | '''USR$GOODVIEWFORMKEY''' | ||
| + | | поле-связка кросс таблицы со справочником | ||
| + | |- | ||
| + | | '''CrossDestField''' | ||
| + | | '''USR$PD_BREADCONTOLLINEKEY''' | ||
| + | | поле-связка кросс таблицы с позицией документа | ||
| + | |- | ||
| + | | '''SourceTable''' | ||
| + | | '''USR$GOODVIEWFORM''' | ||
| + | | таблица-справочник | ||
| + | |- | ||
| + | | '''SourceParentField''' | ||
| + | | '''USR$GOODVIEWFORMKEY''' | ||
| + | | | ||
| + | |- | ||
| + | | '''SourceListField''' | ||
| + | | ''' USR$NAME''' | ||
| + | | поле для отображения из таблицы-справочника | ||
| + | |- | ||
| + | | '''KeyField''' | ||
| + | | '''ID''' | ||
| + | | | ||
| + | |- | ||
| + | | '''SourceKeyField''' | ||
| + | | '''ID''' | ||
| + | | | ||
| + | |} | ||
Сохраняем настройки. Теперь в поле позиции документа можно выбрать несколько вариантов из справочника. | Сохраняем настройки. Теперь в поле позиции документа можно выбрать несколько вариантов из справочника. | ||
| + | |||
| + | http://gsbelarus.com/gs/images/gs/2021/multitude/m_6.png | ||
| + | |||
| + | |||
| + | [[Category: Документация]] | ||
Текущая версия на 13:30, 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 |
Сохраняем настройки. Теперь в поле позиции документа можно выбрать несколько вариантов из справочника.