Вопрос

Как можно определить, как создана Активность - вручную пользователем или автоматически системой?
Посмотрел параметр Process Item, но он не у всех процессных активностей заполнен

У меня такой же вопрос

3 комментария

Если в существующих полях никаких различий нет, можно добавить в объект новое поле, в карточку не выводить визуально, но заполнять в ней программно. И не забыть о такой же доработке миникарточки.

Кстати, была такая идея от Вас же, только речь шла о правах, а не активностях.

И ещё похожая идея, только для определения записей, заведенных по OData.

Зверев Александр,

Да, в некоторых проектах делали заполнение названием процесса, но в стандартном элементе "Выполнить задачу" так просто поля не добавить. 
А ещё есть задачи, созданные при элементах "Открыть страницу редактирования", созданные в DCM...

Думал, вдруг есть что-то встроенное уже

Есть стандартный элемент БП «Привязать процесс к объекту», можно брать после создания брать Id задачи и вызывать его.

Войдите или зарегистрируйтесь, чтобы комментировать
Вопрос

Здравствуйте. Столкнулся с проблемой следующего рода:
Появилась необходимость добавить действие на страницу редактирования активности.
Выполнил все пункты согласно инструкции на https://academy.terrasoft.ru/documents/technic-sdk/7-7/dobavlenie-deystviya-na-stranicu-redaktirovaniya . 
В результате получилась вот такая замещающая страница:

define("ActivityPageV2", ["ProcessModuleUtilities", "AbrConstants"],
    function(ProcessModuleUtilities, AbrConstants) {
        return {
            // Название схемы объекта страницы редактирования.
         entitySchemaName: "Activity",
         methods: {
          // Проверяет, в каком состоянии активность.
          isRunningMail: function() {
                if (this.get("Status") && this.get("Result")) {
                 return (this.get("Status").value === AbrConstants.Activity.State.Completed && this.get("Result").value === "632afdd2-f616-4ea6-87d2-8ed38eed8aff");
                }
                return false;
               },
            // Метод-обработчик действия.
          showActionInfo: function() {
                var args = {
                  sysProcessName: "SendEmailAboutTheApproval",
                  scope: this
                 };
                ProcessModuleUtilities.executeProcess(args);
                this.showInformationDialog("Оповещения в ДТ и ОД отправлены.");
               },
            // Переопределение базового виртуального метода, возвращающего коллекцию действий страницы редактирования.
          getActions: function() {
                // Вызывается родительская реализация метода для получения
                // коллекции проинициализированных действий базовой страницы.
                var actionMenuItems = this.callParent(arguments);
                // Добавление линии-разделителя.
                actionMenuItems.addItem(this.getButtonMenuItem({
                 Type: "Terrasoft.MenuSeparator",
                 Caption: ""
                }));
                // Добавление пункта меню в список действий страницы редактирования.
                actionMenuItems.addItem(this.getButtonMenuItem({
                    // Привязка заголовка пункта меню к локализуемой строке схемы.
                 "Caption": {bindTo: "Resources.Strings.SendEmailToOdAndDt"},
                    // Привязка метода-обработчика действия.
                 "Tag": "showActionInfo",
                    // Привязка свойства доступности пункта меню к значению, которое возвращает метод isRunning().
                 "Enabled": {bindTo: "isRunningMail"}
                }));
                return actionMenuItems;
               }
         }
        };
       }
);

Кнопка добавилась, но свойство "Enabled" работает некорректно.
Т.е. кнопка должна быть активна, когда задача имеет состояние "Завершена" и результат "Выполнена".
Но, когда мы со страницы активностей открываем задачу, которая имеет состояние "Завершена" и результат "Выполнена", кнопка всегда неактивна и никак не реагирует на изменения состояния или результата.

Но если просто обновить страницу, кнопка становится активна.

В чем может быть причина?

У меня такой же вопрос

14 комментариев
Лучший ответ

stique,

