Всем доброго времени суток. Столкнулся со следующей проблемой:

не всегда обновляется поля в детали продукт в заказе - http://prntscr.com/o0d083

заношу туда данные следующим образом:

setDiscount: function(config){
		var orderProductRecord = Ext.clone(config.model);
		var totalAmount;
		var discountPrice;
		var totalDiscount;
		if (config.discountType ==="personal") {
			totalAmount = config.model.data.TotalAmount;
			discountPrice = this.calculateAmountWithDiscount(totalAmount, config.discount);
			totalDiscount = totalAmount-discountPrice;
			orderProductRecord.set("WaDiscountContact", config.discount, true);
			orderProductRecord.set("WaTotalDiscount", totalDiscount, true);
 
			orderProductRecord.save({
				success: function(){
					Terrasoft.Mask.hide({force: true});
					Terrasoft.PageNavigator.refreshLastPage(); 
				},
				failure: function(exception) {
					Terrasoft.Mask.hide({force: true});
					Terrasoft.MessageBox.showMessage(Ext.String.format(Terrasoft.LS.WaErrorExecutionMessage, exception));
				},
				queryConfig: Ext.create("Terrasoft.QueryConfig", {
					modelName: orderProductRecord.self.modelName,
					columns: ["WaDiscountContact", "WaTotalDiscount"]
				})
			}, this);
		}
	},

Не всегда отрабатывает Terrasoft.PageNavigator.refreshLastPage(); хотя в бд записываются данные.

Нравится

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

Попробовал, Terrasoft.PageNavigator.refreshLastPage() отрабатывает нормально, поле со значением появляется. Возможно, срабатывание не всегда связано с моментом, когда вызывают setDiscount: вдруг карточка в этот момент ещё не загрузилась или что-то подобное.

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

Как скомпилировать код cs, который расположен в папке Files?

Нравится

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

Создайте в Visual Studio проект [Class Library (.NET Framework)]  подключите нужные библиотеки Terrasoft.*.dll и ваши файлы из папти Files, скомпилируйте ваш проект и полученную dll загрузите во внешние сборки пакета.

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

Создайте в Visual Studio проект [Class Library (.NET Framework)]  подключите нужные библиотеки Terrasoft.*.dll и ваши файлы из папти Files, скомпилируйте ваш проект и полученную dll загрузите во внешние сборки пакета.

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

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

Получаю записи о счетах по ссылке:



https:///0/ServiceModel/EntityDataService.svc/InvoiceCollection



В ответ приходит xml содержащий ссылки на xml с различной информацией. Меня интересует информация о продуктах счета. Для этого перехожу по ссылке:



https:///0/ServiceModel/EntityDataService.svc/InvoiceCollection(guid'00000000-0000-0000-0000-000000000000')/InvoiceProductCollectionByInvoice



Но в ответ получаю xml с ошибкой: Method 'SelectMany' not supported



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



Так же интересует как получить информацию о кол-ве продуктов в счете.

Нравится

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

Добрый день!

Про фильтрацию:

https://<адрес>/0/ServiceModel/EntityDataService.svc/InvoiceProductCollection?$filter=Invoice/Id eq guid'7e78ff39-ded1-416d-995a-71cef69387e8'

 

Добрый день!

Про фильтрацию:

https://<адрес>/0/ServiceModel/EntityDataService.svc/InvoiceProductCollection?$filter=Invoice/Id eq guid'7e78ff39-ded1-416d-995a-71cef69387e8'

 

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

Большое спасибо, вроде бы работает!)

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

Добрый день!

Подскажите, пожалуйста, как настроить список полей для активной записи реестра.

 

Нравится

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

Вы можете настроить нужный список полей для всех записей реестра.

Посмотрите статью на Академии по настройке полей реестра.

Базовые возможности системы не позволяются настроить специфический список полей только для активной записи реестра.

Как создать список полей для всех записей я понял.

Я бы хотел сделать следующее:

после выбора какой-либо записи в реестре она становится активной и количество полей отображается в большем количестве.

Что нужно для этого сделать? Подскажите, хотя бы направление, куда нужно "копать".

Или может быть уже есть готовый пример, который можно посмотреть и сделать по аналогии.

Гордиенко Виталий Дмитриевич,

Базовые стили шрифтов и часть стилей размеров шрифтов хранятся в файле в конфигурации BaseFontsCSS. Остальные стили расположены в файле all-combined.css в папке самого приложения

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

По поводу выделения записи отдельным цветом - посмотрите, как это реализовать в приложении Records color highlighting for bpm'online на marketplace.

 

Видимо я некорректно задаю вопрос:

В общем списке у каждой записи в плиточном виде отображается 2 поля. После выбора любой записи (клика в нее) она становится активной, выделенной синим цветом. И вот после этого клика должно отобразиться не 2 поля, а, например, 4. Это нужно для того, чтобы посмотреть дополнительную информацию, не нажимая кнопку "Открыть"

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

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

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

 

 

 

 

 

 

 

 

 

 

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

Нравится

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

Удаление пункта меню уже обсуждалось в этом посте.

