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

 

Такой вопрос появился, у меня есть бизнес-процесс в котором я собираю различные данные из разных справочников, я через задание-сценарий пишу код с формированием таблицы, как мне правильно синтаксически обращаться к этим данным? Искал на Академии, не нашел точного ответа.

 

Заранее спасибо за помощь!

Нравится

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

Добрый день! Интересует процесс добавления детали Средства связи в любой выбранный раздел  - необходим именно процесс добавления в раздел с помощью кода (не используя мастер разделов и тд). 

Нравится

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

Посмотрите как реализованы средства связи в контактах и контрагентах.

 

Есть объект BaseCommunication, от которого наследуются AccountCommunication и ContactCommunication, добавляющие соответствующие колонки связи. Для схем деталей аналогично: BaseCommunicationDetail с базовой логикой формирования данных и отрисовки, от которого наследуются AccountCommunicationDetail и ContactCommunicationDetail. Ну и потом эти детали размещаются на своих страницах редактирования.

 

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

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

В новой версии (7.18) в столбчатых диаграммах с накоплением отображаются нулевые значения. Причем сами секторы графика не рисуются, а вот нули в виде подписей есть. Это баг? Можно как-то исправить? Нужной настройки для этого не нашли.Изображение удалено.

Нравится

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

Неужели нет комментариев по данному вопросу :(

Добрый день, Вадим!

Спасибо за детальное описание данного кейса!

 

На основании данной информации, в департаменте разработки зарегистрирована соответствующая задача:

- На графике с признаком Stacked не отображать пустые серии.

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

Необходимо, чтобы пустая серия не отображалась.

 

Исправления запланированы в версии 7.18.2.

Спасибо за то, что помогаете делать наш продукт лучше!

Жмурко Сергей,

Ждем с нетерпением! Спасибо за ответ

Жмурко Сергей,

Судя по всему, не исправили в 7.18.2?

Добрый день,

Мы связались с разработчиками и они нам сообщили, что сроки сдвинулись.

На данный момент нам не известны сроки решения данной проблемы.

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

У меня есть форма скрин которой на скрине, проблема в том, что заголовок(первая строка) не растягивается по ширине контента и вообще не растягивается , что бы я не делал, не совсем понимаю, как правильно сделать 

diff: [
			{
				"operation": "insert",
				"name": "MyContainer",
				"propertyName": "items",
				"values": {
					"itemType": Terrasoft.ViewItemType.CONTAINER,
					"items": []
				}
			},
			{
				"operation": "insert",
				"parentName": "MyContainer",
				"propertyName": "items",
				"name": "MyGridContainer",
				"values": {
					"itemType": Terrasoft.ViewItemType.GRID_LAYOUT,
					"items": []
				}
			},
			{
				"operation": "insert",
				"parentName": "MyGridContainer",
				"propertyName": "items",
				"name": "TestText2",
				"values": {
					"bindTo": "TestText2",
					"caption": "Выберите причину дисквалификации лида",
					"layout": {"column": 0, "row": 0, "colSpan": 15}
				}
			},
			{
				"operation": "insert",
				"parentName": "MyGridContainer",
				"propertyName": "items",
				"name": "TestText1",
				"values": {
					"bindTo": "TestText1",
					"caption": "Test text1",
					"layout": {"column": 0, "row": 1, "colSpan":15}
				}
			},
			{
				"operation": "insert",
				"parentName": "MyGridContainer",
				"propertyName": "items",
				"name": "TestText",
				"values": {
					"bindTo": "TestText",
					"caption": "Test text",
					"layout": {"column": 0, "row": 2, "colSpan": 15}
				}
			},
			{
				"operation": "insert",
				"parentName": "MyGridContainer",
				"name": "CloseButton",
				"propertyName": "items",
				"values": {
					"itemType": Terrasoft.ViewItemType.BUTTON,
					"style": Terrasoft.controls.ButtonEnums.style.BLUE,
					"click": {bindTo: "onCloseButtonClick"},
					"markerValue": "CloseButton",
					"caption": "Подтвердить",
					"layout": { "column": 5, "row": 3, "colSpan": 10 }
				}
			}
		]

 

Прикрепленные файлы

Нравится

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

Добрый день.

Вы можете самостоятельно прописать стили(CSS) для этих элементов и расположить их на странице, как Вам удобно.

Для этого воспользуйтесь статьей.

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

Добрый день!

на данный момент используем интеграцию Creatio + Power automate + Teams bot.

 

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

Нравится

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

Добрый день!



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

В настоящее время это можно реализовать только разработкой с многими нюансами.



Со своей стороны мы зарегистрировали пожелание по развитию продукта в будущих версиях.

Спасибо за идею!

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

Коллеги, добрый день. Подскажите как настроить систему, чтобы журналы сохранялись в отдельную БД?

Нравится

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

Павел, добрый день!

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

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

Открываю справочник через LookupUtilities.Open.

В конфиге выставлен параметр multySelect: true

 

Есть ли параметр, позволяющий выставить галочки на всех элементах справочника при открытии?

Нравится

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

Добрый день, Оксана.

В меню "Действия" всплывающего окна есть пункт "Выбрать все", вы можете использовать его логику. Рекомендую посмотреть реализацию метода "selectAllRecords" из схемы "LookupPageViewModelGenerator", который и срабатывает при выборе всех.

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

Коллеги, прошу Вашей помощи!

Есть задача: При отработки определенного типа активности и переводе её в состояние "Завершена", должна происходить проверка, добавлен ли в файлы и ссылки этой активности хотя бы один документ. Если добавлен, то сохранять активность, если нет - то выводить предупреждающее сообщение. 

 

Я попробовал в конфигурации страницы активности ActivityPageV2 переопределить метод save() и прописать там проверку на вложенный документ таким образом: 

 

save: function() {

    var activityStatus = (this.get("Status").value).toString();

    

    var activityTitle = (this.get("Title")).toString();

    

    if (activityTitle === "Активность для Управления оценки рисков")

    {

        if (activityStatus === "4bdbb88f-58e6-df11-971b-001d60e938c6") {

            

            var activityId = this.get("Id");    

            

            var checkInfo = false;

            

            var esq = Ext.create("Terrasoft.EntitySchemaQuery", {

                rootSchemaName: "ActivityFile"

            });

            

            esq.addColumn("Name","actName");

            

            var esqFirstFilter = esq.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL, "Activity", activityId);

            

            esq.filters.add("esqFirstFilter", esqFirstFilter);

            

            esq.getEntityCollection(function(result) {

                if (result.success) {

                    

                    checkInfo = true;

                    

                }

            }, this);

            

            if (checkInfo) {

                this.callParent(arguments); //если документ есть сохраняем страницу

            } else {

                this.showInformationDialog(Ошибка. Не добавлен документ в файлы и ссылки!); //если документа нет - выводим сообщение

            }

            

        }

        else {

            this.callParent(arguments);

        }

        

    }

    else

    {

        this.callParent(arguments);

    }                                   

}

 