//PageV2
attributes: {
//На пейдже первым делом объявляю атрибут
//на который я буду биндить (байндить) свойство "enabled" кнопки
 "isOrderButtonEnabled": {
  "value": false
 }
},
messages: {
//Объявляю сообщение с направлением PUBLISH, которое будем отправлять на секцию
 "GetOrderButtonStatus": {
  mode: Terrasoft.MessageMode.PTP,
  direction: Terrasoft.MessageDirectionType.PUBLISH
 }
},
methods: {
//Объявляю метод, который буду запускать два раза
//При инициализации страницы и после сохранения
//Он проставляет атрибут для кнопки 
//и одновременно отправляет сообщение с текущим статусом на секцию
//Хотя здесь можно сделать лучше и отправлять не статус, а непосредственно значение true/false
 getOrderButtonStatus: function() {
  this.sandbox.publish("GetOrderButtonStatus", this.get("UsrStatus"), [this.sandbox.id]);
  var status = this.$UsrStatus;
  if (status && status.value === "caae507b-ccea-4275-967e-bb4f4c73a880") {
   this.set("isOrderButtonEnabled", true);
  }
  else {
   this.set("isOrderButtonEnabled", false);
  }
 },
 onEntityInitialized: function() {
  this.callParent(arguments);
//вызываем первый раз
  this.getOrderButtonStatus();
 },
 onSaved: function() {
  this.callParent(arguments);
//вызываем второй раз
  this.getOrderButtonStatus();
 }
},
diff: [
//У меня была обычная кнопка на карточке, у Вас в меню Действия
//Так что Вам нужно забиндить кнопку на атрибут в Вашем методе getActions()
 {
  "operation": "insert",
  "name": "creatingOrderButton",
  "values": {
   "itemType": 5,
   "caption": "Create order",
   "click": {
    "bindTo": "syncCreatingOrder"
   },
   "style": "green",
   "enabled": {
    "bindTo": "isOrderButtonEnabled"//забиндить на атрибут
   },
   "classes": {
    "textClass": "actions-button-margin-right"
   }
  },
  "parentName": "LeftContainer",
  "propertyName": "items",
  "index": 7
 }
]
 
 
 
 
 
//SectionV2
attributes: {
//Здесь объявляем такой же атрибут
 "isOrderButtonEnabled": {
  "value": false
 }
},
messages: {
//Объявляем такое же сообщение с направлением SUBSCRIBE
 "GetOrderButtonStatus": {
  mode: Terrasoft.MessageMode.PTP,
  direction: Terrasoft.MessageDirectionType.SUBSCRIBE
 }
},
methods: {
//в init подписываемся на нужное нам сообщение
//и если оно к нам приходит - запускается метод getOrderStatusButton
//Опять таки, здесь можно и нужно логику переделать, чтобы получать сразу значение true/false
//вместо статуса
 init: function() {
  this.callParent(arguments);
  this.sandbox.subscribe("GetOrderButtonStatus", function(value) { this.getOrderButtonStatus(value); }, this, [this.getCardModuleSandboxId()]);
 },
 getOrderButtonStatus: function(status) {
  if (status && status.value === "caae507b-ccea-4275-967e-bb4f4c73a880") {
   this.set("isOrderButtonEnabled", true);
  }
  else {
   this.set("isOrderButtonEnabled", false);
  }
 }
}

 

Насколько я понимаю и помню, то добавив действие на ActivityPageV2, это действие по-моему создается автоматически и в секции, средствами сообщений, я давно это тестил, уже не помню. В общем, в первом случае у вас кнопка ДЕЙСТВИЯ находится на ActivitySectionV2, а во втором случае кнопка ДЕЙСТВИЯ находится на ActivityPageV2, это две разные кнопки. И на пейдже у вас есть метод isRunningMail(), но на секции его нет. Вам нужно организовать передачу сообщения с пейджи на секцию какой там статус и результат, потому что на секции этой информации нет. У Вас случайно ошибки в консоль не сыпятся, когда вы открываете первый раз активность в совмещенном режиме? Я надеюсь, что хоть немного понятно изъяснился)) I'm doing my best)

