Здравствуйте! Подскажите как можно реализовать обновление карточки мобильного приложения? Кейс следующий делаю апдейт заказа и после обновления полей в success обновлять страницу.

Код примерно следующий:

 

setDiscount: function(config){
		var orderProductRecord = Ext.clone(config.model);
		if(config.discountType==="legal"){
			var discountByContract = config.contract.data.Discount;
			var totalAmount = config.model.data.TotalAmount;
			var discountPrice = this.calculateAmountWithDiscount(totalAmount, discountByContract);
			var totalDiscount = totalAmount-discountPrice;
			orderProductRecord.set("WaDiscountAccount", discountByContract, true);
			orderProductRecord.set("WaTotalDiscount", totalDiscount, true);
			orderProductRecord.save({
				success: function(){
					window.console.log("Update was success");
					Terrasoft.Router.back();
				},
				failure: function(exception) {
					Terrasoft.MessageBox.showMessage(Ext.String.format(Terrasoft.LS.WaErrorExecutionMessage, exception));
				},
				queryConfig: Ext.create('Terrasoft.QueryConfig', {
					modelName: orderProductRecord.self.modelName,
					columns: ["WaDiscountAccount", "WaTotalDiscount"]
				})
			}, this);
		} else if (config.discountType ==="personal") {
			//orderProductRecord.set("WaDiscountContact", config.DiscountContact, true);
		}
	},

 

Нравится

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

См. тут. Возможно, подойдут функции:

markPreviousPagesAsDirty(operationConfig)

Метод отмечает все предыдущие страницы как неактуальные. После возврата к предыдущим страницам для каждой из них вызовется метод refreshDirtyData(), который выполняет повторную загрузку данных или актуализирует данные на основании объекта operationConfig.

refreshPreviousPages(operationConfig, currentPageHistoryItem)

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

refreshAllPages(operationConfig, excludedPageHistoryItems)

Метод выполняет для всех страниц повторную загрузку данных или актуализирует данные на основании operationConfig. Если установлен параметр excludedPageHistoryItems, метод исключает из актуализации указанные страницы.

Показать все комментарии

Создал раздел на портале, веб сервис, предоставлюящий данные с этого раздела. Делаю авторизацию портального пользователя, получаю BPMCSRF, делаю уже POST запрос https://мой сайт/0/rest/EPMAuthDataEnergyService/CheckUser. И тут системы ведут себя по разному.

На среде разработки все успешно. Данные возвращаются. На Продакшине получаю 403 - Forbidden: Access is denied. 

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

Нравится

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

Решил сам.

Надо было прописать новый сервис в файле [Путь к корневому каталогу bpm’online]\Terrasoft.WebApp\SspServices\SspServiceList.txt 

Если бы это нашел где то в академии раньше, то потратил бы меньше времени на поиск решения ошибки

Показать все комментарии

Коллеги, добрый день.

Подскажите, как средствами аналитика решить такой вопрос.

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

 

Нравится

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

Кулак Евгений Витальевич,

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

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

Скорее всего, Вам нужно реализовать требуемый запрос в элементе «Задание-сценарий».

Зайдите в Журнал процессов и настройте фильтрацию по детали связанные объекты, отберите процессы с незавершенным состоянием те (Ошибка, Выполняется и тд).

Поправлюсь, это нужно сделать в БП

Добрый день!

Тогда так:

Сидоров Александр В.,

А где же связь с определенным объектом?

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

Алла Савельева пишет:

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

Алла Савельева,В  журнале отсутствует возможность связать с нужным объектом

Связь через объект «Процесс в объекте».

Кулак Евгений Витальевич,

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

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

Скорее всего, Вам нужно реализовать требуемый запрос в элементе «Задание-сценарий».

Показать все комментарии

Добрый день!

 

Хотел уточнить, можно-ли в почтовом клиенте BPM'online использовать запрос доставки и получения отправляемого электронного сообщения? 

Немного погуглив наткнулся на https://en.wikipedia.org/wiki/Return_receipt 

Но не нашел никакого описания в террасофте, как при написании письма указать эти параметры?

Нравится

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

Добрый день!