После долгих проверок выяснилось, что  параметр checkInfo не передает измененное значение с false на true внутри esq.getEntityCollection(function(result) {},this) и остается в значении false, хотя проверка в ActivityFile отрабатывает корректно. 

Вопрос: как передать измененное значение checkInfo из esq.getEntityCollection обратно на страницу, чтобы далее можно было прописывать различные условия проверки? Или может я вообще не правильно осуществляю проверку вложенного документа и есть другие способы?

Нравится

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

Вот один из примеров, как это можно реализовать:



 

 define("ActivityPageV2", [],
	function() {
		return {
			entitySchemaName: "Activity",
			attributes:{
				"isSecond": {
					"dataValueType": Terrasoft.DataValueType.BOOLEAN,
					"type": Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN,
					"value": false
				}
			},
			methods: { 
				save: function() {
 
					if(this.get("isSecond")){
						this.callParent(arguments);
						this.set("isSecond", false);
					}else{
						var activityStatus = (this.get("Status").value).toString();
 
						var activityTitle = (this.get("Title")).toString();
 
						if (activityTitle === "Активность для Управления оценки рисков")
						{
							if (activityStatus === "4bdbb88f-58e6-df11-971b-001d60e938c6") {
 
								var activityId = this.get("Id");    
 
								var checkInfo = false;
 
								var esq = Ext.create("Terrasoft.EntitySchemaQuery", {
									rootSchemaName: "ActivityFile"
								});
 
								esq.addColumn("Name","actName");
 
								var esqFirstFilter = esq.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL, "Activity", activityId);
 
								esq.filters.add("esqFirstFilter", esqFirstFilter);
 
								esq.getEntityCollection(function(result) {
 
									if (result.success && result.collection.collection.length > 0) {
										this.set("isSecond", true);
										this.save();//если документ есть сохраняем страницу
									} else {
										this.showInformationDialog("Ошибка. Не добавлен документ в файлы и ссылки!"); //если документа нет - выводим сообщение
									}
 
								}, this);
 
							}
							else {
								this.callParent(arguments);
							}
 
						}
						else
						{
							this.callParent(arguments);
						}  
					}
				}, 
				test: function(){
 
				}
			},
			diff: /**SCHEMA_DIFF*/[
			]/**SCHEMA_DIFF*/
		};
	});

 

