Как в процессе реализовать сохранение и обновление страницы? 

----

Пример: 

написание процесса, который запускается по тригеру - изменение значения в поле карточки, после чего запускаются определенные действия процесса которые меняют другое поле. 

Необходимо что бы клиент видел изменения в другом поле без нажатия на кнопку "СОХРАНИТЬ" что приводит к сохранению данных и обновлению страницы.

Нравится

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

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

 

Спасибо за вопрос!

 

К сожалению, это невозможно реализовать базовыми средствами, однако, есть несколько обходных решений:

 

1) Приложение Reload data button for Creatio, которое позволяет быстро обновить данные на странице без перезагрузки:

https://marketplace.terrasoft.ua/app/reload-data-button-creatio

 

2) Реализовать JavaScript, которые будут выводить значение в поле:

https://academy.terrasoft.ua/documents/technic-sdk/7-15/ustanovka-dlya-…

 

С уважением,

Анастасия

Anastasiia Lazurenko,

Огромное спасибо за ответ. 

Жалко что Creatio нет такого в коробке

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

Добрый день. Было установлено приложение Invoice payment schedule for Creatio, в котором есть поле Плановая дата, которое автоматически заполняется в Исходном коде InvoicePaymentScheduleManager пакета InvoicePaymentsSchedule. Можно ли убрать эту логику? 

Нравится

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

Анастасия, добрый день!

Данное дополнение было разработано с этой логикой и пользовательскими средствами его убрать нельзя.

Вы можете переопределить логику собственными разработками или попробовать реализовать изменение даты с помощью бизнес-процесса.



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

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

Использую схему замещения для страницы BootstrapModulesV2. В ней js скрипт, который выполняется на всех страницах Creatio. Мне нужно в него передать email текущего пользователя системы.

Вот код, который использую для получения почты (не уверен, что он верный):

var contact = this.Terrasoft.SysValue.CURRENT_USER_CONTACT.value; 
var esq = this.Ext.create("Terrasoft.EntitySchemaQuery", { rootSchemaName: "ContactCommunication" });
esq.addColumn("Contact");
esq.filters.add("filter01",
this.Terrasoft.createColumnFilterWithParameter(this.Terrasoft.ComparisonType.EQUAL, "Contact", contact));
esq.getEntityCollection(function (result) {
	if (!result.success) {
		this.console.log("ERROR");
		return;
	}else
		if (esult.collection.collection.length > 0) {//если найденных записей больше 0 
			var item = result.collection.collection[0];
			var email = item.get("Email");//то берем первый элемент
			this.console.log(email);
		}
}, this);

Какие ошибки получаю:

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

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

В чем может быть дело?

Нравится

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

Полный работающий код

 

var contact = this.Terrasoft.SysValue.CURRENT_USER_CONTACT.value; 
var esq = this.Ext.create("Terrasoft.EntitySchemaQuery", { rootSchemaName: "Contact" }); 
esq.addColumn("Id");
esq.addColumn("Email");
esq.filters.add("filter01",
this.Terrasoft.createColumnFilterWithParameter(this.Terrasoft.ComparisonType.EQUAL, "Id", contact));
esq.getEntityCollection(function (result) {
	if (!result.success) {
		this.console.log("ERROR");
		return;
	}else
		if (result.collection.collection.length > 0) {
			var item = result.collection.collection.items[0];
			this.console.log(item.get("Email"));
		}
}, this);

 

Валерия, добрый день! 

Ошибка вызвана символом &gt, дело в том, что этот XML символ обозначает знак >. Вы можете просто заменить "&gt" на ">" и код будет работать.

Дима Вовченко,

Добрый день!

 

Заменили заменить "&gt" на ">", вылезает другая ошибка:

Я так понимаю, для item нет метода get. А как тогда можно получить почту пользователя?

Валерия Макарова, result.collection.collection.items[0].values.Email

Полный работающий код

 

var contact = this.Terrasoft.SysValue.CURRENT_USER_CONTACT.value; 
var esq = this.Ext.create("Terrasoft.EntitySchemaQuery", { rootSchemaName: "Contact" }); 
esq.addColumn("Id");
esq.addColumn("Email");
esq.filters.add("filter01",
this.Terrasoft.createColumnFilterWithParameter(this.Terrasoft.ComparisonType.EQUAL, "Id", contact));
esq.getEntityCollection(function (result) {
	if (!result.success) {
		this.console.log("ERROR");
		return;
	}else
		if (result.collection.collection.length > 0) {
			var item = result.collection.collection.items[0];
			this.console.log(item.get("Email"));
		}
}, this);

 

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

Мне нужно получить значение почты/username или еще какие-нибудь данные авторизованного пользователя и потом их передать в другую систему. Как это можно сделать с помощью кода?

Я знаю, что можно получить какое-то значение из системных настроек с помощью функции

this.Terrasoft.SysSettings.querySysSettingsItem(optName, function (val) {

            if(val) resolve(val);

            else reject();

        });

 

Можно ли подобным образом получить e-mail авторизованного пользователя?

Нравится

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

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

посмотрите в этом объекте свойства

 Terrasoft.SysValue

к примеру получим айди контрагента тек пользователя

 Terrasoft.SysValue.CURRENT_USER_ACCOUNT.value;

Dima Avdoshin,

Подскажите, как использовать справочник с почтами и фильтровать его?

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

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

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

Для понимания примера работы, в печатной форме нет ничего кроме названия записи раздела. Версия 7.16 элемента в бп "обработать файл" нет. 

Нравится

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

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

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

Всем привет!

Добавила в бизнес правилах такие условия редактирования поля: 

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

