Добрый день,
Необходимо реализовать фильтрацию печатных форм в зависимости от выбранного значения справочника на странице.
Переопределяя метод initCardPrintForms и в нем добавляя условия для выборки, в режиме отображения карточки все работает как надо.
var printFormsMenuCollection = resultCollection.filterByFn(function(item) { return item.get("ShowInCard") === true &&(this.getFilterForReportsOrBooleanValue(item)); }, this);
getFilterForReportsOrBooleanValue(item) { var value = this.get("NrbPurchaseMethod"); switch(value.displayValue) { case "Аукцион": return item.get("Caption") === "Извещение Аукцион" || item.get("Caption") === "Документация Аукцион"; default: return false; } },
Но в комбинированном режиме почему-то вызывается опять же этот метод хотя для секции есть свой initSectionPrintForms, и в итоге загрузка страницы прекращается с ошибкой, из-за отсутствия полей.
Как правильно реализовать фильтрацию?
Нравится
Павел, а в чём проблема, если в обоих случаях будет запускаться одна и та же функция с доработками?
И initCardPrintForms, и initSectionPrintForms применяются в BaseDataView, базовой странице раздела:
/** * Initializes print buttons menu. * @protected * @param {Function} callback Callback function. * @param {Object} scope Callback function scope. */ initPrintButtonsMenu: function(callback, scope) { this.initSectionPrintForms(this.initCardPrintForms, this); this.initModulePrintForms(callback, scope); },
Там есть две кнопки печатных форм: одна — для раздельного режима, другая — для комбинированного:
{ "operation": "insert", "name": "SeparateModeReportsButton", "parentName": "SeparateModeActionButtonsRightContainer", "propertyName": "items", "values": { "itemType": Terrasoft.ViewItemType.BUTTON, "caption": {"bindTo": "Resources.Strings.PrintButtonCaption"}, "classes": {"wrapperClass": ["actions-button-margin-right"]}, "controlConfig": { "menu": {"items": {"bindTo": "SectionPrintMenuItems"}}, "visible": {"bindTo": "IsSectionPrintButtonVisible"} } } }, ... { "operation": "insert", "name": "CombinedModePrintButton", "parentName": "CombinedModeActionButtonsCardRightContainer", "propertyName": "items", "values": { "itemType": Terrasoft.ViewItemType.BUTTON, "caption": {"bindTo": "Resources.Strings.PrintButtonCaption"}, "classes": {"wrapperClass": ["actions-button-margin-right"]}, "controlConfig": {"menu": {"items": {"bindTo": "CardPrintMenuItems"}}}, "visible": {"bindTo": "IsCardPrintButtonVisible"} } },