Вот один из примеров, как это можно реализовать:



 

 define("ActivityPageV2", [],
	function() {
		return {
			entitySchemaName: "Activity",
			attributes:{
				"isSecond": {
					"dataValueType": Terrasoft.DataValueType.BOOLEAN,
					"type": Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN,
					"value": false
				}
			},
			methods: { 
				save: function() {
 
					if(this.get("isSecond")){
						this.callParent(arguments);
						this.set("isSecond", false);
					}else{
						var activityStatus = (this.get("Status").value).toString();
 
						var activityTitle = (this.get("Title")).toString();
 
						if (activityTitle === "Активность для Управления оценки рисков")
						{
							if (activityStatus === "4bdbb88f-58e6-df11-971b-001d60e938c6") {
 
								var activityId = this.get("Id");    
 
								var checkInfo = false;
 
								var esq = Ext.create("Terrasoft.EntitySchemaQuery", {
									rootSchemaName: "ActivityFile"
								});
 
								esq.addColumn("Name","actName");
 
								var esqFirstFilter = esq.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL, "Activity", activityId);
 
								esq.filters.add("esqFirstFilter", esqFirstFilter);
 
								esq.getEntityCollection(function(result) {
 
									if (result.success && result.collection.collection.length > 0) {
										this.set("isSecond", true);
										this.save();//если документ есть сохраняем страницу
									} else {
										this.showInformationDialog("Ошибка. Не добавлен документ в файлы и ссылки!"); //если документа нет - выводим сообщение
									}
 
								}, this);
 
							}
							else {
								this.callParent(arguments);
							}
 
						}
						else
						{
							this.callParent(arguments);
						}  
					}
				}, 
				test: function(){
 
				}
			},
			diff: /**SCHEMA_DIFF*/[
			]/**SCHEMA_DIFF*/
		};
	});

 

Mykhailo Storozhuk,

Супер! Спасибо большое!!! А то 3 дня мучался, пытаясь найти решение)) Тоже через атрибут пробовал, но не додумался перевызывать метод save() c проверкой этого атрибута. Благодарю!

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

По инструкции https://academy.terrasoft.ru/docs/user/ustanovka_i_administrirovanie/ra…

настроили ExchangeListenerService.

На странице диагностики работы все пунктики зеленые. Т.е. все настройки выполнены.

 

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

 

При добавлении возникает ошибка "Ошибка при добавлении настроек. Обратитесь к администратору системы".

 

В консоли при этом появляется ошибка

