Добавил справочное поле в средство связи, для записей которые уже в БД проблем нету, но при добавлении новой записи не хочет выводить список значений из справочника.
При обеих случаях заходит в метод указанный в prepareList, так же правильно берет данные, но если запись только добавлена в деталь(пока нету в БД) при set'е поля которое указанно в list, ничего не происходит.

 

Код генерации конфига ComboBoxEdit'а:
 

var result =
{
	className: "Terrasoft.ComboBoxEdit",
	value: {bindTo: "CountryOfNumber"},
	list: {bindTo: "CountryOfNumberList"},
	prepareList: {bindTo: "isSkypeAddress"}
};
return result;

Код метода подготовки листа(prepareList):

var esq = Ext.create("Terrasoft.EntitySchemaQuery", {
	rootSchemaName: "Country"
});
 
var test = this;
 
esq.addColumn("Id");
esq.addColumn("Id");
var nameColumn = esq.addColumn("Name");
 
nameColumn.orderDirection = Terrasoft.OrderDirection.ASC;
 
esq.getEntityCollection(function(result) {
	var collection = Ext.create("Terrasoft.Collection");
	if (result.success) {
		var selectedTags = result.collection;
		selectedTags.each(function(item) {
			var countryId = item.get("Id");
			var countryName = item.get("Name");
			var menuItemConfig = {
				value: countryId,
				displayValue: countryName
			};
			collection.add(countryId, menuItemConfig);
		}, this);
	}
	this.set("CountryOfNumberList", collection);
	var test = this.get("CountryOfNumberList");
}, this);
var collection = Ext.create("Terrasoft.Collection");
return collection;

PS. (https://community.terrasoft.ru/questions/lookup-pole-v-detali-sredstva-…)Данную статью видел, ничего полезного там нету 

Нравится

1 комментарий

Добрый день, Василий.
Проверьте точно ли одинаковые записи приходят из запроса. Лучше сравнить все поля и значения.

Показать все комментарии

Доброго времени суток, мне по задачке необходимо при нажатии на лупу лукап поля (перед открытием окошка выбора значения) сохранить страницу редактирования.
Грубо говоря, перед исполнением основного действия (открытия лукап окошка), мне нужно добавить еще одно.
Как это можно реализовать?

Нравится

2 комментария
Лучший ответ

Антон, логика при открытии лукапа — в функции loadVocabulary схемы BaseSchemaViewModel:

		/**
		 * Open selection page from the directory or trying to add a record.
		 * @protected
		 * @param {Object} args Params.
		 * @param {Object} columnName Column name.
		 */
		loadVocabulary: function(args, columnName) {
			var multiLookupColumns = this.getMultiLookupColumns(columnName);
			var config = (Ext.isEmpty(multiLookupColumns))
				? this.getLookupPageConfig(args, columnName)
				: this.getMultiLookupPageConfig(args, columnName);
			this.openLookup(config, this.onLookupResult, this);
		},

Там проверяется наличие у колонок некоторого свойства (а именно multiLookupColumns) и если оно не пусто, запускается окно мультилукапа вместо обычного. То есть Вы можете переопределить, чтобы проверяло ещё какое-то свойства у поля на карточке и если оно есть, то произвести сохранение (например, при помощи отправки отсюда карточке команды на тихое сохранение через «песочницу»).

Антон, логика при открытии лукапа — в функции loadVocabulary схемы BaseSchemaViewModel:

		/**
		 * Open selection page from the directory or trying to add a record.
		 * @protected
		 * @param {Object} args Params.
		 * @param {Object} columnName Column name.
		 */
		loadVocabulary: function(args, columnName) {
			var multiLookupColumns = this.getMultiLookupColumns(columnName);
			var config = (Ext.isEmpty(multiLookupColumns))
				? this.getLookupPageConfig(args, columnName)
				: this.getMultiLookupPageConfig(args, columnName);
			this.openLookup(config, this.onLookupResult, this);
		},

Там проверяется наличие у колонок некоторого свойства (а именно multiLookupColumns) и если оно не пусто, запускается окно мультилукапа вместо обычного. То есть Вы можете переопределить, чтобы проверяло ещё какое-то свойства у поля на карточке и если оно есть, то произвести сохранение (например, при помощи отправки отсюда карточке команды на тихое сохранение через «песочницу»).

Благодарю, все работает)