Статусы доставки и получения электронного сообщения есть в BPM marketing (https://www.terrasoft.ru/crm/email-marketing).

Для других версий данный функционал нужно реализовывать вручную

Добрый день!

Статусы доставки и получения электронного сообщения есть в BPM marketing (https://www.terrasoft.ru/crm/email-marketing).

Для других версий данный функционал нужно реализовывать вручную

Уже обсуждалось тут

Если, как описано в Википедии, использовать способ:

A non-standard but widely used way to request return receipts is with the "Return-Receipt-To:" (RRT) field in the e-mail header, with the email return address specified. The first time a user opens an email message containing this field in the header, the client will typically prompt the user whether or not to send a return receipt.

То можно попробовать доработать схему EmailSender, добавив там добавление этого заголовка и его значения. Или учитывать, что логика этой схемы берёт дополнительные заголовки со значениями из поля HeaderProperties в таблице активностей и дописывать нужный заголовок туда.

Сидоров Александр В.,

спасио за ответ! Только не понял, как это связано с маркетингом, продукт "студио"

Григорий Чех пишет:

Уже обсуждалось тут

Григорий, спасибо! Но вроде бы про рассылки я ни слова не сказал. 

Зверев Александр пишет:

Если, как описано в Википедии, использовать способ:

A non-standard but widely used way to request return receipts is with the "Return-Receipt-To:" (RRT) field in the e-mail header, with the email return address specified. The first time a user opens an email message containing this field in the header, the client will typically prompt the user whether or not to send a return receipt.

То можно попробовать доработать схему EmailSender, добавив там добавление этого заголовка и его значения. Или учитывать, что логика этой схемы берёт дополнительные заголовки со значениями из поля HeaderProperties в таблице активностей и дописывать нужный заголовок туда.

 Александр, спасибо! В продукте студио схема EmailSender как-то используется?

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

Показать все комментарии

Добрый день. После обновления до версии 7.13.3 при компиляции получаю ошибку:

The type or namespace name 'Http' does not exist in the namespace 'System.Net' (are you missing an assembly reference?) FILE <Название пользовательского Web сервиса>

Данное пространство имён есть в .NetFramework 4.7.

Кто с таким сталкивался?

Нравится

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

Попробовал добавить библиотеку во внешние сборки, система скомпилировалась без проблем

Добавьте в ваш пользовательский сервис

using System.Net.Http;

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

На эту строчку и ругается компилятор.

Коновалов Игорь,

В 7.13 правда не нахожу библиотеки System.Net.Http.

Могу посоветовать скачать ее и добавить во внешние сборки

Попробовал добавить библиотеку во внешние сборки, система скомпилировалась без проблем

Показать все комментарии

Здравствуйте, если я добавлю к контакту некоторое булево поле, как при выборе его из обращения произвести отбор по этому полю?

 

Изображение удалено.

Изображение удалено.

Нравится

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

Rinat,

Добрый день!

Данную фильтрацию можно сделать

1. либо через бизнес правила:

1) через код https://academy.terrasoft.ru/documents/technic-sdk/7-13/primer-primenen…

2) через мастер страницы (https://monosnap.com/file/ooYS71HNPA5gozrb204C1N5gCvCNeU)

2. либо в коде через параметр фильтрации атрибута

пример:

attributes: {
			"Contact": {
				lookupListConfig: {
					"filters": [
                        function() {
                            var filterGroup = Ext.create("Terrasoft.FilterGroup");
                            var galochaFilter = Terrasoft.createColumnFilterWithParameter(
                            	Terrasoft.ComparisonType.NOT_EQUAL, "Galocka", true);
                            filterGroup.add("filter1", galochaFilter);
                            return filterGroup;
                        }
                    ]
				}
 
			}
		}

 

Ринат, здравствуйте!

На вашем втором скриншоте есть выпадающий список (там где "ФИО") в этом списке должно будет появиться добавленное поле. 

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

Гриценко Игорь, а как сделать чтобы он по умолчанию этот отбор применял и пользователю не пришлось руками этот отбор вбивать. Делаю что-то на подобии "неактивных" пользователей.

Rinat,

Добрый день!

Данную фильтрацию можно сделать

1. либо через бизнес правила:

1) через код https://academy.terrasoft.ru/documents/technic-sdk/7-13/primer-primenen…