ListenerServiceFailJob error System.Security.Cryptography.CryptographicException: Заполнение неверно и не может быть удалено.\r\n   в System.Security.Cryptography.CapiSymmetricAlgorithm.DepadBlock(Byte[] block, Int32 offset, Int32 count)\r\n   в System.Security.Cryptography.CapiSymmetricAlgorithm.TransformFinalBlock(Byte[] inputBuffer, Int32 inputOffset, Int32 inputCount)\r\n   в System.Security.Cryptography.CryptoStream.FlushFinalBlock()\r\n   в System.Security.Cryptography.CryptoStream.Dispose(Boolean disposing)\r\n   в System.IO.Stream.Close()\r\n   в Terrasoft.Common.PasswordCryptoProvider.DecryptValue(Object value, ICryptoTransform decryptor)\r\n   в Terrasoft.Core.SecureTextDataValueType.GetValueForLoad(UserConnection userConnection, Object value)\r\n   в Terrasoft.Core.Entities.EntityColumnValue.LoadValue(Object value)\r\n   в Terrasoft.Core.Entities.EntityColumnValueCollection.ForceLoadColumnValue(String name, Object value)\r\n   в Terrasoft.Core.Entities.Entity.LoadShallow(IDataReader dataReader, Dictionary`2 columnMap)\r\n   в Terrasoft.Core.Entities.EntityCollection.LoadShallow(IDataReader dataReader, Dictionary`2 columnMap, Boolean needClear)\r\n   в Terrasoft.Core.Entities.EntitySchemaQuery.GetEntitySchemaEntityCollection(UserConnection userConnection, IDataReader dataReader)\r\n   в Terrasoft.Core.Entities.EntitySchemaQuery.d__343.MoveNext()\r\n--- Конец трассировка стека из предыдущего расположения, где возникло исключение ---\r\n   в System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n   в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   в Terrasoft.Core.Entities.EntitySchemaQuery.GetEntityCollection(UserConnection userConnection)\r\n   в IntegrationV2.MailboxDomain.Repository.MailboxRepository.GetAll(Boolean userMailboxesOnly, Boolean useForSynchronization)\r\n   в IntegrationV2.MailboxDomain.MailboxService.GetAllSynchronizableMailboxes()\r\n   в Terrasoft.Configuration.ListenerServiceFailJob.GetSynchronizableMailboxes()\r\n   в Terrasoft.Configuration.ListenerServiceFailJob.GetMailboxesWithoutSubscriptions()\r\n   в Terrasoft.Configuration.ListenerServiceFailJob.Execute(UserConnection userConnection, IDictionary`2 parameters)\r\nSystem.Security.Cryptography.CryptographicException: Заполнение неверно и не может быть удалено.\r\n   в System.Security.Cryptography.CapiSymmetricAlgorithm.DepadBlock(Byte[] block, Int32 offset, Int32 count)\r\n   в System.Security.Cryptography.CapiSymmetricAlgorithm.TransformFinalBlock(Byte[] inputBuffer, Int32 inputOffset, Int32 inputCount)\r\n   в System.Security.Cryptography.CryptoStream.FlushFinalBlock()\r\n   в System.Security.Cryptography.CryptoStream.Dispose(Boolean disposing)\r\n   в System.IO.Stream.Close()\r\n   в Terrasoft.Common.PasswordCryptoProvider.DecryptValue(Object value, ICryptoTransform decryptor)\r\n   в Terrasoft.Core.SecureTextDataValueType.GetValueForLoad(UserConnection userConnection, Object value)\r\n   в Terrasoft.Core.Entities.EntityColumnValue.LoadValue(Object value)\r\n   в Terrasoft.Core.Entities.EntityColumnValueCollection.ForceLoadColumnValue(String name, Object value)\r\n   в Terrasoft.Core.Entities.Entity.LoadShallow(IDataReader dataReader, Dictionary`2 columnMap)\r\n   в Terrasoft.Core.Entities.EntityCollection.LoadShallow(IDataReader dataReader, Dictionary`2 columnMap, Boolean needClear)\r\n   в Terrasoft.Core.Entities.EntitySchemaQuery.GetEntitySchemaEntityCollection(UserConnection userConnection, IDataReader dataReader)\r\n   в Terrasoft.Core.Entities.EntitySchemaQuery.d__343.MoveNext()\r\n--- Конец трассировка стека из предыдущего расположения, где возникло исключение ---\r\n   в System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n   в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   в Terrasoft.Core.Entities.EntitySchemaQuery.GetEntityCollection(UserConnection userConnection)\r\n   в IntegrationV2.MailboxDomain.Repository.MailboxRepository.GetAll(Boolean userMailboxesOnly, Boolean useForSynchronization)\r\n   в IntegrationV2.MailboxDomain.MailboxService.GetAllSynchronizableMailboxes()\r\n   в Terrasoft.Configuration.ListenerServiceFailJob.GetSynchronizableMailboxes()\r\n   в Terrasoft.Configuration.ListenerServiceFailJob.GetMailboxesWithoutSubscriptions()\r\n   в Terrasoft.Configuration.ListenerServiceFailJob.Execute(UserConnection userConnection, IDictionary`2 parameters)

 

Что не так с почтой? Что именно нужно еще настроить для корректной работы синхронизации почты?

Нравится

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

Оксана, здравствуйте!

 

Согласно ошибке, то у вас проблема с дешифрованием хэшей.

Посмотрите, пожалуйста, на уровне БД есть ли в таблице MailboxSyncSettings некорректные данные (это актуально если запись почтового ящика была добавлена уровне БД и, например, UserPassword пустой).

 

Уточните, пожалуйста:

- это ваше первое добавление почтового ящика (на уровне БД есть записи в MailboxSyncSettings). Если они не нужны, то можете попробовать удалить и заново добавить почтовый ящик.

- вы недавно обновлялись с версии на версию? Если да,  то с какой версии и на какую (нужна точная версия)?

- какой тип почтового провайдера вы добавляете (Exchange, Gsuite и т.д.)?

Вильшанский Дмитрий,

Да, действительно. В MailboxSyncSettings оказался ящик без действующего пароля. Спасибо!

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

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

Нравится

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

Добрый день!

Уточните, на какой версии приложения воспроизводится данное поведение? Опишите, пожалуйста, пошаговую последовательность Ваших действий на скриншотах. 

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