Показать все комментарии

Возможность передавать значения по умолчанию для создаваемой записи в справочном поле, аналогично создаваемым записям в деталях.

Нечто типа:

"Document": {
	"dataValueType": Terrasoft.DataValueType.LOOKUP,
	"defaultValues": {
		"Account": {
			"masterColumn": "Account"
			},
		"Contact": {
			"masterColumn": "Contact"
			}
		}
	}

Таким образом значительно упростится такая разработка (не надо писать message и прочее). И, наконец-то, создавая город из карточки адреса, пользователю не надо будет повторно выбирать страну, уже выбранную в адресе

Навеяно вопросом: https://community.terrasoft.ua/questions/zapolnit-znacheniya-pri-sozdan…

2 комментария

Удобно было бы.
Когда-то реализовывал такую задачу как-то костылями через HistoryState.

Владимир, зафиксировал идею. Также по ссылке написал способ реализации почти той же функциональности чисто на уровне БП.

Показать все комментарии

Добрый день.

Как мне добавить в элемент лукапа деталь с выбором из справочника?

Прикрепленные файлы

Нравится

3 комментария
Лучший ответ

Пример из нашей базы знаний (стиль сохранён).

Как запилить справочник со страницей редактирования И деталью в нагрузку.

1. Делаем деталь со страницей редактирования через мастер;

2. Создаем Schema of the Edit Page в конфигураторе, вставляем туда разметку, которую должна отображать наша страница редактирования детали:
 

define("UsrCompanyStructureTypePageV2", [],
    function() {
        return {
            entitySchemaName: "UsrCompanyStructureType",
            details: /**SCHEMA_DETAILS*/{
                "CompanyStructureDetail": {
                    "schemaName": "UsrCompanyStructureMemberDetailV2",
                    "filter": {
                        "masterColumn": "Id",
                        "detailColumn": "UsrType"
                    }
                }
            }/**SCHEMA_DETAILS*/,
            attributes: {},
            methods: {},
            rules: {},
            userCode: {},
            diff: /**SCHEMA_DIFF*/[
                {
                    "operation": "insert",
                    "name": "Name",
                    "values": {
                        "layout": {
                            "colSpan": 12,
                            "rowSpan": 1,
                            "column": 0,
                            "row": 0,
                            "layoutName": "Header"
                        },
                        "bindTo": "Name"
                    },
                    "parentName": "Header",
                    "propertyName": "items",
                    "index": 0
                },
                {
                    "operation": "insert",
                    "name": "CompanyStructureDetail",
                    "values": {
                        "itemType": 2
                    },
                    "parentName": "GeneralInfoTab",
                    "propertyName": "items",
                    "index": 1
                }
            ]/**SCHEMA_DIFF*/
        };
    });

3. Регистрируем страницу редактирования в БД через процедуру:

EXEC [dbo].[tsp_RegisterPage]
        @ModuleEntityName = N'UsrCompanyStructureType ',
        @PageName = N'UsrCompanyStructureTypePageV2',
        @TypeColumnUId = NULL,
        @TypeValue = NULL,
        @AddMenuCaptionRus = 'Добавить',
        @AddMenuCaptionEng = 'Add',
        @CardHeaderCaptionRus = NULL,
        @CardHeaderCaptionEng = NULL

Если пропадает кнопка Добавить надо создать в SysModuleEditLcz с текстом что будет отображаться на кнопке:

insert into SysModuleEditLcz (id, CreatedOn, RecordId, ColumnUId, SysCultureId, Value)
select newid(), getdate(), 'D716F900-239E-44F3-98A8-DBBF3517FB9A', 'A19BF4BF-E22B-49B5-B6E0-918FF6290020', 'A5420246-0A8E-E111-84A3-00155D054C03', 'New'