Добавить комментарий

Alex Zaslavsky,

Нет, ошибок в консоли нет.

Может быть я путаю, но кажется, когда мы открываем задачу, ActivityPage сразу подгружается.

stique,

Если открыть задачу, которая поставлена по процессу, которая не завершена, то да, она сразу откроется в пейдже, а остальные задачи, при первом открытии, открываются в совмещенном режиме, насколько я понимаю.

Вот попробуйте в секцию добавить метод isRunningMail() который всегда возвращает true, для примера, и кнопка у вас, скорее всего, заработает.

Но, чтобы она отрабатывала так же, как на пейдже, нужно воспользоваться механизмом сообщений.

Добавить комментарий

Alex Zaslavsky,

Кажется Вы правы! Как правильно поступить в таком случае?

Alex Zaslavsky пишет: Но, чтобы она отрабатывала так же, как на пейдже, нужно воспользоваться механизмом сообщений.

А где про этот механизм можно почитать? 

stique,

С механизмом сообщений знакомы? Sandbox

Я биндил свойство enabled на атрибут, на пейдже в методах onEntityInitialized и onSaved я отправлял сообщения на секшн и в зависимости от условий проставлял такой же атрибут в true или false.

Если нужно прям подробно, то могу позже описать полностью как я сделал.

Alex Zaslavsky,

Alex Zaslavsky пишет:
С механизмом сообщений знакомы? Sandbox

Увы нет, только неделю  как изучаю bpm)

Alex Zaslavsky пишет:
Если нужно прям подробно, то могу позже описать полностью как я сделал.

 Если Вас не затруднит, буду признателен. А пока постараюсь самостоятельно поковырять.

stique,

//PageV2
attributes: {
//На пейдже первым делом объявляю атрибут
//на который я буду биндить (байндить) свойство "enabled" кнопки
 "isOrderButtonEnabled": {
  "value": false
 }
},
messages: {
//Объявляю сообщение с направлением PUBLISH, которое будем отправлять на секцию
 "GetOrderButtonStatus": {
  mode: Terrasoft.MessageMode.PTP,
  direction: Terrasoft.MessageDirectionType.PUBLISH
 }
},
methods: {
//Объявляю метод, который буду запускать два раза
//При инициализации страницы и после сохранения
//Он проставляет атрибут для кнопки 
//и одновременно отправляет сообщение с текущим статусом на секцию
//Хотя здесь можно сделать лучше и отправлять не статус, а непосредственно значение true/false
 getOrderButtonStatus: function() {
  this.sandbox.publish("GetOrderButtonStatus", this.get("UsrStatus"), [this.sandbox.id]);
  var status = this.$UsrStatus;
  if (status && status.value === "caae507b-ccea-4275-967e-bb4f4c73a880") {
   this.set("isOrderButtonEnabled", true);
  }
  else {
   this.set("isOrderButtonEnabled", false);
  }
 },
 onEntityInitialized: function() {
  this.callParent(arguments);
//вызываем первый раз
  this.getOrderButtonStatus();
 },
 onSaved: function() {
  this.callParent(arguments);
//вызываем второй раз
  this.getOrderButtonStatus();
 }
},
diff: [
//У меня была обычная кнопка на карточке, у Вас в меню Действия
//Так что Вам нужно забиндить кнопку на атрибут в Вашем методе getActions()
 {
  "operation": "insert",
  "name": "creatingOrderButton",
  "values": {
   "itemType": 5,
   "caption": "Create order",
   "click": {
    "bindTo": "syncCreatingOrder"
   },
   "style": "green",
   "enabled": {
    "bindTo": "isOrderButtonEnabled"//забиндить на атрибут
   },
   "classes": {
    "textClass": "actions-button-margin-right"
   }
  },
  "parentName": "LeftContainer",
  "propertyName": "items",
  "index": 7
 }
]
 
 
 
 
 
