Возможно достаточный глупый вопрос, но не получилось по примеру разобраться.
В примере академии есть описание действия по реализации этого: https://academy.terrasoft.ru/documents/technic-sdk/7-12/mnozhestvennoe-…;
Но я не до конца понимаю концовку:
getMultiSelectLookupConfig: function() {
return {
// Корневая схема — [Продажа].
rootEntitySchemaName: "Opportunity",
// Колонка корневой схемы.
rootColumnName: "Opportunity",
// Связанная схема — [Контакт].
relatedEntitySchemaName: "Contact",
// Колонка связанной схемы.
relatedColumnName: "Contact"Есть справочник, из которого надо будет добавлять на деталь нужные значения. И он вроде как отображается, но на этом и все.
relatedEntitySchemaName: "Мой справочник", - это, я так понимаю, как раз то, что будет показываться при добавлении
А что указывать в других строчках, если моя деталь находится на странице обращения и создана мною вручную?
Нравится
Добрый день!
Деталь будет подтягивать значения из объекта состоящего из двух справочных полей, первое это справочник на основе объекта к которому добавлена деталь, второе это справочник на основе "вашего справочника"
пример объекта:
А это пример детали:
define("UsrSchema6Detail", ["LookupMultiAddMixin"], function() {
return {
entitySchemaName: "UsrRecipientsPetitionsOrg",// схема детали будет состоятьиз двух полей справочного типа
mixins: {
// Подключение миксина к схеме.
LookupMultiAddMixin: "Terrasoft.LookupMultiAddMixin"
},
details: /**SCHEMA_DETAILS*/{}/**SCHEMA_DETAILS*/,
diff: /**SCHEMA_DIFF*/[]/**SCHEMA_DIFF*/,
methods: {
// Переопределение базового метода инициализации схемы.
init: function() {
this.callParent(arguments);
//Инициализация миксина.
this.mixins.LookupMultiAddMixin.init.call(this);
},
// Переопределение базового метода отображения кнопки добавления.
getAddRecordButtonVisible: function() {
//Отображать кнопку добавления если деталь развернута, даже если для детали не реализована страница редактирования.
return this.getToolsVisible();
},
// Переопределение базового метода.
// Обработчик события сохранения страницы редактирования детали.
onCardSaved: function() {
// Открывает справочное окно с множественным выбором записей.
this.openLookupWithMultiSelect();
},
// Переопределение базового метода добавления записи на деталь.
addRecord: function() {
// Открывает справочное окно с множественным выбором записей.
this.openLookupWithMultiSelect(true);
},
// Метод, возвращающий конфигурационный объект для справочного окна.
getMultiSelectLookupConfig: function() {
return {
// Корневая схема — [Петиции]. объект к которому будет относиться деталь
rootEntitySchemaName: "UsrPetitions",
// Колонка корневой схемы. колонка в схеме детали (*) справочное поле
rootColumnName: "UsrPetition",
// Связанная схема — [Средство связи контрагента]. объект из которого будут выбираться значения
relatedEntitySchemaName: "AccountCommunication",
// Колонка связанной схемы. Данная колонка так же объявлена в схеме детали (*) справочное поле
relatedColumnName: "UsrEmailFromAccountCom"
};
},
getLookupColumns: function() {
return ["SearchNumber","Account","CommunicationType","Number"]
},
getLookupConfig: function() {
return {
entitySchemaName: this.getRelatedSchemaName(),
multiSelect: true,
columns: this.getLookupColumns()
};
},
getAllLookupFilters: function(notExistingFilter) {
var filters = this.Terrasoft.createFilterGroup();
var additionalFilters = this.getAdditionalLookupFilters();
if (!this.Ext.isEmpty(notExistingFilter)) {
filters.add("NotExistsFilter", notExistingFilter);
}
if (!this.Ext.isEmpty(additionalFilters)) {
filters.add("AdditionalFilters", additionalFilters);
}
//добавление фильтра на тип = Email
var idList = ["ee1c85c3-cfcb-df11-9b2A-001d60e938c6", "EE1C85C3-CFCB-DF11-9B2A-001D60E938C6"];
var filterById = Terrasoft.createColumnInFilterWithParameters("CommunicationType", idList);
filterById.comparisonType = Terrasoft.ComparisonType.EQUAL;
filters.add("filterById", filterById);
return filters;
}
}
};
});
Добрый день!
Деталь будет подтягивать значения из объекта состоящего из двух справочных полей, первое это справочник на основе объекта к которому добавлена деталь, второе это справочник на основе "вашего справочника"
пример объекта:
А это пример детали:
define("UsrSchema6Detail", ["LookupMultiAddMixin"], function() {
return {
entitySchemaName: "UsrRecipientsPetitionsOrg",// схема детали будет состоятьиз двух полей справочного типа
mixins: {
// Подключение миксина к схеме.
LookupMultiAddMixin: "Terrasoft.LookupMultiAddMixin"
},
details: /**SCHEMA_DETAILS*/{}/**SCHEMA_DETAILS*/,
diff: /**SCHEMA_DIFF*/[]/**SCHEMA_DIFF*/,
methods: {
// Переопределение базового метода инициализации схемы.
init: function() {
this.callParent(arguments);
//Инициализация миксина.
this.mixins.LookupMultiAddMixin.init.call(this);
},
// Переопределение базового метода отображения кнопки добавления.
getAddRecordButtonVisible: function() {
//Отображать кнопку добавления если деталь развернута, даже если для детали не реализована страница редактирования.
return this.getToolsVisible();
},
// Переопределение базового метода.
// Обработчик события сохранения страницы редактирования детали.
onCardSaved: function() {
// Открывает справочное окно с множественным выбором записей.
this.openLookupWithMultiSelect();
},
// Переопределение базового метода добавления записи на деталь.
addRecord: function() {
// Открывает справочное окно с множественным выбором записей.
this.openLookupWithMultiSelect(true);
},
// Метод, возвращающий конфигурационный объект для справочного окна.
getMultiSelectLookupConfig: function() {
return {
// Корневая схема — [Петиции]. объект к которому будет относиться деталь
rootEntitySchemaName: "UsrPetitions",
// Колонка корневой схемы. колонка в схеме детали (*) справочное поле
rootColumnName: "UsrPetition",
// Связанная схема — [Средство связи контрагента]. объект из которого будут выбираться значения
relatedEntitySchemaName: "AccountCommunication",
// Колонка связанной схемы. Данная колонка так же объявлена в схеме детали (*) справочное поле
relatedColumnName: "UsrEmailFromAccountCom"
};
},
getLookupColumns: function() {
return ["SearchNumber","Account","CommunicationType","Number"]
},
getLookupConfig: function() {
return {
entitySchemaName: this.getRelatedSchemaName(),
multiSelect: true,
columns: this.getLookupColumns()
};
},
getAllLookupFilters: function(notExistingFilter) {
var filters = this.Terrasoft.createFilterGroup();
var additionalFilters = this.getAdditionalLookupFilters();
if (!this.Ext.isEmpty(notExistingFilter)) {
filters.add("NotExistsFilter", notExistingFilter);
}
if (!this.Ext.isEmpty(additionalFilters)) {
filters.add("AdditionalFilters", additionalFilters);
}
//добавление фильтра на тип = Email
var idList = ["ee1c85c3-cfcb-df11-9b2A-001d60e938c6", "EE1C85C3-CFCB-DF11-9B2A-001D60E938C6"];
var filterById = Terrasoft.createColumnInFilterWithParameters("CommunicationType", idList);
filterById.comparisonType = Terrasoft.ComparisonType.EQUAL;
filters.add("filterById", filterById);
return filters;
}
}
};
});
Добрый день. Начал изучать креатио и столкнулся с похожей задачей. Помогите пожалуйста добавить фильтр для ServiceItem у него есть булевое значение UsrBooleanBR, хотел бы фильтровать по true.
Вот пример кода:
define("UsrSchema6830a0c2Detail", ["LookupMultiAddMixin"], function() {
return {
entitySchemaName: "UsrDetailLinkServiceBR",
details: /**SCHEMA_DETAILS*/{}/**SCHEMA_DETAILS*/,
diff: /**SCHEMA_DIFF*/[]/**SCHEMA_DIFF*/,
mixins: {
// Подключение миксина к схеме.
LookupMultiAddMixin: "Terrasoft.LookupMultiAddMixin"
},
methods: {
// Переопределение базового метода инициализации схемы.
init: function() {
this.callParent(arguments);
//Инициализация миксина.
this.mixins.LookupMultiAddMixin.init.call(this);
},
// Переопределение базового метода отображения кнопки добавления.
getAddRecordButtonVisible: function() {
//Отображать кнопку добавления если деталь развернута,
//даже если для детали не реализована страница редактирования.
return this.getToolsVisible();
},
// Переопределение базового метода.
// Обработчик события сохранения страницы редактирования детали.
onCardSaved: function() {
// Открывает справочное окно с множественным выбором записей.
this.openLookupWithMultiSelect();
},
// Переопределение базового метода добавления записи на деталь.
addRecord: function() {
// Открывает справочное окно с множественным выбором записей.
this.openLookupWithMultiSelect(true);
},
// Метод, возвращающий конфигурационный объект для справочного окна.
getMultiSelectLookupConfig: function() {
return {
rootEntitySchemaName: "UsrBusinessRequestV2",
rootColumnName: "UsrLookupBR",
relatedEntitySchemaName: "ServiceItem",
relatedColumnName: "UsrLookupService"
};
}
}
};
});
Валентин, насколько я понимаю, тут происходит только настройка параметров, а вся логика отрабатывает в LookupMultiAddMixin. Для добавления дополнительных фильтров нужно создать функцию getAdditionalLookupFilters, которая должна возвращать набор фильтров, а стандартно в LookupMultiAddMixin пустая:
/**
* Returns additional filters for lookup.
* @protected
* @return {Terrasoft.FilterGroup} Filters.
*/
getAdditionalLookupFilters: this.Terrasoft.emptyFn,Аналогично тому, как в приведенном выше в теме коде определяют функцию getMultiSelectLookupConfig, которая в LookupMultiAddMixin тоже пустая.
Вот пример такой функции для определения фильтра с нужным Вам условием:
getAdditionalLookupFilters: function () {
var additionalFilter = this.Terrasoft.createColumnFilterWithParameter(
this.Terrasoft.ComparisonType.EQUAL,
"UsrBooleanBR",
true
);
return additionalFilter;
},
Зверев Александр,
Спасибо огромное , фильтр сработал !