RecordID – ID записи из SysModuleEdit нашей зарегистрированной страницы. Можно найти по CreatedOn (т.к. регистрация страницы по идее есть последняя операция то это будет последняя запись в таблице) или через имя схемы объекта по связи SysModuleEntityId – SysEntitySchemaUId из SysSchema

ColumnID – какая-то внутренняя константа, откуда берется не вникал

SysCultureID – ID языка на которой будет отображаться запись

Value – сам текст на кнопке

5. В результате в справочнике появляется ещё одна кнопка для открытия выбранной записи, которая открывает нашу страницу. С деталью можно работать как обычно.

Пример из нашей базы знаний (стиль сохранён).

Как запилить справочник со страницей редактирования И деталью в нагрузку.

1. Делаем деталь со страницей редактирования через мастер;

2. Создаем Schema of the Edit Page в конфигураторе, вставляем туда разметку, которую должна отображать наша страница редактирования детали:
 

define("UsrCompanyStructureTypePageV2", [],
    function() {
        return {
            entitySchemaName: "UsrCompanyStructureType",
            details: /**SCHEMA_DETAILS*/{
                "CompanyStructureDetail": {
                    "schemaName": "UsrCompanyStructureMemberDetailV2",
                    "filter": {
                        "masterColumn": "Id",
                        "detailColumn": "UsrType"
                    }
                }
            }/**SCHEMA_DETAILS*/,
            attributes: {},
            methods: {},
            rules: {},
            userCode: {},
            diff: /**SCHEMA_DIFF*/[
                {
                    "operation": "insert",
                    "name": "Name",
                    "values": {
                        "layout": {
                            "colSpan": 12,
                            "rowSpan": 1,
                            "column": 0,
                            "row": 0,
                            "layoutName": "Header"
                        },
                        "bindTo": "Name"
                    },
                    "parentName": "Header",
                    "propertyName": "items",
                    "index": 0
                },
                {
                    "operation": "insert",
                    "name": "CompanyStructureDetail",
                    "values": {
                        "itemType": 2
                    },
                    "parentName": "GeneralInfoTab",
                    "propertyName": "items",
                    "index": 1
                }
            ]/**SCHEMA_DIFF*/
        };
    });

3. Регистрируем страницу редактирования в БД через процедуру:

EXEC [dbo].[tsp_RegisterPage]
        @ModuleEntityName = N'UsrCompanyStructureType ',
        @PageName = N'UsrCompanyStructureTypePageV2',
        @TypeColumnUId = NULL,
        @TypeValue = NULL,
        @AddMenuCaptionRus = 'Добавить',
        @AddMenuCaptionEng = 'Add',
        @CardHeaderCaptionRus = NULL,
        @CardHeaderCaptionEng = NULL

Если пропадает кнопка Добавить надо создать в SysModuleEditLcz с текстом что будет отображаться на кнопке:

insert into SysModuleEditLcz (id, CreatedOn, RecordId, ColumnUId, SysCultureId, Value)
select newid(), getdate(), 'D716F900-239E-44F3-98A8-DBBF3517FB9A', 'A19BF4BF-E22B-49B5-B6E0-918FF6290020', 'A5420246-0A8E-E111-84A3-00155D054C03', 'New'

RecordID – ID записи из SysModuleEdit нашей зарегистрированной страницы. Можно найти по CreatedOn (т.к. регистрация страницы по идее есть последняя операция то это будет последняя запись в таблице) или через имя схемы объекта по связи SysModuleEntityId – SysEntitySchemaUId из SysSchema

ColumnID – какая-то внутренняя константа, откуда берется не вникал

SysCultureID – ID языка на которой будет отображаться запись

Value – сам текст на кнопке

5. В результате в справочнике появляется ещё одна кнопка для открытия выбранной записи, которая открывает нашу страницу. С деталью можно работать как обычно.

Владимир Соколов,

Большое спасибо за информацию. Есть один момент. У меня отсутствует хранимка с таким названием. Постарался найти запрос на создание, но те, что удалось откопать, невалидны из-за измененных столбцов в таблице SysModuleEditLcz.

В этой таблице никакие изменения я, конечно, не делал)

