Возможно достаточный глупый вопрос, но не получилось по примеру разобраться.
В примере академии есть описание действия по реализации этого: 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; },
Зверев Александр,
Спасибо огромное , фильтр сработал !