Вопрос

Всем доброго времени суток!
Есть задача при изменении кол-ва продуктов или же изменении продукта в детали Продукт в заказе просчитывать 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.

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

Добрый день!
На главной странице портала по умолчанию есть два модуля в панели итогов, "Мои обращения" и "Популярные статьи".
Написал новый модуль по аналогии с Мои обращения - "Мои проблемы".
Он точно также как и обращения должен отображать номер и тему.
Добавил его на панель итогов. При открытии панели возникает ошибка в браузере, а на месте дашборда пусто:
Message GetSectionFilterModuleId is not defined in UsrProblemListModule (PortalMainPageModule_DashboardModuleModuledc874fc63a3cUsrProblemListModule) module 
 date: Thu Mar 14 2019 15:31:45 GMT+0300 (Москва, стандартное время)
 moduleId: PortalMainPageModule_DashboardModuleModuledc874fc63a3cUsrProblemListModule
 moduleName: UsrProblemListModule

 

Есть какая-то документация по разработке такого решения? Или ваши примеры кода. Спасибо.

 

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

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

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

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

Добрый день!

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

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

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

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

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

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

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. 

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

Здравсвуйте!  Возникла следующая ошибка:

Версия приложения 7.13.2. На сервере под пользоваетлем с правами администратора, права на папку с приложение розданы. В пуле приложения в  поле "Удостоверение" указал текщего пользователя (у которого есть права администратора). Не могу понять, в чем здесь причина, может кто-нибудь подскажет. СПасибо.

 

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

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

В SQL нужно дать пользователю права на БД: Безопасность -> Имена для входа. Я так решал это проблему у себя на среде.

Терещенко Алексей,

Спасибо за ответ, но у пользователя с помощью которого я подключаюсь к бд, в табличке "Членство в роли базы данных: BPM-IIC", стоят чекбоксы в db_owner и public, для нужной БД.

Такое сообщение говорит, что пользователь, под которым запущен пул или который явно прописан в ConnectionStrings.config, не может установить подключение с SQL-сервером. Скорее всего, дело даже не в пользователе, а доступ заблокирован на уровне настроек SQL-сервера или firewall.

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

Спасибо за ответ, да дело было именно в брандмауэре.

.

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

Здравствуйте.
Есть ли свойство в diff которое позволяет смещать Caption полей, к примеру текстовых? По умолчанию Caption стоит слева, нужно сделать сверху.

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

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

А что вам мешает в первой строке вывести свои заголовки а во второе вывести значение полей без заголовка (Чтото близкое к гриду)

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

ничего, интересовало есть ли такое свойство. А так обычный костыль.

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

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

Коллеги столкнулся с такой проблемой, не находит некоторые схемы - http://prntscr.com/mugxfw
Схемы добавлены в манифест рабочего места - http://prntscr.com/mugxx2
Подскажите что делаю не так?

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

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

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

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

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

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

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

О какой выгрузке вы спрашиваете?, уточните как вы ее запускаете с какого раздела.

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

 

Ринат вспомните какое расширение от партнеров для отчтетов в Эксель вы ставили и запросите у разработчика документаию 

Скорее всего вы поставили это дополнение https://marketplace.terrasoft.ru/app/excel-reports-builder-bpmonline

Тогда в шаблоне колонки попадают в том порядке в котором вы указали в дизайнере отчета и вы можете только задать/указать форматирование колонок

Если вам нужно чтото более сложное используйте построение excel файлов через библиотеки OpenXML (см пример) или аналогичные библиотеки

Григорий Чех, Спасибо большое, очень помогли.

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

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

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

 

attributes: {
	"isEngineeringDivision": {
		"dataValueType": Terrasoft.DataValueType.BOOLEAN,
		"type": Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN,
		"value": true
	},
	"isNotEngineeringDivision": {
		"dataValueType": Terrasoft.DataValueType.BOOLEAN,
		"type": Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN,
		"value": true
	}
}
methods: {
	init: function() {
		this.callParent(arguments);
		this.checkEnabledButton();
	},
 
	checkEnabledButton: function() {
		this.sandbox.publish("checkUserInAuPublish", null, ["checkUserInAuPublish"]);
		this.sandbox.subscribe("checkUserInAU", function(result) {
			this.set("isEngineeringDivision", result);
			this.set("isNotEngineeringDivision", result === true ? false : true);
		}, this, ["checkUserInAU"]);
	}
},

 

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

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

Попробуйте по-другому объявить эти детали в блоке details.

Вот аналогичный пример:

            "SamplesDetail": {
                "schemaName": "SampleInKitDetailV2",
                "entitySchemaName": "BTSample",
                "filter": {
                    "detailColumn": "BTKitIDLookup",
                    "masterColumn": "Id"
                },
                "defaultValues": {
                    "BTKitIDLookup": {
                        "masterColumn": "Id"
                    },
                    "BTFromSupply": false
                },
                "filterMethod": "samplesFilter",

               "profileKey": "PatientParametersDetail1"
            },

 

Метод фильтрации в данном случае выглядит так:

            samplesFilterMethod: function(kitId, isSupply) {
                var filterGroup = new Terrasoft.createFilterGroup();
                filterGroup.add("KitId", Terrasoft.createColumnFilterWithParameter(
                    Terrasoft.ComparisonType.EQUAL, "BTKitIDLookup", kitId));
                filterGroup.add("SamplesIsSupply", Terrasoft.createColumnFilterWithParameter(
                    Terrasoft.ComparisonType.EQUAL, "BTFromSupply", isSupply));
                return filterGroup;
            },

Обратите внимание, что в ситуации, если на разные табы добавляется одна и та же деталь, нужно добавить свойство "profileKey" и оно должно отличаться у одинаковых деталей.

Однако в такой ситуации служба поддержки рекомендует создавать разные детали.

К сожалению это не помогло
В данный момент детали зависят от разных схем, которые наследуются от одной общей ActivityDetailV2
Добавлены как две разные
Результат один и тот же

 

Попробуйте отладиться.

Уточните, возникают ли какие-то ошибки в консоли?

Также сделайте скриншот, чтобы было понятно, что отображается в первом табе и не отображается во втором.

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

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

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