Вроде, устанавливали. Вот здесь есть обсуждение про неё 

https://community.terrasoft.ua/questions/sozdanie-detali-s-neskolkimi-tipami-i-vypadausim-spiskom-na-knopke-add-dla-bpm-75

Показать все комментарии

Привет.
Есть кастомный раздел со своими карточками, по значению поля Категория.
При переходе с лукапа на запись данного раздела, открывается неверная карточка редактирования.
В БД скорей всего всё нормально, потому что при создании/открытии записей из данного раздела всё ок.
Идеи?
7.14.0.597

Нравится

3 комментария
Лучший ответ

Андреев Андрей Сергеевич,

Ошибка версии 7.14.0. Обратитесь в службу поддержки, они предоставят файлы для исправления такого поведения системы.

Также рекомендую задуматься об обновлении, сейчас уже актуальной является версия 7.14.3.

Добрый день.

Что значит открывается неверная карточка редактирования?

Уточните, для данного раздела несколько карточек редактирования?

Алла Савельева, Есть "Карточка 1" которая открывается если поле "Категория 1" и аналогично есть "Карточка 2" для "Категории 2" .
При открытии/добавлении из раздела открывается правильная карточка(для Категории 1 - Карточка 1, для Категории 2 - Карточка 2). При открытии записи через лукапное поле из раздела/карточки открывается всегда "Карточка 1" независимо от категории. 

Андреев Андрей Сергеевич,

Ошибка версии 7.14.0. Обратитесь в службу поддержки, они предоставят файлы для исправления такого поведения системы.

Также рекомендую задуматься об обновлении, сейчас уже актуальной является версия 7.14.3.

Показать все комментарии

Коллеги всем доброго времени суток!

Подскажите кто нибудь сталкивался с такой реализацией, в модальном окне есть справочное поле с типом Terrasoft.ContentType.LOOKUP?
Если задаю данный тип то не работает, при нажатии на лупу открывается модуль справочника но в нем пусто: http://prntscr.com/m0klnc http://prntscr.com/m0kmde
если делать через Terrasoft.ContentType.ENUM то все работает.
 

{
					"operation": "insert",
					"name": "Contact",
					"parentName": "WaChangeResponsibleModulePageSelectionEditContainer",
					"propertyName": "items",
					"values": {
						"layout": {
							"colSpan": 23,
							"rowSpan": 1,
							"column": 0,
							"row": 0,
							"layoutName": "WaChangeResponsibleModulePageSelectionEditContainer"
						},
						"bindTo": "Contact",
						"contentType": Terrasoft.ContentType.ENUM,
						"labelConfig": {"visible": false},
						"hasClearIcon": false,
						"enableRightIcon": true,
						"controlConfig": {
							"placeholder": "$Resources.Strings.WaContactPlaceholderText",
							"classes": ["placeholderOpacity"],
						},
						"minSearchCharsCount": 1,
						"searchDelay": 50
					}
				},

 

Нравится

2 комментария
Лучший ответ

Все всплывающие окна реализованы через ModalBox и, грубо говоря, нельзя ими спамить. Активно всегда только 1 окно. Именно поэтому в миникарточках одни ENUM-ы)

Все всплывающие окна реализованы через ModalBox и, грубо говоря, нельзя ими спамить. Активно всегда только 1 окно. Именно поэтому в миникарточках одни ENUM-ы)

Варфоломеев Данила,

понял, благодарю

Показать все комментарии

Добрый день!

 

Необходимо для окна справочного поля переопределить логику кнопки Добавить. Для этого я создала замещающий клиентский модуль LookupPageViewModelGenerator и изменила метод defaultModeActionButtonClick. Но возникла проблема в получении Id текущей записи (из которой происходит открытие справочного поля). Как можно получить Id?

Нравится

3 комментария

this.getSelectedRecords();

Id ТЕКУЩЕЙ карточки (из которой был открыт lookup)

С замещением модуля не всё просто.

Возможно, как-то можно получать Id записи из стека прошлых открытых страниц системы, с которым работают при помощи GetHistoryState, ReplaceHistoryState и PushHistoryState.

