Вопрос

Всем доброго времени суток!
Подскажите как можно передать в карточку редактирования нового заказа некоторых параметров - 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 < 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
  });
 },

 

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

Всем доброго времени суток!
Есть задача при изменении кол-ва продуктов или же изменении продукта в детали Продукт в заказе просчитывать Amount и TotalAmount. Реализую данную задачу через пользовательское бизнес правило:
 

Terrasoft.sdk.Model.addBusinessRule("OrderProduct", {
	name: "WaOrderProductAmountValidatorRule",
	ruleType: Terrasoft.RuleTypes.Custom,
	triggeredByColumns: ["Quantity", "Product"],
	events: [Terrasoft.BusinessRuleEvents.ValueChanged, Terrasoft.BusinessRuleEvents.Save],
	executeFn: function(model, rule, column, customData, callbackConfig) {
		window.console.info(model);
		debugger;
		var product = model.get("Product");
		if ((!product) || Ext.isEmpty(product)) {
			model.set("Price", 0, true);
			model.set("TotalAmount", 0, true);
			model.set("Amount", 0, true);
		} else {
			var quantity = model.get("Quantity");
			var price = product.get("Price");
			var amount = quantity * price;
			model.set("Amount", amount, true);
			model.set("TotalAmount", amount, true);
		}
		Ext.callback(callbackConfig.success, callbackConfig.scope);
	}
});

Но почему то значение цены продукта возвращает null:
 

{
	"modified":{
		"Id":"fbfb2d62-4439-486b-ae2f-b360f9e899f8"
	},
	"raw":{},
	"stores":[],
	"data":{
		"Id":"1fd85496-4cc0-485c-ad37-bb91857e65df",
		"Name":"Гидрогелевая маска для лица WOW Mask",
		"ProcessListeners":null,
		"Price":null,
		"Active":false,
		"IsArchive":false
	},
	"_data":{
		"Id":"1fd85496-4cc0-485c-ad37-bb91857e65df",
		"Name":"Гидрогелевая маска для лица WOW Mask",
		"ProcessListeners":null,
		"Price":null,
		"Active":false,
		"IsArchive":false
	},
	"id":"fbfb2d62-4439-486b-ae2f-b360f9e899f8",
	"internalId":"fbfb2d62-4439-486b-ae2f-b360f9e899f8",
	"phantom":true,
	"dirty":true
}

Хотя значение цены есть - http://prntscr.com/my9x2o

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

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

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

var controller = Terrasoft.app.getControllerInstances()["MyController"];
//Можно задебажиться и посмотреть, какие экземпляры контроллеров есть, среди них должен быть нужный
var control = controller.getFieldByName("MyColumn", record);
control.setValue(value);

Или ещё вариант:

var control = Ext.getCmp("{ViewId}_{PageType}_{ColumnName}_Column");
// {ViewId} - id представления, {PageType} - тип страницы Edit или Preview, {ColumnName} - название колонки, например AccountPage_Edit_AlternativeName_Column
control.setValue(value);

 

Бершеда Д. Н.,

 Здравствуйте! Я настроил кастомное правило и все хорошо изменяется, в данном случае сумма в зависимости от цены и кол-ва товаров. Вопрос в другом, не видит значение цены продукта, вот пример:
Есть заказ с продуктами -

http://prntscr.com/mz1088, меняю кол- во продукта срабатывает правило - http://prntscr.com/mz10kr
Мне возвращает цену продукта null - http://prntscr.com/mz10vd
Почему так происходит? В манифест зависимости добавил.

Нигрескул Алексей,

Такое происходит из-за того, что в конфиг запроса для справочной колонки никоим образом не была добавлена нужная колонка. Можно в явном виде добавить таким кодом где-нибудь в ModuleConfig:

    var additionalProductColumns = ["Price", /*прочие колонки*/];
    var productQueryConfig = Terrasoft.sdk.LookupGridPage.getQueryConfig("Product");
    Terrasoft.sdk.LookupGridPage.updateQueryConfigColumns(null, {columns: additionalProductColumns}, productQueryConfig);

Либо можно для converFuction первичной или вторичной колонки добавить её в LookupGridPage.

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

Здравствуйте,хотел бы узнать возможно ли развернуть все компоненты локальной среды разработки на одном компьютере

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

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