При наступании на активный рядок в консоли появляется ошибка "Product.UsrBasicPriceExist" была удалена или переименована. Но поле в Продуктах(UsrBasicPriceExist) точно существует. Кто-то пробовал делать что-то подобное в бизнесс правилах? Возможно лучше переписать условие кодом?

Нравится

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

Анастасия, здравствуйте.



Для исправления необходимо включить фичу LoadLookupColumnsInEditGrid, скрипт во вложении.



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

Для редактируемого реестра пока не реализована возможность настройки видимости/доступности/обязательности полей через бизнес правила. 

Но если перейти из редактируемого реестра на страницу редактирования самой записи(провалиться в запись), то там бизнес правила будут там корректно.



Возможность полноценной работы БП в редактируемых реестрах будет реализована в следующих релизах.

 

Скрипт включения фичи ниже.

 

DECLARE @featureCode varchar(max) = 'LoadLookupColumnsInEditGrid',

 @featureId uniqueidentifier;

set @featureId = (select top 1 Id from Feature where Code = @featureCode);

IF @featureId is null

BEGIN

 insert into Feature

  (Name, Code)

 values

  (@featureCode, @featureCode);

 set @featureId = (select top 1 Id from Feature where Code = @featureCode);

END;

delete from AdminUnitFeatureState where FeatureId = @featureId;

insert into AdminUnitFeatureState

 (SysAdminUnitId, FeatureState, FeatureId)

values

 ('A29A3BA5-4B0D-DE11-9A51-005056C00008', 1, @featureId),

 ('720B771C-E7A7-4F31-9CFB-52CD21C3739F', 1, @featureId);

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

Всем привет! Кто-нибудь делал горизонтальную прокрутку в продуктах(детали)? Саму прокрутку сделала через css(overflow-x: scroll; и width), но теперь возникла проблема если много продуктов, не видно полосу прокрутки для самых первых(так как полоса находится в самом низу).  Возможно есть идеи как зафиксировать полосу прокрутки что она всегда была видна внизу  или  что-то другое? Заранее спасибо!Изображение удалено.

Нравится

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

Добрый день

Анастасия, scroll будет отображаться внизу контейнера, который "скролит свой контент". В данном случае деталь расширяет свою высоту, поэтому горизонтальный скролл уходит вниз. Вам нужно зафиксировать высоту контейнера детали, чтобы сам контейнер не менял высоту при отображении новых продуктов. Также, через css

Добрый день

Анастасия, scroll будет отображаться внизу контейнера, который "скролит свой контент". В данном случае деталь расширяет свою высоту, поэтому горизонтальный скролл уходит вниз. Вам нужно зафиксировать высоту контейнера детали, чтобы сам контейнер не менял высоту при отображении новых продуктов. Также, через css

спасибо, работает!

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

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

Есть Бп в кором я выбираю коллекцию записей из Продукт в счете, для того чтоб потом их передать в 1с в формате json. Мне нужно выбрать поле "Code" из Продуктов чтоб потом записать  его отдельно. Выбрать я его смогла, проблема в том что я не понимаю в каком формате его нужно передать (коллекция записей?).  Буду благодарна за помощь.

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

Нравится

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

Добрый день, Анастасия.



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



Реализовать Вашу бизнес задачу пользовательскими средствами не получится. Для реализации необходимо использовать элемент скрипттаску и внутри кодом вычитывать значения из коллекций, соединять их по нужному признаку и передавать в веб-сервис как единую коллекцию. Либо же изменить веб-сервис таким образом, чтобы он принимал 2 разные коллекции. 



Подготовил несколько полезных ссылок с академии, в которых происходит работа с коллекциями внутри скрипттаски. Вы можете получать две такие коллекции, а потом с помощью C# создать свою коллекцию кастомных объектов(предварительно создав этот объект в конфигурации), где и объединять их. После записать данную коллекцию кастомных объектов в параметр процесса и с него брать значения для сервиса. Таким образом у Вас будет только один источник данных.

Либо же прямо в скрипттаске использовать запросы к БД, например, через EntitySchemaQuery и внутри вызывать веб-сервис с параметрами.



https://community.terrasoft.ru/questions/rabota-s-kollekciyami-v-bp

https://academy.terrasoft.ru/docs/7-16/developer/back-end_development/operatsii_s_dannymi_back_end/dostup_k_dannym_cherez_orm#reference-2158

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

Всем доброго дня! 

В БП есть параметр Коллекция записей с вложенными параметрами, который приходит по вебсервису. Вопрос в том как правильно прочитать эту коллекцию в задании-сценарии и достать нужные параметры?Изображение удалено.

Нравится

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

Попробуйте может через CompositeObject получить коллекцию

Get<ICompositeObjectList<ICompositeObject>>("Ваш_параметр.ResultCompositeObjectList")

Литвинко Павел пишет:

Попробуйте может через CompositeObject получить коллекцию

Get<ICompositeObjectList<ICompositeObject>>("Ваш_параметр.ResultCompositeObjectList")

Здравствуйте,  получилось немного не так:

 

var list = Get<ICompositeObjectList<ICompositeObject>>("Units");

foreach (ICompositeObject item in list) {

    

    if (item.TryGetValue<string>("Name", out string value)) {

        Set<string>("ProcessSchemaParameter1", value);

   }

}

Спасибо за помощь!)

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

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

Нравится

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

Добрый день.

 

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

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

 

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

Ivan Kuchma,

Такой вопрос, можно ли добавить уже созданную деталь просто на форму мини-карточки при помощи разработки? И обязательно ли создавать под это контейнер с полями tabs?

Глеб Макаров,

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

Детальнее работе с sandbox можете ознакомится в статье: https://academy.terrasoft.ua/docs/7-18/developer/front-end_development/…

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