Показать все комментарии

Добрый день!

Столкнулся с проблемой, поле справочника Состояние на детали графика оплат и поставок на вкладке Паспорт в заказе, в справочнике два значения (Выполнер/Не выполнен) и более не предвидится.

Хотелось бы переделать в выпадающий список, но у поля State замещающего объекта SupplyPaymentElement в пакете с моими доработками галка "Cписок" снята и задизейблена.

Как теперь это обойти?

Нравится

11 комментариев
Лучший ответ

Добрый день, можете в замещающей схеме добавить метаданные, сохранить их и опубликовать:
+ MetaData.Schema.D2.["0a3324bb-55c8-4791-b51f-409cfedc6fe2"].E20 true
это добавит признак список к колонке UID которой указан в квадратных скобках

Добавьте нужные Вам значения в справочник 'Состояния элемента графика поставок и оплат'.

Алла Савельева,

нет, мне нужно, что бы это поле на детали отображалось выпадающим списком. Значения в этот справочник добавлять не надо.

Борис Леонов,

Вы можете реализовать эту функциональность на уровне карточки редактирования:

                {
                    "operation": "insert",
                    "parentName": "Header",
                    "propertyName": "items",
                    "name": "State",
                    "values": {
                        "bindTo": "State",
                        "contentType": Terrasoft.ContentType.ENUM,
                        "layout": {"column": 12, "row": 3, "colSpan": 12}
                    }
                },

Или же создать не замещающий объект, а унаследованный от SupplyPaymentElement, тогда признак 'Список' у поля 'State' будет доступен.

Алла Савельева,

У вас первый вариант прям получилось осуществить? Я сразу так сделал, только "operation" не "insert", а "merge", не работает на детали, действует только на карточку.

А второй как провернуть, что бы остальную логику не переделывать или обойтись минимальными доработками?

Борис Леонов,

Верно, первый вариант работает только для карточки редактирования - я так и написала.

А для отображения в виде списка в редактируемом реестре подойдет только второй вариант.

Как добавить унаследованный объект описано в статье, смотрите 'Создание пользовательской схемы объекта' и 'Указание родительского объекта'.

Алла Савельева,

завтра попробую

Добрый день, можете в замещающей схеме добавить метаданные, сохранить их и опубликовать:
+ MetaData.Schema.D2.["0a3324bb-55c8-4791-b51f-409cfedc6fe2"].E20 true
это добавит признак список к колонке UID которой указан в квадратных скобках

Колодяжный Владислав Эдуардович,

добавление метаданных работает, спасибо!

Интересно, а в методе getCellControlsConfig это можно как то провернуть?

См. тут.

Зверев Александр,

Благодарю!

Показать все комментарии

Подскажите,можно ли виртуальное поле типа LOOKUP сделать выпадающим списком?

Если меняю на тип ENUM, то поле визуально выглядит списком, но данные при нажатии на стрелочку не выпадают.

Нравится

3 комментария
Лучший ответ

Обычно хватает добавить в diff "contentType": Terrasoft.ContentType.ENUM

{
	"operation": "insert",
	"name": "AccountType",
	"parentName": "ProfileContainer",
	"propertyName": "items",
	"values": {
		"bindTo": "Type",
		"layout": {
			"column": 0,
			"row": 2,
			"colSpan": 24
		},
		"contentType": Terrasoft.ContentType.ENUM
	}
},

 

А если не менять данные есть?

Штатный способ зайти в дизайнер страницы (мастер) и в свойствах поля отметить галочку, что примерно тоже что вы сделали вручную.....

Обычно хватает добавить в diff "contentType": Terrasoft.ContentType.ENUM

{
	"operation": "insert",
	"name": "AccountType",
	"parentName": "ProfileContainer",
	"propertyName": "items",
	"values": {
		"bindTo": "Type",
		"layout": {
			"column": 0,
			"row": 2,
			"colSpan": 24
		},
		"contentType": Terrasoft.ContentType.ENUM
	}
},

 

Спасибо. Все получилось.

Показать все комментарии