//SectionV2
attributes: {
//Здесь объявляем такой же атрибут
 "isOrderButtonEnabled": {
  "value": false
 }
},
messages: {
//Объявляем такое же сообщение с направлением SUBSCRIBE
 "GetOrderButtonStatus": {
  mode: Terrasoft.MessageMode.PTP,
  direction: Terrasoft.MessageDirectionType.SUBSCRIBE
 }
},
methods: {
//в init подписываемся на нужное нам сообщение
//и если оно к нам приходит - запускается метод getOrderStatusButton
//Опять таки, здесь можно и нужно логику переделать, чтобы получать сразу значение true/false
//вместо статуса
 init: function() {
  this.callParent(arguments);
  this.sandbox.subscribe("GetOrderButtonStatus", function(value) { this.getOrderButtonStatus(value); }, this, [this.getCardModuleSandboxId()]);
 },
 getOrderButtonStatus: function(status) {
  if (status && status.value === "caae507b-ccea-4275-967e-bb4f4c73a880") {
   this.set("isOrderButtonEnabled", true);
  }
  else {
   this.set("isOrderButtonEnabled", false);
  }
 }
}

 

Alex Zaslavsky,

Ого, большое спасибо Вам за такой развернутый ответ.
Еще нашел информацию что можно использовать "reloadAll: true", но пока не знаю как это прикрутить)

 

stique,

Отпишитесь потом, получилось или нет :)

Alex Zaslavsky,

Сделал как Вы написали, все заработало, но чтобы свойство "Enabled" изменилось, нужно обязательно нажимать кнопку сохранить. Т.е. при изменении состояния без сохранения активности, доступность кнопки не меняется.

stique,

Ну я делал именно такую логику, чтобы юзер не мог просто сменить статус (временно, без сохранения) и жмакать кнопку, когда ему захочется))
Если Вам нужно другое поведение, то можно создать на пейдже атрибут, который будет реагировать на изменение полей "Результат" и "Статус" и отправлять сендбоксом сообщение в любой момент, при изменении этих полей. Но как по мне, это не совсем правильно. Но решать Вам)

Войдите или зарегистрируйтесь, чтобы комментировать
Вопрос

Реализовал разделение календаря по сотрудникам в фильтре через кучу diff. Встал вопрос - как наполнить каждый разными данными?
По умолчанию activityCollection планировщика указан как ScheduleGridData. Соответственно, на каждый календарь на странице создаю ScheduleGridData0, ScheduleGridData1, ScheduleGridData2 и так далее и подставляю эти значения в каждый activityCollection, но календари становятся вообще пустыми. Я так понимаю, вопрос в методах отрисовки, но тогда придется переписывать половину CRM.
Подскажите, как каждый календарик наполнить своим содержимым или что нужно изменить?

Вот пример одного из календарей