Добавление можно реализовать по аналогии с другими уже добавленными пунктами - как реализовано смотрите в модуле LeftPanelTopMenuModule.

Возможно, также будет полезен этот пост.

Выполнил SQL-запрос:

USE [SE_M_SEENU_2501376_0510]
GO
 
DELETE FROM [dbo].[ApplicationMainMenu]
     
GO

Удалил все пункты.

Хотелось бы теперь понимать, как добавлять новые.



 

Удаление пункта меню уже обсуждалось в этом посте.

Добавление можно реализовать по аналогии с другими уже добавленными пунктами - как реализовано смотрите в модуле LeftPanelTopMenuModule.

Возможно, также будет полезен этот пост.

Гордиенко Виталий Дмитриевич,

Рада была помочь!

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

Как переопределить метод Печати в разделах? 

 

Нравится

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

Добрый день!

Нужно переопределить метод

generatePrintForm: function(printForm)

в вашем разделе. Само описание метода лежит в PrintReportUtilities

Добрый день!

Нужно переопределить метод

generatePrintForm: function(printForm)

в вашем разделе. Само описание метода лежит в PrintReportUtilities

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

Можно пример переопределения метода печти?

 

См. тут. Но для 7.13 и выше такое не подойдёт, поскольку переопределение модулей запретили.

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

У меня развернуто именно 7.13 . Получается запрещено? Нельзя хотя бы видимость убрать в зависимости от значения какого ниб поля ? Было бы неплохо если бы разработчики дали возможность такие вещи сделать с помощью бизнес правил 

Можете завести идею прав на такую операцию. Стандартно такой не вижу.

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

Доброго времени суток, возникла задача по интеграции с внеш.приложением . В общем у меня есть раздел, у раздела есть кейсы на какой то из стадий нужно отправить данные веб-сервисом.Создал веб сервис добавил его в под-процесс в соответствующем шагу. Насколько эти шаги правильные с точки зрении задачи ? И главный вопрос как стороннее приложение должно ответить чтобы у меня поменялась стадия кейса? Это запуск БП извне или есть более адекватное решение?

Нравится

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

Да, элемент «Веб-сервис» в БП для этого и создавался.

В обратном направлнии можно извне либо запустить БП при помощи ProcessEngineService, либо менять значение поля по OData. В обоих случаях сначала нужно залогиниться, используя AuthService и получить CSRF-токен.

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

Добрый день!

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

При инициализации метод-обработчик вызывается, а вот при измении полей "Amount" или "Budget" - нет.

define("OpportunityPageV2", [], function() {
	return {
		entitySchemaName: "Opportunity",
		attributes: {
			"UsrBudgetRemains": {
				dataValueType: Terrasoft.DataValueType.FLOAT,
				dependencies: [
					{
					colums: ["Amount", "Budget"],
					methodName: "calculateBudgetRemains"
					}
					]
			}
		},
		modules: /**SCHEMA_MODULES*/{}/**SCHEMA_MODULES*/,
		details: /**SCHEMA_DETAILS*/{}/**SCHEMA_DETAILS*/,
		businessRules: /**SCHEMA_BUSINESS_RULES*/{}/**SCHEMA_BUSINESS_RULES*/,
		methods: {
			onEntityInitialized: function(){
				this.callParent(arguments);
				this.calculateBudgetRemains();
			},
			calculateBudgetRemains: function() {
				window.console.log("Вызвано");
				var amount = this.get("Amount");
				if(!amount){
					amount = 0.00;
				}
				var budget = this.get("Budget");
				if(!budget) {
					this.budget = 0.00;
				}
				var result = budget - amount;
				this.set("UsrBudgetRemains", result);
			},
			validateAmount: function() {
				var invalidMessage = "";
				if(this.get("Budget") < this.get("Amount")) {
					invalidMessage = this.get("Resources.Strings.BudgetLessDueAmount");
				}
				return {
					invalidMessage: invalidMessage
				};
			},
			setValidationConfig: function() {
				this.callParent(arguments);
				this.addColumnValidator("Amount", this.validateAmount);
				this.addColumnValidator("Budget", this.validateAmount);
			}
		},
		dataModels: /**SCHEMA_DATA_MODELS*/{}/**SCHEMA_DATA_MODELS*/,
		diff: /**SCHEMA_DIFF*/[
			{
				"operation": "insert",
				"name": "UsrBudgetRemains",
				"values": {
					"layout": {
						"colSpan": 12,
						"rowSpan": 1,
						"column": 0,
						"row": 8,
						"layoutName": "OpportunityPageGeneralBlock"
					},
					"bindTo": "UsrBudgetRemains",
					"enabled": false
				},
				"parentName": "OpportunityPageGeneralBlock",
				"propertyName": "items",
				"index": 12
			},
			{
				"operation": "insert",
				"name": "Stage72a7f6b5-3408-4a96-be11-9928b1302433",
				"values": {
					"layout": {
						"colSpan": 12,
						"rowSpan": 1,
						"column": 12,
						"row": 8,
						"layoutName": "OpportunityPageGeneralBlock"
					},
					"bindTo": "Stage"
				},
				"parentName": "OpportunityPageGeneralBlock",
				"propertyName": "items",
				"index": 13
			}
		]/**SCHEMA_DIFF*/
	};
});

 