Добрый день! 
Появилась необходимость изменить базовое поле поиска, при выборе в окне справочного поля, и подставить туда своё значение.
Как это выглядит на примере:

 

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

Поиски не увенчались успехом, застопорился на схеме LookupPage.js

var primaryDisplayColumn = entitySchema.primaryDisplayColumn;
if (primaryDisplayColumn) {
	this.lookupInfo.searchColumn = {
		value: primaryDisplayColumn.name,
		displayValue: primaryDisplayColumn.caption
	};
}

Значение для данной колонки берётся отсюда, но как его подменять для определённого поля - не сообразил

Нравится

17 комментариев
Лучший ответ

В lookupListConfig просто укажи searchValue, пример:

columns: ["Id", "Name"],
searchValue: "Вериф",
columnName: "Name",
orders: [{
   columnPath: "Name",
   direction: Terrasoft.OrderDirection.ASC
}],

 

В lookupListConfig просто укажи searchValue, пример:

columns: ["Id", "Name"],
searchValue: "Вериф",
columnName: "Name",
orders: [{
   columnPath: "Name",
   direction: Terrasoft.OrderDirection.ASC
}],

 

Григорий Чех, columnName упорно изменяться не хочет. А именно значение в списке слева на первом скрине

Покажите свой код

Григорий Чех,

