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

Добавляю деталь в мобильное приложение - http://prntscr.com/mx7ioh

добавлял следующим образом:

 

Terrasoft.sdk.Details.add("Activity", {
	name: "WaConsultationSubjectInVisitDetail",
	title: "WaConsultationSubjectInVisitCaption",
	model: "WaConsultationSubjectInVisit",
	parentColumnName: "Activity",
	masterColumnName: "Id",
	position: 0
});

Модуль зарегистрировал в манифесте.

так же добавил отображение грида для детали:

 

Terrasoft.sdk.GridPage.setTitle("WaConsultationSubjectInVisit", "WaConsultationSubjectInVisitGridTitle");
 
Terrasoft.sdk.GridPage.setPrimaryColumn("WaConsultationSubjectInVisit", "WaConsultationSubject");
Terrasoft.sdk.GridPage.setSubtitleColumns("WaConsultationSubjectInVisit", ["WaLoyalty","WaPotential"]);

При переходе на деталь вываливаются ошибки - http://prntscr.com/mx7jtz

Подскажите что делаю не так?

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

Нравится

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

Такое сообщение говорит о попытке писать в поле типа boolean неподходящее значение. Вероятно, в этой новой детали что-то не так сделали с одним из логических полей. Более точно узнать причину можно, изучив саму добавляемую деталь или посмотреть в Fiddler, какой запрос идёт к веб-сервису OData. 

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

Здравствуйте!

Возможно ли реализовать использование методов расширения в элементе БП формула.

Столкнулся с таким случаем нужно определить вхождение текущего времени в диапазон.

Написал метод расширения:

namespace Terrasoft.Configuration
{
    public static class AbDateTimeExtensions
    {
        public static bool IsInRange(this DateTime dateToCheck, DateTime startDate, DateTime endDate)
        {
            return dateToCheck.TimeOfDay >= startDate.TimeOfDay && dateToCheck.TimeOfDay < endDate.TimeOfDay;
        }
    }
}

 Но при использовании его в формуле выводит ошибку - http://prntscr.com/mwbc1w

7 комментариев

В старом  дизайнере процессов можно было в формуле просто вызвать функцию, написанную на C# в том же БП. Сейчас так нельзя. В Вашем случае для такого вычисления вместо блока-формулы можно использовать блок-скрипт, где считать значения из параметров и вызвать функцию, а результат записать в ещё один параметр.

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

Пащенко Александр Сергеевич,

Хорошая идея. Давайте её залайкаем и, возможно, когда-нибудь эта возможность в bpm'online появится wink

Пащенко Александр Сергеевич, без компиляции бы в любом случае не обошлось. В старом движке процессов компилировать нужно было всегда, а в новом — только если есть элементы на C#.

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

Так тут же речь не о компиляции, а о методах расширения в базовых элементах процесса, которые единоразово дорабатываются и потом используются везде, где надо, а не каждый раз выполняется дублирование кода в элементе скрипт!

Если какую-то логику нужно часто применять в процессе, можно оформить её в UserTask.

Алла Савельева,

А смысл? Проще делать хэлперы (схема исходного кода) и их использовать в скриптасках. Для чегото более навороченного можно сделать свои действия процесса.

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

Коллеги столкнулся с такой проблемой, не находит некоторые схемы - http://prntscr.com/mugxfw

Схемы добавлены в манифест рабочего места - http://prntscr.com/mugxx2

Подскажите что делаю не так?

Нравится

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

Попробуйте очистить Redis и перезапустить пул. Вообще, это стандартные схемы и были уже добавлены ранее. Дело должно быть не в них, а в той схеме из восьмого сверху сообщения, которая у Вас в файловой системе и названия которой не видно. Проверьте правильность логики в ней.

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

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

Столкнулся с такой проблемой при разработке в ФС сжирается все ОЗУ и ПК тупо зависает.

ОЗУ 16 Гб. При компиляции загружается под 100%. Где можно настроить ограничение ресурсов ОЗУ при компиляции?

Заранее благодарен.

Нравится

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

Отсутствие пророческого дара не позволяет вам помочь. Если проблема еще актуальна может вы немного подробнее описать что вы делаете и ответить на нижеприведенные вопросы или все тоже самое отправить в тех поддержку террасофт

- ос

- версия нет фрєймворка

- версия sql сервера (для MS SQL то что возвращает select @version)

- как компилируете (если через VS то версия и обновления установленные) если через консоль то параметры и желательно логи компиляции

- какие доп сборки включены в конфигурацию

Отсутствие пророческого дара не позволяет вам помочь. Если проблема еще актуальна может вы немного подробнее описать что вы делаете и ответить на нижеприведенные вопросы или все тоже самое отправить в тех поддержку террасофт

- ос

- версия нет фрєймворка

- версия sql сервера (для MS SQL то что возвращает select @version)

- как компилируете (если через VS то версия и обновления установленные) если через консоль то параметры и желательно логи компиляции

- какие доп сборки включены в конфигурацию

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

ОС: Windows 10, версия 1803

.Net framework: http://prntscr.com/mpr4ys