{
            "operation": "insert",
            "name": "Schedule0",
            "parentName": "DataViewsContainer",
            "propertyName": "items",
            "values": {
                 "id": "ActivitySectionV2Scheduler0",
                 "selectors": {"wrapEl": "#ActivitySectionV2Scheduler0"},
                 "itemType": Terrasoft.ViewItemType.SCHEDULE_EDIT,
                 "visible": {"bindTo": "isSchedulerVisible0"},
                 "startHour": Terrasoft.SysSettings.cachedSettings.SchedulerTimingStart,
                 "displayStartHour": Terrasoft.SysSettings.cachedSettings.SchedulerDisplayTimingStart + "-00",
                 "dueHour": Terrasoft.SysSettings.cachedSettings.SchedulerTimingEnd,
                 "timeScale": {"bindTo": "getTimeScale"},
                 "period": {"bindTo": "getSchedulerPeriod"},
                 "timezone": [{}],
                 "startDate": null,
                 "dueDate": null,
	         "activityCollection": {"bindTo": "ScheduleGridData0"},
                 "selectedItems": {"bindTo": "SelectedRows"},
                 "changeSelectedItems": {"bindTo": "onChangeSelectedItems"},
                 "scheduleItemDoubleClick": {"bindTo": "onScheduleItemDoubleClick"},
                 "scheduleItemTitleMouseOver": {"bindTo": "scheduleItemTitleMouseOver"},
                 "scheduleItemTitleClick": {"bindTo": "scheduleItemTitleClick"},
                 "change": {"bindTo": "changeScheduleItem"},
                 "selection": {"bindTo": "SchedulerSelection"},
                 "floatingItemsCollection": {"bindTo": "SchedulerFloatItemsCollection"},
                 "selectionKeyPress": {bindTo: "onSelectionKeyPress"},
                 "floatingItemReady": {"bindTo": "onFloatingItemReady"},
                 "selectionKeyPressSymbols": {"bindTo": "SchedulerSelectionPressedKeys"},
                 "itemBindingConfig": {
                     "itemId": {"bindTo": "Id"},
                     "title": {"bindTo": "getScheduleItemTitle"},
                     "changeTitle": {"bindTo": "onTitleChanged"},
                     "startDate": {"bindTo": "StartDate"},
                     "changeStartDate": {"bindTo": "onStartDateChanged"},
                     "dueDate": {"bindTo": "DueDate"},
                     "changeDueDate": {"bindTo": "onDueDateChanged"},
                     "status": {"bindTo": "getScheduleItemStatus"},
                     "changeStatus": {"bindTo": "onStatusChanged"},
                     "background": {"bindTo": "Background"},
                     "fontColor": {"bindTo": "FontColor"},
                     "isBold": {"bindTo": "IsBold"},
                     "isItalic": {"bindTo": "IsItalic"},
                     "isUnderline": {"bindTo": "IsUnderline"},
                     "markerValue": {"bindTo": "getScheduleItemHint"}
                   },
                   "floatingItemBindingConfig": {
                        "caption": {"bindTo": "getSimpleModuleCaption"},
                        "width": {"bindTo": "getSimpleModuleWidth"}
                   }
}

 

У меня такой же вопрос

1 комментарий

Смотрите, как реализовано расписание для нескольких пользователей в дополнении «Advanced schedule for bpm'online». 

Войдите или зарегистрируйтесь, чтобы комментировать
Вопрос

Добрый день. 

Не все оповещения уходят пользователям, активность тип email, остаются в черновиках в состоянии "Не отправлено", приходится отправлять вручную. Как установить причину ? Или как отправить "разом" все оповещения за день, нету возможности выбора всех писем. Сама почта работает стабильно, проверяли. Прошу помочь.

Прикрепленные файлы
Скрин.jpg74.94 КБ

У меня такой же вопрос

1 комментарий
Лучший ответ

Начните с просмотра логов вашего почтового сервера (при необходимости включите логирование, привлеките к решению проблемы администратора почтовой системы)  почему письма сразу не отправляются. 

Как происходит отправка уведомлений и проблема касается только уведомлений или и других почтовsых сообщений? Скорее всего есть БПР который отправляет уведомления, проверьте какой тип отправки указан в нем, ручная отправка или автоматическая?

Начните с просмотра логов вашего почтового сервера (при необходимости включите логирование, привлеките к решению проблемы администратора почтовой системы)  почему письма сразу не отправляются. 

Как происходит отправка уведомлений и проблема касается только уведомлений или и других почтовsых сообщений? Скорее всего есть БПР который отправляет уведомления, проверьте какой тип отправки указан в нем, ручная отправка или автоматическая?

Войдите или зарегистрируйтесь, чтобы комментировать
Вопрос

Добрый день!

Возможно кто-нибудь ранее сталкивался с проблемами в мобильном приложении на iOS. Приложение постоянно намертво зависает при создании/редактировании активностей. Очистка кэша помогает ровно до первого раза. Пользователи устройств на android таких проблем не испытывают. С интернетом и свободным пространством на телефоне проблем нет.

Десктопная версия BPM 7.12, мобильная 7.13.

Чем могут быть вызваны проблемы в мобильном приложении на iOS? Может ли кто-нибудь посоветовать метод борьбы с данными проблемами? 

У меня такой же вопрос

2 комментария

В мобильной версии наблюдались проблемы с утечками памяти для разных версий iOS, и они исправлялись обновлением на iOS 12.

По поводу диагностирования самих причин:
Если ошибка возникает только на мобильном приложении (в то время, как на веб-версии все отрабатывает нормально), тогда необходимо понимать какие действия выполняются в системе и приводят к ошибке. Информация об ошибках хранится мобильном устройстве.

И как итог, для того, чтобы локализировать причины проблем с прозводительностью необходимо учитывать следующие факторы:

  • версия ОС системы
  • действия, которые выполняются в системе перед началом проблем (к примеру, в какие разделы мобильного приложения переходили, какие записи в разделе активностей редактировали)
  • логи приложения (в них можно найти сообщения о возможных ошибках, которые повлияли на проседание производительности)

Мотков Илья,

Спасибо за ответ!

Войдите или зарегистрируйтесь, чтобы комментировать
Вопрос

Добрый день!

Создал процесс который создает в календаре задачу и выставляет ей  начало и завершение на ближайшее свободное время в календаре. При попытке проверить отсутствие задачи начало и завершение сравниваются с датами, хотя в условиях стоит фильтр сравнения с датой и временем

У меня такой же вопрос

2 комментария

По умолчанию при добавлении фильтра по колонке «Дата/Время» не учитывается время. Необходимо в параметрах элемента «Читать данные» дополнительно проставлять признак «Учитывать время в фильтре» (изначально стоит false).

Войдите или зарегистрируйтесь, чтобы комментировать
Вопрос

Подскажите как убрать значки быстрого создания активности из полоски кейсов?

 

У меня такой же вопрос

2 комментария
Лучший ответ

Заместить SectionActionsDashboard"

и

		{
			"operation": "remove",
			"name": "CallMessageTab"			
		},
		{
			"operation": "remove",
			"name": "EmailMessageTab"
		},
		{
			"operation": "remove",
			"name": "SocialMessageTab"
		},
		{
		   "operation": "remove",
		    "name": "TaskMessageTab"
		}

 

Вам нужно переопределить методы getSectionPublishers и getExtendedConfig в SectionActionsDashboard.

Посмотрите пример добавления нового канала в ActionDashboard и реализацию SectionActionsDashboard в пакетах TaskMessagePublisher, EmailMessagePublisher, CallMessagePublisher и SocialMessagePublisher.

Разобравшись в механизме добавления, Вы сможете понять, каким образом убрать существующие значки.

 

Заместить SectionActionsDashboard"

и

		{
			"operation": "remove",
			"name": "CallMessageTab"			
		},
		{
			"operation": "remove",
			"name": "EmailMessageTab"
		},
		{
			"operation": "remove",
			"name": "SocialMessageTab"
		},
		{
		   "operation": "remove",
		    "name": "TaskMessageTab"
		}

 

Войдите или зарегистрируйтесь, чтобы комментировать
Вопрос

У меня запускается некоторый БП, в котором почти на старте открывается страница на редактирование, соответственно там создается задача с заголовком, который я прописываю.

Необходимо отлавливать момент, когда пользователь, не сохранив страницу пытается еще раз запустить этот же БП.

Я пытался сделать это по задаче, но она никак не ссылается на страницу/объект редактирования. 

Как быть?

У меня такой же вопрос

5 комментариев
Лучший ответ

БП запускается как по сигналу по какому то действию оператора?

Самое простое решение перед открытием окна менять статус задачи (как вариант добавить в объект какой то признак Передан в работу) И не запускать (или завершать) БП у которых этот признак установлен.

Те

старовый сигнал

проверка что признак не установен

и либо выход

либо установка признака и затем открытие  странички редактирования!

БП запускается как по сигналу по какому то действию оператора?

Самое простое решение перед открытием окна менять статус задачи (как вариант добавить в объект какой то признак Передан в работу) И не запускать (или завершать) БП у которых этот признак установлен.

Те

старовый сигнал

проверка что признак не установен

и либо выход

либо установка признака и затем открытие  странички редактирования!

Григорий Чех,

по меню Действия. Хотелось как проще, ведь система как-то видит какая задача связана с этой страницей и завершает ее после сохранения? Почему мы не можем это увидеть?

Можно, но очень не советую вам на них завязыватся. Они активно изменяются от версии к версии.

Добрый день, как отметил Григорий лучше иметь признак запуска процесса, но вы можете просматривать текущие задачи по процессам они отображаются у клиента из таблицы  SysProcessElementToDo или через js найти и распарсить элемент(если он есть) такого типа там вшит id записи к которой относится страница редактирования id="ProcessDashboardSchemaNotificationContainer-cce9076d-fa47-49a3-bec5-e53450fc421b-ViewModule_RightSideBarModule_ProcessDashboardModule"

В начале БП свяжите процесс с записью. И затем можно искать такие связи

Войдите или зарегистрируйтесь, чтобы комментировать
Вопрос

Есть желание, чтобы при проставлении статуса Активности "Завершена", автоматически проставлялся Результат - первый доступный для данной категории активности, у которого (у результата) категория Успех.

Как лучше это сделать, чтобы не выбирать все результаты запросом и не фильтровать их самому?

У меня такой же вопрос

3 комментария

Фильтрацию результатов для выбора по успеху можно сделать бизнес-правилом. А если полностью автоматически проставлять результат, это можно сделать бизнес-процессом, срабатывающим на сохранении записи в нужном статусе.

Зверев Александр,

Задача, чтобы при выборе состояния "завершена" в карточке, там же в карточке проставлялся результат категории успешно. Но пользователь имеет возможность его изменить.

Знаете как, в обычном выпадающем списке вы в коде пишите comboBox.SelectedIndex = 0 и у вас выбирается первый элемент.

Есть ли аналогичный способ сделать это в ВРМ? Сейчас я отфильтровываю нужный результат для данной категории активности с категорией успех и при изменении статуса на "завершена" прописываю его, но это какое-то не красивое решение.

Тут решается аналогичная задача, только у Вас вместо чекбокса первое поле будет тоже справочным.

Войдите или зарегистрируйтесь, чтобы комментировать
Вопрос

Всем привет!

На странице Активности, когда заходишь в запись, есть кнопка с флажком "добавить связанную активность". Мне нужно изменить логику работы создания новой активности на основании текущей.

Поэтому возник вопрос, можно ли переопределить действие этой кнопки?

Какой метод отвечает за обработку пунктов меню "задача", "звонок", "email".

Так же вопрос,  как можно скрыть данную кнопку с этой страницы?

Сейчас создана отдельная кастомная кнопка, которая выполняем нужные мне действия. Поэтому есть второй вопрос: Как скрыть вообще кнопку с флажком?

Может есть какой-то обработчик отвечающий за видимость этой кнопки?

У меня такой же вопрос

1 комментарий

Добрый вечер.

Кнопку можно изменить и скрыть. Например, убрать/скрыть кнопку можно так - в замещающей схеме в разделе diff написать 

{
	"operation": "remove",
	"name": "addActions"
}

Или же переопределить метод getQuickAddButtonVisible. Методы обработчики на пункты меню добавляются в методе initQuickAddMenuItems из миксина QuickAddMixin.

Для того что бы определить это я сделал следующее: открыл консоль разработчика (F12), на нужном элементе на странице нажал правую кнопку мыши, выбрал Inspect. У меня открылась вкладка Elements и выделилась строка с нужным элементом. После префикса «ActivityPageV2» я увидел название элемента «addActions». Далее в глобальном поиске(Ctrl-shift-f) я запустил поиск. Нашел ссылку на BasePageV2. Увидел diff данного «флажка», а также интересные методы «QuickAddMenuItems» и «getQuickAddButtonVisible». Нашел данные методы, поставил точки останова, перегрузил страницу, и далее с помощью клавиш F10 и F11 проследил цепочку вызовов.

Войдите или зарегистрируйтесь, чтобы комментировать