Добрый день,
Необходимо реализовать фильтрацию печатных форм в зависимости от выбранного значения справочника на странице.
Переопределяя метод 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"}
}
},