версия sql сервера: Microsoft SQL Server 2016 (RTM) - 13.0.1601.5 (X64)   Apr 29 2016 23:23:58   Copyright (c) Microsoft Corporation  Enterprise Edition (64-bit) on Windows 10 Pro 6.3 <X64> (Build 17134: ) 

Компилировал и через VS и через конфигурацию, память загружается под 100%

 Сборки: Sales, Marketing, Service

 

Нажал публикацию объекта:

http://prntscr.com/mpruc6

данный процесс съедает почти 4 гб озу

У меня компилятор 3 Гб выедает. Но при 64-х воткнутых в сервер это не проблема :)

Алексей-Карягин,

Дело в том что это у меня локальная машина на которой веду разработку, потом заливаю на сервак. 

VBCSCompiler.exe — это компилятор от Microsoft. Сайт bpm'online его просто запускает с нужными параметрами.

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

Или на компьютере отключен или слишком маленький файл подкачки, в результате чего при нехватке памяти система падает, а не использует жёсткий диск.

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

Отключен файл подкачки т.к. использую SSD

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

Поставил файл подкачки проблема пропала

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

Добрый день!

Настроил систему на разработку в файловой системе. Все делал по инструкции с академии. Но при отладки когда проставляю точку останова то она не работает - http://prntscr.com/mon7s3

Второй метод дебага что описан в статье мне не подходит.

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

Заранее благодарен

Нравится

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

Как вариант - посмотреть настройки отладчика в VS.

 

 

Как вариант - посмотреть настройки отладчика в VS.

 

 

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

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

Столкнулся с проблемой интеграции с Google Analytics. Написал сервис с с ипользованием следующих библиотек - https://prnt.sc/mmm8kd

Но при вызове сервиса вываливаются следующие ошибки -https://prnt.sc/mmm98e

Я понял что идет конфликт встроенных библиотек Google и тех что добавили в кастомном пакете.

Что можете посоветовать? 

Нравится

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

Добрый день, Алексей!



Приносим свои извинения за неудобства. Версии библиотек Google API планировали обновлять с версии 7.13.0, но в результате тестирования возникли технические проблемы. На данный момент ответственная команда занимается решением  этого вопроса. Обновления версии библиотек Google API запланировано на ближайшие релизы.



Спасибо за понимание!

Мотков Илья,

Благодарю!

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

Коллеги нужна помощь.

Хочу сделать деталь только читаемой и редактируемой, делаю следующим образом:

Создал модуль WaMobileRemoveDeleteActionModuleConfig

 

Terrasoft.sdk.Details.setChangeModes("OpportunityContact", "OpportunityContactDetailV2StandardDetail", 
		[Terrasoft.ChangeModes.Create, Terrasoft.ChangeModes.Update]);

В манифест добавил: http://prntscr.com/mkivke

Но при выполнении кода почему то не находит конфиг детали: http://prntscr.com/mkiwpg

Что делаю не так?

 

Нравится

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

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

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

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

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

Использую библиотеку Quartz для запуска БП по расписанию:

 

public virtual void CreateJob(string jobName, string jobGroup, string triggerName, string process, DateTime start, Dictionary<string,object> parameters)
        {
            var workspace = UserConnection.Workspace.Name;
            var userName = UserConnection.CurrentUser.Name;
            IJobDetail job = AppScheduler.CreateProcessJob(jobName, jobGroup, process, workspace, userName, parameters);
 
            var trigger = TriggerBuilder.Create().WithIdentity(triggerName, jobGroup).StartAt(start)
                .WithSimpleSchedule(i => i.WithIntervalInHours(24).RepeatForever()).Build();
            var task = AppScheduler.Instance.ScheduleJob(job, trigger);
        }

В таблице триггеров записи создаются, но процесс почему то не запускается:

http://prntscr.com/mgde38

 

Подскажите в чем может быть проблема.

Сайт развернут локально. 

Нравится

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

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

Так же посмотрите рекомендации по разрешению проблем с шедулером тут

А чем тебе стандартный элемент БП запуск по таймеру не устраивает? Там же можно выбрать расписание запуска БП, если конечно ты работаешь с более менее новой версией bpmonline!

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

Так же посмотрите рекомендации по разрешению проблем с шедулером тут

А чем тебе стандартный элемент БП запуск по таймеру не устраивает? Там же можно выбрать расписание запуска БП, если конечно ты работаешь с более менее новой версией bpmonline!

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

Стандартный элемент не решает поставленной задачи

Причину неработоспособности нужно ещё смотреть по другим таблицам, названия которых начинаются на QRTZ, а также в текстовом файле Scheduler.log за нужную дату на сервере IIS. По ссылке, которую дал Григорий, есть различные советы по устранению.

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

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

Стоит задача настройки сортировки очереди не по существующему приоритету, а по числовому - http://prntscr.com/mf7dc3

Подскажите в какой схеме происходит сортировка что бы поправить на кастомную.

Заранее благодарен.

Нравится

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

Галка «Сортировать по приоритету» добавляется в схеме страницы QueueItemSection:

{
	"operation": "insert",
	"name": "AgentViewMode",
	"parentName": "LeftGridUtilsContainer",
	"index": 0,
	"propertyName": "items",
	"values": {
		"checked": {"bindTo": "UseAgentViewSorting"},
		"visible": {"bindTo": "getAreFixedFilterCheckboxesVisible"},
		"caption": {"bindTo": "Resources.Strings.AgentViewCheckboxCaption"},
		"labelButtonClick": {"bindTo": "onUseAgentViewLabelButtonClick"},
		"generator": "QueueItemSectionViewHelper.getFixedFilterCheckboxGenerator"
	}
},

Её значение UseAgentViewSorting учитывает логика:

/**
 * @inheritdoc Terrasoft.GridUtilities#initQueryColumns
 * @overridden
 */
initQueryColumns: function(esq) {
	this.mixins.GridUtilities.initQueryColumns.apply(this, arguments);
	if (this.get("UseAgentViewSorting")) {
		this.addQueueSortColumns(esq, this.get("QueueColumnsSortConfig"));
	}
},
 
/**
 * @inheritdoc Terrasoft.GridUtilities#initQuerySorting
 * @overridden
 */
initQuerySorting: function(esq) {
	this.mixins.GridUtilities.initQuerySorting.apply(this, arguments);
	if (this.get("UseAgentViewSorting")) {
		this.initQueueQuerySorting(esq, this.get("QueueColumnsSortConfig"));
	}
},

QueueColumnsSortConfig берётся:

/**
 * Initializes sorting options.
 * @param {Function} callback The callback function.
 * @protected
 */
initQueueSortingConfig: function(callback) {
	this.queryColumnsSortConfig({
		callback: function(sortConfig) {
			this.set("QueueColumnsSortConfig", sortConfig);
			callback();
		}.bind(this)
	});
},

А вот и сортировка, но по имени:

/**
 * @inheritdoc Terrasoft.QueueSortUtilities#getInitialQueueSortConfig
 * @overridden
 */
getInitialQueueSortConfig: function() {
	var sortConfig = this.mixins.QueueSortUtilities.getInitialQueueSortConfig.apply(this, arguments);
	sortConfig.push({
		"name": "Queue.QueueEntitySchema.Name",
		"orderPosition": 4,
		"orderDirection": Terrasoft.OrderDirection.ASC
	});
	return sortConfig;
},

Логика включения-выключения галки:

/**
 * Handles Agent view Label 'click' event.
 * @protected
 */
onUseAgentViewLabelButtonClick: function() {
	this.set("UseAgentViewSorting", !this.get("UseAgentViewSorting"));
},
 
/**
 * Handles UseAgentView attribute value changed.
 * @param {Backbone.Model} model The model.
 * @param {Boolean} useAgentView The new attribute value.
 */
onUseAgentViewChanged: function(model, useAgentView) {
	if (useAgentView) {
		this.set("SortColumnIndex", -1);
		this.reloadGridData();
	}
	this.set("IsSortMenuVisible", !useAgentView);
	this.saveCheckboxAttributeInProfile("UseAgentViewSorting", useAgentView);
},

 

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

Благодарю. В целом помогло.

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

Коллеги всем доброго времени суток! Столкнулся со следующей проблемой, у нас CRM интегрируется со сторонней системой в БД которой Id представлены как long.

Реализовали БП  создания заказа из звонка. На уровне объекта Order перед сохранение уходит запрос во внешнюю систему тянет последний id в БД, полученный ответ инкрементируем  на 1 и переводим в GUID получаем "00000000-0000-0000-0000-000000000001";  полученный Id подставляем PrimaryColumnValue

http://prntscr.com/m7t797

 

var origin = HttpContext.Current.Request.Headers["Origin"];
IntegrationAutobookingClient client = new IntegrationAutobookingClient(UserConnection);
if (!string.IsNullOrEmpty(origin))
{
	var lastOrerIdInPlatform = client.GetRequest("/v1/orders/last_id");
	var abOrderId = Convert.ToInt64(lastOrerIdInPlatform);
	var newOrderId = abOrderId + 1;
	var bpmOrderId = client.ChangeId(newOrderId);
	Entity.PrimaryColumnValue = bpmOrderId;
}
return true;

Далее идет обработчик после сохранения записи, уходит запрос во внешнюю систему создания Заказа.

Открытие карточки редактирования заказа осуществляется через БП - http://prntscr.com/m7t97l

При сохранении заказ создается, но карточка(эл-т процесса) остается не выполненным - http://prntscr.com/m7taim и дальше по процессу не идет

В консоли наблюдаю следующее - http://prntscr.com/m7tb5u

Подскажите как с этим бороться? Подозреваю что дело в изменении PK.

Нравится

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

Видимо, элемент открытия карточки новой записи в БП уже подразумевает какой-то сгенерированный Id, который затем во встроенном БП объекта на Inserting заменяется нужным, что и приводит к некорректной работе.

Можно попробовать переделать логику: в БП генерировать Id и сохранять новую запись, а уже потом уже открывать её на редактирование в карточке.

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