"Gun": {
   "dataValueType": Terrasoft.DataValueType.LOOKUP,
   "lookupListConfig": {
      columns: ["LkpGauges", "UsrConfigProduct"],
      searchValue: "Вериф", // Вот это работает, в инпуте value заполняется
      columnName: "UsrConfigProduct",
      orders: [{
          columnPath: "UsrConfigProduct"
          direction: Terrasoft.OrderDirection.ASC
      }],
      "filters": [ //Фильтры ]
   }
}

 

Григорий Чех,

Это справочное поле, не уверен, что сыграет роль. Но на всякий случай скажу. 

И еще, поле над которым производится действие, является полем в детали с редактируемым реестром

Это интересно. Т.е. теоретически можно прокинуть searchColumn в lookupInfo, но если у объекта есть колонка для отображения - всё перетрется.

варианта 2:

- Доделывать Lookup-модуль

- Оставить как есть, убрать в схеме детали отображаемое поле.

 

Попробуйте так

"Gun": {
   "lookupListConfig": {
      searchValue: "Вериф",
      searchColumn: "UsrConfigProduct"
   }
}

 

Варфоломеев Данила,

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

Самое интересное в том, что у меня получалось прокинуть значения. Но при обращении к lookupinfo он забирает все равно свои значения, которые получил из схемы ConfItem.js (куда ссылается справочное поле). И там прописано поле для отображения
(PrimaryDisplayColumnName)

 

Варфоломеев Данила,

пробовал и так - не работает... 

Попробуй переопределить loadVocabulary как то так\:

loadVocabulary: function(args, tag) {
    var column = this.getColumnByName(tag);
    args.schemaName = column.referenceSchemaName; //подставь свой
     this.callParent(arguments);
 }

Если не получится отпишись, вечером смогу проєксперементировать.

Григорий Чех,

не совсем понял, что менять. Однако там все равно схема (ConfItem) по которой открытие справочника производится, я думаю, что её подменить можно, но это не то, что мы ищем

Прокинуть как-то туда primaryDisplayColumnName, у меня не увенчалось успехом

VadimCh пишет:
Однако там все равно схема (ConfItem) по которой открытие справочника производится

 Я немного неправильно описал.
Схема ConfItem генерится на основании объекта в конфигурации. На ConfItem ссылается справочное поле, которое вы пытаетесь открыть. Соответственно и берется PrimaryDisplayColumnName из ConfItem. Те 2 варианта так и остаются: либо менять PrimaryDisplayColumnName в null в каждом объекте на которое ссылается нужное вам справочное поле, либо переделать логику LookupPage.

Варфоломеев Данила,

В рамках реализации задачи, заместил LookupPage, и переработал тот кусок кода, который скидывал в посте, и присоединил новую схему

"lookupListConfig": {
  lookupPageName: "KmFiltrationBaseLookup",
}

Как по мне, про два варианта вы правы, но первый не подходит - если этот объект используется по всей системе не единожды. И везде требуется разная колонка, либо существует множество старых записей на основе колонки для отображения. При изменении колонки - старые записи будут отображаться не корректно

VadimCh,

А не могли бы Вы посоветовать что и где переработать, чтобы решить эту проблему?

Alex Zaslavsky,

Да, конечно

Чтобы решить именно эту проблему, требуется создать модуль, 

// Полный листинг схемы, создаем свой модуль, и пихаем туда эту схему, дав ей своё название
 
define("KmFiltrationBaseLookup", ["LookupPage", "LookupPageViewGenerator", "LookupPageViewModelGenerator",
"ProcessModuleUtilities", "LookupUtilities", "css!LookupPageCSS"],
	function(LookupPage, LookupPageViewGenerator, LookupPageViewModelGenerator, ProcessModuleUtilities) {
		return Ext.define("Terrasoft.configuration.KmFiltrationBaseLookup", {
			alternateClassName: "Terrasoft.KmKLSHLookupPage",
			extend: "Terrasoft.LookupPage",
			gridWrapClasses: ["custom-lookup-control"],
 
			init: function(callback, scope) {
				callback = callback || Terrasoft.emptyFn;
				if (this.viewModel) {
					callback.call(scope);
					return;
				}
				var lookupInfo = this.getLookupInfo();
				if (this.Ext.isArray(lookupInfo)) {
					var configIndex = 0;
					var parameters = this.parameters;
					if (!this.Ext.isEmpty(parameters)) {
						configIndex = parameters.index;
					}
					this.lookupInfo = lookupInfo[configIndex];
					this.lookupsInfo = lookupInfo;
				} else {
					this.lookupInfo = lookupInfo;
				}
				this.processModuleFlag = this.sandbox.publish("CardProccessModuleInfo", null, [this.sandbox.id]);
				this.initHistoryState();
				this.getSchemaAndProfile(this.lookupInfo.lookupPostfix, function(entitySchema, profile) {
					if (this.isDestroyed) {
						return;
					}
                    // Здесь сам объект, и сюда мы прокидываем свои свойства
                    // Свойства для каждой колонки находятся в схеме объекта (ConfItem.js Пример!)
					entitySchema.primaryDisplayColumn = {
						caption: "Модель",
						columnPath: "UsrConfigProduct.UsrName",
						dataValueType: 1,
						isInherited: false,
						isRequired: true,
						isValueCloneable: false,
						name: "UsrConfigProduct.UsrName",
						size: 250,
						uId: "c4f28c00-8c5d-46cd-98de-f38d2e52a2dc",
						usageType: 0
					};
 
					var primaryDisplayColumn = entitySchema.primaryDisplayColumn;
 
					if (primaryDisplayColumn) {
						this.lookupInfo.searchColumn = {
							value: primaryDisplayColumn.name,
							displayValue: primaryDisplayColumn.caption
						};
					}
					this.lookupInfo.entitySchema = entitySchema;
					this.lookupInfo.gridProfile = profile;
					var viewModel = this.viewModel = this.generateViewModel();
					viewModel.lookupInfo = this.lookupInfo;
					viewModel.load(profile, callback, scope);
				});
			}
		});
	}
);

 

Alex Zaslavsky,

 
			//в атрибутах её подключаем
			"Gun": {
				"dataValueType": Terrasoft.DataValueType.LOOKUP,
				"lookupListConfig": {
					lookupPageName: "KmFiltrationBaseLookup",
				}
			}

 

VadimCh,

Благодарю, попытаемся разобраться :)

Колонку для поиска можно изменить базовыми средствами.
Для этого нужно добавить атрибут в карточку редактирования: 
"AprCustomer": {
                "dataValueType": this.Terrasoft.DataValueType.LOOKUP,
                "lookupListConfig": {
                    "searchColumn": {
                        "value": "AprINN",
                        "displayValue": "ИНН"
                    }
                }
            },

Показать все комментарии