Добавление бизнес процесса в кнопку "Действие" раздела
Здравствуйте. Был составлен бизнес процесс визирование документа по аналогии с визированием заказа. Добавлен объект и составлены два БП (как и у оригинала). Однако, сам БП "визирование документа" в библиотеке не присутствует, хотя он есть в конфигурации. Как его туда добавить и нужно ли вообще это делать? И как добавить этот процесс в кнопку "действие", чтобы визирование работало?
Благодарю
Нравится
Добрый день. Обратите внимание,что в OrderPageV2 еще есть следующий код
getActions: function() { var actionMenuItems = this.callParent(arguments); actionMenuItems.add("SendToVisaSeparator", this.getActionsMenuItem({ Type: "Terrasoft.MenuSeparator", Caption: "" })); actionMenuItems.add("SendToVisa", this.getActionsMenuItem({ "Caption": VisaHelper.resources.localizableStrings.SendToVisaCaption, "Tag": VisaHelper.SendToVisaMenuItem.methodName, "Enabled": {"bindTo": "canEntityBeOperated"} })); return actionMenuItems; }, /** * Действие "Отправить на визирование" */ sendToVisa: VisaHelper.SendToVisaMethod,
а также в OrderSectionV2
define("OrderSectionV2", ["ProductSalesUtils", "BaseFiltersGenerateModule", "VisaHelper", "ReportUtilities", "css!VisaHelper"], function(ProductSalesUtils, BaseFiltersGenerateModule, VisaHelper) { return { entitySchemaName: "Order", attributes: { /** * Заголовок пункта меню "Отправить на визирование" */ SendToVisaMenuItemCaption: { dataValueType: Terrasoft.DataValueType.TEXT, value: VisaHelper.resources.localizableStrings.SendToVisaCaption } }, methods: { /** * Действие "Отправить на визирование" */ sendToVisa: VisaHelper.SendToVisaMethod, /** * Возвращает коллекцию действий раздела в режиме отображения реестра * @protected * @overridden * @return {Terrasoft.BaseViewModelCollection} Возвращает коллекцию действий раздела в режиме * отображения реестра */ getSectionActions: function() { var actionMenuItems = this.callParent(arguments); actionMenuItems.addItem(this.getActionsMenuItem({ Type: "Terrasoft.MenuSeparator", Caption: "" })); actionMenuItems.addItem(this.getActionsMenuItem({ "Caption": {bindTo: "SendToVisaMenuItemCaption"}, "Click": {bindTo: "sendToVisa"}, "Enabled": {bindTo: "isSingleSelected"} })); return actionMenuItems; }, // продолжение модуля....
Спасибо нашёл их. Только как заменить DocumentSectionV2. Он находится в папке Document и при попытке сохранения выдаёт вот такую надпись "Для заданного локального пути не указан путь к хранилищу".
Сохранив ваш код в схеме DocumentPageV2 страницу раздела перестал отображать
Добрый день!
Выше приведен пример реализации кода по добавлению действия и обработчика на страницу редактирования и страницу реестра.
Внести изменения в схемы базовых пакетов не получится. Необходимо создавать замещающие схемы и в них реализовывать дополнительную логику.
"Зарицкий Олег Васильевич" написал:
"Пащенко Александр Сергеевич" написал:
Спасибо. Сейчас попробую сделать
Здравствуйте. Создал замещающую схему и добавил указанные коды. Однако, раздел перестал отображаться. Посмотрите пожалуйста может где-то ошибка есть?
define("DocumentSectionV2", ["VisaHelper", "BaseFiltersGenerateModule", "DocumentSectionGridRowViewModel"], function(VisaHelper, BaseFiltersGenerateModule) { return { entitySchemaName: "Document", methods: { /** * Устанавливает значение идентификатора контекстной справки для раздела "Документы" * @overridden */ initContextHelp: function() { this.set("ContextHelpId", 1005); this.callParent(arguments); }, attributes: { /** * Заголовок пункта меню "Отправить на визирование" */ SendToVisaMenuItemCaption: { dataValueType: Terrasoft.DataValueType.TEXT, value: VisaHelper.resources.localizableStrings.SendToVisaCaption } }, methods: { /** * Действие "Отправить на визирование" */ sendToVisa: VisaHelper.SendToVisaMethod, /** * Возвращает коллекцию действий раздела в режиме отображения реестра * @protected * @overridden * @return {Terrasoft.BaseViewModelCollection} Возвращает коллекцию действий раздела в режиме * отображения реестра */ getSectionActions: function() { var actionMenuItems = this.callParent(arguments); actionMenuItems.addItem(this.getActionsMenuItem({ Type: "Terrasoft.MenuSeparator", Caption: "" })); actionMenuItems.addItem(this.getActionsMenuItem({ "Caption": {bindTo: "SendToVisaMenuItemCaption"}, "Click": {bindTo: "sendToVisa"}, "Enabled": {bindTo: "isSingleSelected"} })); return actionMenuItems; }, /** * @overridden * @inheritDoc BaseSectionV2#initFixedFiltersConfig */ initFixedFiltersConfig: function() { var fixedFilterConfig = { entitySchema: this.entitySchema, filters: [ { name: "PeriodFilter", caption: this.get("Resources.Strings.PeriodFilterCaption"), dataValueType: Terrasoft.DataValueType.DATE, columnName: "Date", startDate: {}, dueDate: {} }, { name: "Owner", caption: this.get("Resources.Strings.OwnerFilterCaption"), dataValueType: Terrasoft.DataValueType.LOOKUP, filter: BaseFiltersGenerateModule.OwnerFilter, columnName: "Owner" } ] }; this.set("FixedFilterConfig", fixedFilterConfig); }, /** * @overridden */ getGridRowViewModelClassName: function() { return "Terrasoft.DocumentSectionGridRowViewModel"; }, /** * overridden */ getReportFilters: function() { var filters = this.getFilters(); var recordId = this.get("ActiveRow"); if (recordId) { filters.clear(); filters.name = "primaryColumnFilter"; filters.logicalComparisonTypes = Terrasoft.LogicalOperatorType.AND; var filter = this.Terrasoft.createColumnInFilterWithParameters( this.entitySchema.primaryColumnName, [recordId]); filters.addItem(filter); } return filters; }, /** * overridden */ prepareResponseCollection: function(collection) { this.callParent(arguments); var cardPrintMenuItems = this.get("CardPrintMenuItems"); collection.each(function(item) { item.set("CardPrintMenuItems", cardPrintMenuItems); }, this); } }, diff: /**SCHEMA_DIFF*/[ { "operation": "insert", "name": "DataGridActiveRowPrintAction", "parentName": "DataGrid", "propertyName": "activeRowActions", "values": { "className": "Terrasoft.Button", "style": Terrasoft.controls.ButtonEnums.style.GREY, "caption": {"bindTo": "Resources.Strings.PrintRecordGridRowButtonCaption"}, "tag": "print", "visible": { bindTo: "getDataGridActiveRowPrintActionVisible" } } } ]/**SCHEMA_DIFF*/ }; });
У Вас лишняя точка с запятой в предпоследней строке и не хватает одной закрывающей фигурной скобки.
Должно быть так:
//весь ваш код ]/**SCHEMA_DIFF*/ } } });
"Пащенко Александр Сергеевич" написал:
<
Александр, здравствуйте. Посмотрите пожалуйста вот этот код. Записал отдельную схему представления раздела, с родительским объектом "Раздел контакты". Но и там кнопка визирования не отображается. Скорее всего что-то делаю не так. Буду весьма благодарен за помощь
define("ContactSectionV2", ["VisaHelper", "css!VisaHelper"], function(VisaHelper) { return { entitySchemaName: "Contact", attributes: { /** * Заголовок пункта меню "Отправить на визирование" */ SendToVisaMenuItemCaption: { dataValueType: Terrasoft.DataValueType.TEXT, value: VisaHelper.resources.localizableStrings.SendToVisaCaption } }, methods: { /** * Действие "Отправить на визирование" */ sendToVisa: VisaHelper.SendToVisaMethod, /** * Возвращает коллекцию действий раздела в режиме отображения реестра * @protected * @overridden * @return {Terrasoft.BaseViewModelCollection} Возвращает коллекцию действий раздела в режиме * отображения реестра */ getSectionActions: function() { var actionMenuItems = this.callParent(arguments); actionMenuItems.addItem(this.getActionsMenuItem({ Type: "Terrasoft.MenuSeparator", Caption: "" })); actionMenuItems.addItem(this.getActionsMenuItem({ "Caption": {bindTo: "SendToVisaMenuItemCaption"}, "Click": {bindTo: "sendToVisa"}, "Enabled": {bindTo: "isSingleSelected"} })); return actionMenuItems; } } };
Дмитрий, вы создали замещающий клиентский модуль или новую схему представления раздела, с родителем "Раздел контакты"?
Вам нужен именно замещающий клиентский модуль
"Пащенко Александр Сергеевич" написал:Дмитрий, вы создали замещающий клиентский модуль или новую схему представления раздела, с родительским объектом "Раздел контакты"?
Вам нужен именно замещающий клиентский модуль
Да я просто создал новую схему представления раздела. При замещающей схеме нужно копировать всю родительскую схему + дописывать свои доработки?
Всю схему копировать не нужно. Только объявление модуля и новый/измененный функционал.
В Вашем случаем можно полностью вставить код из предыдущего сообщения. Он будет корректен.
"Ануфриев Дмитрий Юрьевич" написал:Да я просто создал новую схему представления раздела. При замещающей схеме нужно копировать всю родительскую схему + дописывать свои доработки?
Нет, необходимо указать только следующий обязательный код:
1) Для страницы редактирования:
define('ContactPageV2', ['ContactPageV2Resources', 'GeneralDetails'], function(resources, GeneralDetails) { return { entitySchemaName: 'Contact', details: /**SCHEMA_DETAILS*/{}/**SCHEMA_DETAILS*/, diff: /**SCHEMA_DIFF*/[]/**SCHEMA_DIFF*/, attributes: {}, methods: {}, rules: {}, userCode: {} }; });
2) Для страницы раздела:
define("ContactSectionV2", ["GridUtilitiesV2", "GoogleIntegrationUtilities", "RightUtilities", "ConfigurationConstants", "GoogleIntegrationUtilitiesV2"], function(gridUtilitiesV2, GoogleUtilities, RightUtilities, ConfigurationConstants) { return { entitySchemaName: "Contact", attributes: {}, messages: {}, mixins: {}, methods: {} }; });
"Демьяник Алексей" написал:Нет, необходимо указать только следующий обязательный код:
Возможно, поможете. Добавила все коды выше, но при нажатии на кнопку "Отправить на визирование" возникает ошибка (на скриншоте)
Анастасия,
Трудно определить причину по скриншоту. Напишите письмо в тех.поддержку с детальным описанием.