Коллеги, просьба помочь разобраться с деталями. Версия 7.6.
Ситуация: мы делим Заказы по типам (КП, Образцы, Коммерческий заказ) по причине удобного продуктового каталога.
Задача: хотим в карточке клиента вывести 3 детали и на каждую поставить фильтр по типу заказа. Разместил 3 детали через мастер раздела, он сгенерировал такой код:
"schemaName": "OrderDetailV2",
"entitySchemaName": "Order",
"filter": {
"detailColumn": "Account",
"masterColumn": "Id"
},
"filterMethod": "OrderFilter",
"captionName": "OrderDetailCaption" // в локализируемых строках прописано "КП"
},
"Order1": {
"schemaName": "OrderDetailV2",
"entitySchemaName": "Order",
"filter": {
"detailColumn": "Account",
"masterColumn": "Id"
},
"filterMethod": "Order1Filter",
"captionName": "Образцы"
},
"Order2": {
"schemaName": "OrderDetailV2",
"entitySchemaName": "Order",
"filter": {
"detailColumn": "Account",
"masterColumn": "Id"
},
"filterMethod": "Order2Filter",
"captionName": "Заказы"
}
Вручную прописал фильтрацию на деталях:
var filterGroup = new this.Terrasoft.createFilterGroup();
filterGroup.logicalOperation = this.Terrasoft.LogicalOperatorType.AND;
filterGroup.add("OrderTypeFilter", this.Terrasoft.createColumnFilterWithParameter(
this.Terrasoft.ComparisonType.EQUAL, "UsrOrderType", "358479b6-bf4b-46ed-93ee-5a8c558a0593") // КП
);
filterGroup.add("ByAccountFilter", this.Terrasoft.createColumnFilterWithParameter(
this.Terrasoft.ComparisonType.EQUAL, "Account", this.get("Id"))
);
return filterGroup;
},
Order1Filter: function() {
var filterGroup = new this.Terrasoft.createFilterGroup();
filterGroup.logicalOperation = this.Terrasoft.LogicalOperatorType.AND;
filterGroup.add("OrderTypeFilter", this.Terrasoft.createColumnFilterWithParameter(
this.Terrasoft.ComparisonType.EQUAL, "UsrOrderType", "21d5f440-ff74-4a89-8233-127facc90be4") // Образцы
);
filterGroup.add("ByAccountFilter", this.Terrasoft.createColumnFilterWithParameter(
this.Terrasoft.ComparisonType.EQUAL, "Account", this.get("Id"))
);
return filterGroup;
},
Order2Filter: function() {
var filterGroup = new this.Terrasoft.createFilterGroup();
filterGroup.logicalOperation = this.Terrasoft.LogicalOperatorType.AND;
filterGroup.add("OrderTypeFilter", this.Terrasoft.createColumnFilterWithParameter(
this.Terrasoft.ComparisonType.EQUAL, "UsrOrderType", "d8e59907-2b35-4429-bd14-2f5847dbf787") // Заказ
);
filterGroup.add("ByAccountFilter", this.Terrasoft.createColumnFilterWithParameter(
this.Terrasoft.ComparisonType.EQUAL, "Account", this.get("Id"))
);
return filterGroup;
}
Однако нужного результата мы не получили:
1. Не изменились заголовки деталей (так и остались «Заказы»)
2. При нажатии на детали 1 и 2 разворачивается деталь 3, а нажимаемая остаётся без изменений
3. При переключении между вкладками карточки клиента произвольно меняются фильтры между деталями
Соответственно, вопросы:
1. Как изменить заголовок детали? Варианты "captionName": "OrderDetailCaption" (OrderDetailCaption – локализируемая строка) и "captionName": "Образцы" не срабатывают
2. Как сделать разворачивание / сворачивание деталей независимым друг от друга? Т.е. чтобы при разворачивании, к примеру, детали №2 разворачивалась она и только она, а детали №1 и №3 не менялись
3. Как зафиксировать условия фильтрации? Проблема в том, что при переключении вкладок карточка контрагента (Основная информация, Документы, История и т.п.) произвольно выставляются фильтры в деталях – то Образцы, то Заказ, то КП по одной и той же детали (хотя по ней жёстко прописан фильтр в коде)
Нравится
Чтобы не было описанной путаницы, я бы предложил сделать три разных клиентских модуля, в которых родителем указан OrderDetailV2, и прицепил бы их в качестве трех деталей. Код карточки у вас уже есть, останется только название schemaName новые прописать
Александр, честно говоря, не совсем понял, как это сделать. Но Ваша подсказка натолкнула на идею, которая сработала - просто создал 3 детали на основе объекта Заказ через мастер деталей, и разместил их на странице контрагента, далее прописал фильтры на каждую из них - и всё заработало! Спасибо
"Антон Кравченко" написал:просто создал 3 детали на основе объекта Заказ
Ну я это и предложил :)
Только вручную создать, хотя и с помощью мастера тоже можно