Добрый день!
Да, установку сервера приложения, сервера БД и Redis можно провести на одном компьютере.

Инструкция по установке: https://academy.terrasoft.ru/documents/common/7-12/ustanovka-bpmonline

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

Благодарю за ответ,сделал всё по инструкции и в итоге после запуска сайта получаеться вот такая ошибка(

Прочитал статьи по этому поводу  на stackoverflow но решения которые там были описаны не исправили ситуацию,можете пожалуйста помочь понять мне как можно исправить эту проблему?
Использую Microsoft SQl Server Express 2012 (64-bit) (на Windows 10)

 

 

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

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

Спасибо большое, а имя и пароль пользователя пулла обязательно должен совпадать с именем и паролем пользователя базы данных?

Все на одной машине, просто в свойство пула поставьте Identity = LocalSystem и можно не давать отдельных прав пользователю от которого пул стартует

Григорий Чех,Спасибо,При этом не нужно будет ничего менять в настройках SQL сервера и Connection string (Так и оставить SQL аутентификацию,в место SSPI)?

В ConnectionStrings.config может быть настроен либо вход по на SQL-сервер прописанному там же логину и паролю, либо SSPI, когда к базе подключается пользователь Windows, под которым работает сайт.

Григорий Чех,Здравствуйте,к сожалению это не решило проблему,не подскажете в чём ещё могут быть причины?

 

В неправильной настройке доступа к базе. Впишите в ConnectionStrings.config верные логин и пароль к базе или разрешите доступ в базу пользователю Windows, если там указано SSPI.

lordlen,

Не нужно будет давать отдельные права для пула, в 

Connection string  нужно указать пользователя у которого есть полные права на используемую БД, так же нужно проверить что доступ не отрезается файрволами и тд.

 

Подробнее тут

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

Благодарю за помощь,уже всё работаетyes

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

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

Имеется следующая проблема: Возникают различные ошибки при установке пакетов скачанных с marketplace. Устанавливаю стандартным способом, через интерфейс установки приложений в BPM. Например, установка валится на проверке зависимостей устанавливаемого пакета от пакетов в БД, или при выполнении sql скриптов установки справочных значений,  и т.д..

Вопрос: каким образом можно разобрать(распаковать) скачанный с marketplace пакет(приложение) на составляющие,  что-то поправить в нем и собрать обратно для загрузки на свой стенд BPM? Может есть инструкция(на академии не нашел) ?

Спасибо!

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

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

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

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

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

Про marketplace понятно, что лучше обратиться к разработчику пакета. Но вопрос у меня в другом. Если например, стандартным способом выгрузить пакет из из системы, то он выгружается в архиве zip, а в нем архив gz, а в нем один файл. Вот вопрос - можно ли этот файл как-то открыть в VisualStudio например для редактирования?

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

Вот нашел, утилиту bpmcli

https://github.com/Advance-Technologies-Foundation/bpmcli  - может она умеет распаковывать пакеты?

Там упоминается команда:

Convert existing package to project

Convert package with name MyApp and MyIntegration, located in directory C:\Pkg

bpmcli convert -p C:\Pkg -n MyApp,MyIntegration

Convert all packages in directory C:\Pkg

bpmcli convert -p C:\Pkg

Её код — в файле PackageConverter.cs 

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

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

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

Здравствуйте! Столкнулся с такой проблемой, есть деталь она прикреплена к Активности, в активности и в данной детали есть поля ссылающиеся на контакт, необходимо при добавлении записи в детали передавать в поле контакт контакт из активности. Пробовал через обработку событий перед сохранением записи на детали  не помогло:

Terrasoft.sdk.Model.setModelEventHandler("WaRecordClientToEventInVisit", 
	Terrasoft.ModelEvents[Terrasoft.ModelEventKinds.Before].insert,
	function(config) {
		debugger;
		var record = config.scope.eventConfig.records[0];
		window.console.log(record);
		var contact = record.data.Activity.data.Contact;
		record.data.Contact = contact;
		window.console.log(record);
		Ext.callback(config.success, config.scope);
});

нужно передавать либо фильтровать контакты. Подскажите как можно реализовать данный кейс?
Заранее благодарен.

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

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

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

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

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

Добавляю деталь в мобильное приложение - 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.

 

 

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