2) через мастер страницы (https://monosnap.com/file/ooYS71HNPA5gozrb204C1N5gCvCNeU)

2. либо в коде через параметр фильтрации атрибута

пример:

attributes: {
			"Contact": {
				lookupListConfig: {
					"filters": [
                        function() {
                            var filterGroup = Ext.create("Terrasoft.FilterGroup");
                            var galochaFilter = Terrasoft.createColumnFilterWithParameter(
                            	Terrasoft.ComparisonType.NOT_EQUAL, "Galocka", true);
                            filterGroup.add("filter1", galochaFilter);
                            return filterGroup;
                        }
                    ]
				}
 
			}
		}

 

Сидоров Александр В., не совсем понял как в мастер страницы попасть. Это не оно? 

Rinat,

Да, оно. Справа сверху есть кнопка перехода к бизнес правилам

Сидоров Александр В.,Спасибо.

Показать все комментарии

Как в элементе "задача" БП добавить связь с новым разделом.

По умолчанию в связях объект отсутствует.

Нравится

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

Всем доброго времени суток!

Подскажите как можно передать в карточку редактирования нового заказа некоторых параметров - http://prntscr.com/n0jpjt ?

Для открытия карточки редактирования использую:

 

var config = {
			isStartRecord: true,
			pageSchemaName: "MobileOrderEditPage"
		};
		Terrasoft.util.openEditPage("Order", config);

 

Нравится

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

См. в MobilePhoneCallLogPage:

 onSaveButtonButtonTap: function() {
  var modelConfig = Terrasoft.ApplicationConfig.getModelConfig("Activity");
  var requiredModels = modelConfig.RequiredModels;
  Terrasoft.StructureLoader.loadModels({
   modelNames: requiredModels,
   success: function() {
    this.createCallActivity(function() {
     var arrangeActivityToggle = this.getArrangeActivityToggle();
     var toArrange = arrangeActivityToggle.getValue();
     var record = this.record;
     this.back();
     if (toArrange) {
      setTimeout(function() {
       var config = {
        defaultRecordData: {}
       };
       if (Ext.isString(this.activityLinkColumnNames)) {
        config.defaultRecordData[this.activityLinkColumnNames] = record;
       } else {
        for (var i = 0, ln = this.activityLinkColumnNames.length; i &lt; ln; i++) {
         var linkColumnNameConfig = this.activityLinkColumnNames[i];
         var columnName = linkColumnNameConfig.activityColumnName;
         var columnValue = record.get(linkColumnNameConfig.parentColumnName);
         config.defaultRecordData[columnName] = columnValue;
        }
       }
       Terrasoft.util.openEditPage("Activity", config);
      }.bind(this), 500);
     }
    }.bind(this));
   },
   scope: this
  });
 },

 

Показать все комментарии

Подскажите, есть несколько активностей (задач) в процессе, их нужно выставить на:

1. одну на начальника подразделения (заведена функциональная роль - но выбрать нет возможности). Существует ли какой вариант?

2. другие задачи распределять автоматически на других сотрудников входящих в другую функциональную роль.

Нравится

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

Стандартная возможность настройки такой функциональности отсутствует, это можно реализовать в элементе 'Задание-сценарий' бизнес-процесса.

Стандартная возможность настройки такой функциональности отсутствует, это можно реализовать в элементе 'Задание-сценарий' бизнес-процесса.

Показать все комментарии

в карточке контрагента при выстраивании взаимосвязей в виде диаграммы система выдает ошибку SqlException

Из-за чего может быть такое поведение?

Изображение удалено.

Нравится

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

Сегодня обнаружил такую же проблему в своей базе. 

Как выяснилось, у контрагента в поле Parent был внесён его собственный идентификатор, в результате запрос иерархии взаимосвязей вызывал исключение: "Выполнение инструкции прервано. Максимальная рекурсия 100 была использована до завершения инструкции."

Для исправления ошибки достаточно удалить ссылку на родителя в контрагенте (подставить свой Id):

update Account
  set ParentId = null
  where Id = N'665E1BDF-54FA-4231-BE2D-9D4305D91BE3'

 

Добрый день!

Без логов и информации в консоли трудно что то понять.

Определенно что то не то происходит в RelationshipDiagramService. Далее можно отследить, в каком месте происходит ошибка

Используйте профилировщик sql запросов для нахождения причины SqlException и ее устранения

Обратитесь в службу поддержки Террасофт, это базовый функционал - они помогут Вам разобраться.

Сегодня обнаружил такую же проблему в своей базе. 

Как выяснилось, у контрагента в поле Parent был внесён его собственный идентификатор, в результате запрос иерархии взаимосвязей вызывал исключение: "Выполнение инструкции прервано. Максимальная рекурсия 100 была использована до завершения инструкции."

Для исправления ошибки достаточно удалить ссылку на родителя в контрагенте (подставить свой Id):

update Account
  set ParentId = null
  where Id = N'665E1BDF-54FA-4231-BE2D-9D4305D91BE3'

 

Да, это решило проблему. Спасибо.

Показать все комментарии