Возникла проблемы с передачей параметра из бизнес процесса в шаблон email. Параметр сохраняется в процессе как текст https://prnt.sc/13ikimi. Во время выполнения процесса параметр заполняется текстом и далее используется в письме https://prnt.sc/13ikpvd. Но при отправке письма параметр не подтянулся https://prnt.sc/13ikxuq. Что я делаю не так?)

Нравится

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

А у вас Service? Из опыта и обсуждения так может работать только там

Добрый день.

 

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

 

Макросы срабатывают только в случае использования уже преднастроенных шаблонов в элементе [Отправить email].

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

Собственно как работать с типом parameters?

Со стрингами работаю так: 

this.get("Resources.Strings.SomeString");

this.set("Resources.Strings.SomeString",''newValue'');

Нравится

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

Сергей, уточните, что Вы хотите делать, о каких параметрах речь?

Параметры есть в БП, а на страницах есть атрибуты.

 

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

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

Стоит задача создавать новый заказ по нажатию кнопки из другого раздела.

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

loadOrderPage: function(contact) {
				debugger;
				var requestUrl = "CardModuleV2/OrderPageV2/edit/" + Terrasoft.generateGUID();
				var params = this.sandbox.publish("GetHistoryState");
					var parameters = {
						viewModelConfig: {
							Contact: contact
						}
					};
					var stateObj = {
						operation: enums.CardStateV2.ADD,
						parameters: parameters
					};
 
					this.sandbox.publish("PushHistoryState", {
						hash: requestUrl,
						stateObj: stateObj
					});
			}

Но параметры не передаются. и не заполняются поля. Подскажите как реализовать данный кейс?

Благодарю!

Нравится

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

Алексей,

Если нужно создать сущность из карточки другой сущности, почему нельзя просто сделать esq-запрос в БД или дернуть БП/Сервис, который это сделает на бэке? Наверное, у Вас есть какие-то особые условия созданий этой сущности? 

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

Коллеги благодарю за помощь. Задача была без использования БП. Реализовал следующим образом. 

loadOrderPage: function(contact) {
				var openCardConfig = {
					hash: this.sandbox.id,
					id: "Id",
					operation: enums.CardStateV2.ADD,
					schemaName:"OrderPageV2",
					moduleId: this.sandbox.id + "_AddOrderSuccessAction",
					defaultValues: [
						{ name: "Contact", value: contact.value },
						{ name: "uphType", value: "1AC347DB-DC55-4BA9-AC59-EF23041E891B" }, //"B2B"
						{ name: "WaOrderType", value: "79BF282E-87CC-42CD-8A2A-E1147ECC4CB8" }, //"Физю лицо"
						{ name: "Owner", value: Terrasoft.core.enums.SysValue.CURRENT_USER_CONTACT.value },
						{ name: "CreatedOn", value: new Date() }
					]
				};
				this.sandbox.publish("OpenCard", openCardConfig, [this.sandbox.id]);
			}

 

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

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

Столкнулся с проблемой передачи параметров из клиентского кода в БП

Вот код вызывающий мой БП и туда передаю 2 параметра, названия совпадают:

 

runProcessFormingAudience: function () {
				debugger;
				var folderFilters = this.get("SectionFiltersValue").collection.get("FolderFilters");
				var customFilters = this.get("SectionFiltersValue").collection.get("CustomFilters");
				if(folderFilters || (customFilters && customFilters.null != undefined)){
					var filters = (folderFilters != undefined && folderFilters.length > 0) ? folderFilters[0].filter : customFilters.null.filter;
				}
				var args = {
					sysProcessName: "AbCreatingSmsAudienceProcess",
					parameters: {
						EntitySchemaName: this.entitySchemaName,
						Filters: filters
					}
				};
				ProcessModuleUtilities.executeProcess(args);
			}

Принимаемые параметры - http://prntscr.com/j8wmeg

Далее смотрю что передалось в эти параметры и логирую:

 

var userConnection = Get<UserConnection>("UserConnection");
var log = new LogService(userConnection);
var filters = Get<string>("Filters");
var entitySchemaName = Get<string>("EntitySchemaName");
var smsServiceId = Get<Guid>("SmsServiceId");
var smsName = Get<string>("SmsName");
 
log.RecInfo(string.Format("smsName = {0}", smsName));
log.RecInfo(string.Format("smsServiceId = {0}", smsServiceId));
log.RecInfo(string.Format("entitySchemaName = {0}", entitySchemaName));
log.RecInfo(string.Format("filters = {0}", filters));
 
return true;

И в итоге данные не занеслись - http://prntscr.com/j8wnau

Подскажите из-за чего может вести себя так система? Вроде делаю все правильно.

Нравится

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

немного не понял смысла

customFilters.null

ну да и ладно...

Код актулен, если вы планируете поместить filters в string(по коду var filters = Get<string>("Filters"), я понимаю в этом план).

Варфоломеев Данила,

Благодарю, уже разобрался))

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

Пытаюсь выполнить запрос:

var ActQuery = Services.GetNewItemByUSI('sq_ActInfo');
ActQuery.Parameters.ItemsByName('DocumentID').Value = DocumentID;

Выпадает ошибка:"Parameters.ItemsByName(...)" - есть null или не является объектом

В самом запросе параметр указан верно, в том числе и его тип. DocumentID имеет корректное значение.
Пробовал создавать сервис заново, переименовывать, переименовывать параметр, использовать GetSingleItemByCode,SetParameterValue. Все остается по-прежнему.
Подскажите в чем может заключаться проблема.

Нравится

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

Может в слове DocumentID есть русские символы? Или в скрипт название параметра копировали через Clipboard?
Если написать debugger, то в нем - чему равен ActQuery.Parameters и если у него в Items-ах данные?

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