Нравится

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

Добрый день!

У вас ошибка в слове columns (пропущена буква):

colums: ["Amount", "Budget"],

 

Проверьте в консоли браузера нет ли ошибок при изменении одного из полей Amount или Budget (чтобы открыть консоль нужно в браузере нажать F12).

P.S. Не пишите

this.budget

напишите buget без this.

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

Изменил 

this.budget

на 

budget

Проблема осталась. Ошибок в консоле нет.

Добрый день!

У вас ошибка в слове columns (пропущена буква):

colums: ["Amount", "Budget"],

 

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

Спасибо!!! 

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

Доброго дня, коллеги!

Стоит следующая задача - необходимо считать и отправить данные из объекта на удаленный веб-сервис. Удаленный веб-сервис принимает данные в формате XML. Подскажите пожалуйста, каким образом лучше всего это реализовать - используя бизнес-процессы, DataService или каким-либо другим способом? Заранее благодарю за развернутые ответы. 

Нравится

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

Добрый день!

Бизнес процесс, в котором скрипт С# с использованием HttpWebRequest.

Пример:

var request = (HttpWebRequest)WebRequest.Create(serviceAddress);
request.Method = "POST";
byte[] byteArray = Encoding.UTF8.GetBytes(postData);
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = byteArray.Length;
request.Timeout = timeout * 1000;
using (var dataStream = request.GetRequestStream())
{
    dataStream.Write(byteArray, 0, byteArray.Length);
    dataStream.Close();
}
var resp = (HttpWebResponse)request.GetResponse();

Где postData - строка XML

Добрый день!

Бизнес процесс, в котором скрипт С# с использованием HttpWebRequest.

Пример:

var request = (HttpWebRequest)WebRequest.Create(serviceAddress);
request.Method = "POST";
byte[] byteArray = Encoding.UTF8.GetBytes(postData);
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = byteArray.Length;
request.Timeout = timeout * 1000;
using (var dataStream = request.GetRequestStream())
{
    dataStream.Write(byteArray, 0, byteArray.Length);
    dataStream.Close();
}
var resp = (HttpWebResponse)request.GetResponse();

Где postData - строка XML

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

Добрый субботний вечер!))

Есть у нас пакет, который сделан на Enterprise. Хотим его поставить на commerce.

В зависимости пакета  убираем SalesEnterprise пакет.

Добавляем зависимость от базовых пакетов Base, NUI, UIv2.

Но при удалении SalesEnterprise ошибка...  скрины

Что делаем ни так? 

Заранее спасибо!

Нравится

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

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

На новом сайте попробуйте выполнить такой запрос:

delete from SysPackageDependency 

where SysPackageId = (select Id from SysPackage where Name = 'qrtHMS')

    and DependOnPackageId = (select Id from SysPackage where Name = 'SalesEnterpriseSoftkey_ENU')

А потом зайти в конфигурацию и перекомпилировать все схемы.

Также на существующем сайте (там, где Вы пытаетесь через интерфейс убрать связь с пакетом) попробуйте выполнить это действие ещё раз, а потом после свала посмотреть логи приложения bpm'online.

Ошибка возникает именно при удалении?

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

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

Алла, .. мы их как раз и не использовали. Вообще просто свои разделы создавали.

 

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

а если вдруг что то захватили.. то как определить, что те объекты именно из пакета  SalesEnterprise?

Как можно узнать есть ли эти ссылки на пакет SalesEnterprise и если есть, то на какие объекты?

 

Елена К,

Определить схемы, в которых есть зависимость можно, выполнив такой запрос:

select SS.*
from SysSchema SS
   join SysSchema Parent on Parent.Id = SS.ParentId
where SS.SysPackageId = (select Id from SysPackage where Name = '&lt;название Вашего пакета&gt;')
    and Parent.SysPackageId = (select Id from SysPackage where Name = '&lt;название пакета, на который могут ссылаться схемы&gt;')

 

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

Алла, запрос 

select SS.*

from SysSchema SS

   join SysSchema Parent on Parent.Id = SS.ParentId

where SS.SysPackageId = (select Id from SysPackage where Name = 'qrtHMS')

    and Parent.SysPackageId = (select Id from SysPackage where Name = 'SalesEnterpriseSoftkey_ENU')

Запрос вернул 0 записей. Т.е. в нашем пакете нет ни одной схемы которая ссылается на SalesEnterpriseSoftkey_ENU.

Что думаете еще может быть?)

 

 

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

На новом сайте попробуйте выполнить такой запрос:

delete from SysPackageDependency 

where SysPackageId = (select Id from SysPackage where Name = 'qrtHMS')

    and DependOnPackageId = (select Id from SysPackage where Name = 'SalesEnterpriseSoftkey_ENU')

А потом зайти в конфигурацию и перекомпилировать все схемы.

Также на существующем сайте (там, где Вы пытаетесь через интерфейс убрать связь с пакетом) попробуйте выполнить это действие ещё раз, а потом после свала посмотреть логи приложения bpm'online.

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