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

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

 

Я попробовал в конфигурации страницы активности 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 проверкой этого атрибута. Благодарю!

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

Есть JSON на 35 000+ строк.
На стороне сервера запрос принимается и обрабатывается 118 – 124 секунды.

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

Received an unexpected EOF or 0 bytes from the transport stream. Trace at System.Net.ConnectStream.Read(Byte[] buffer, Int32 offset, Int32 size) at System.IO.StreamReader.ReadBuffer() at System.IO.StreamReader.ReadToEnd() at Terrasoft.Configuration.UsrCustomNamespace.UsrHelperForAuction.SendRequest[T](String api, T requestObject, Guid auctionId)

Предполагалось, что запрос завершается по таймауту и соединение разрывается раньше ответа от сервера.
На стороне сервера были увеличены таймеры. С помощью
POSTMAN запросы проходят без проблем.

В CRM при отправке запроса, HTTP Request был добавлен таймаут = 600 * 1000.

Ошибка осталась та же.

Нравится

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

Добрый день.

Подскажите, сколько по времени занимает выполнение запроса в Postman?
Если у вас закрывается сессия до выполнения запроса, я бы рекомендовал обратить внимание на системную настройку UserSessionTimeout. Максимальное значение данной настройки - 720 мин.

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

Добрый день!

Подскажите, по какой причине не отображается раздел [Обращения] в рабочем месте?

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

Нравится

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

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

Здесь стоит проверять сразу несколько нюансов:

- проверьте что объект не имеет ошибок публикации, скомпилируйте приложение. 

- проверьте права, на раздел/рабочее место, а также что пользователь обладает нужной лицензией.

- проверьте привязку в таблице SysModul. Может быть такое, что раздел был добавлен в одно рабочее место два раза и на уровне базы данных образовались дубли, в таком случае раздел просто не отобразиться. Нужно удалить записи на уровне БД и добавить раздел снова.

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

 

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

Добрый день!

У сотрудника перестали отображаться данные в канбан, хотя записи в наработках присутствуют

Нравится

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

Лариса, если это дополнение Kanban view for Creatio, то лучше будет уточнить у его авторов по ссылке. Из общих соображений, проверьте, все ли у него есть права на записи этого раздела, где Вы строите канбан, и нет ли при переходе в этот режим в консоли браузера ошибок, которые могут сказать больше о причине.

 

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

Ошибка возникает из-за того что в замещающих схемах BaseSectionV2 вызывается CloseCard, в котором обращется к this.$SelectedRows.length, но инициализация $SelectedRows происходит позже. 
Ошибка решается изменением метода: 

    closeCard: function() {
                this.hideCard();
                this.removeCardHistoryState();
                this.updateCardHeader();
                const isMultiSelectMode = this.$MultiSelect && this.$SelectAllMode;
                const isNotSelected = !isMultiSelectMode && this.$SelectedRows && this.$SelectedRows.length === 0;
                if (isNotSelected) {
                    this.switchActiveRowActions();
                }
                this.reloadGridColumnsConfig(true);
                this.ensureActiveRowVisible();
            }

 

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

спасибо за ответ! наверное, если бы ошибка возникла из-за обновления, то тогда пропало бы отображание у всех, а здесь только у некоторых

Если у некоторых, то похоже на отсутствие каких-то прав. Для эксперимента, можно сделать их админами и проверить снова.

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

К сожалению, не помогло

Лариса, тогда лучше связаться с авторами дополнения, описать им вопрос подробнее.

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

Добрый день, подскажите пожалуйста, как заместить модуль DuplicatesSearchUtilitiesV2 на пользовательский. Прочитал что модули замещать нельзя. Создал новый модуль DevDuplicatesSearchUtilitiesV2, изменив прежний. Но никак не могу понять, как теперь заместить схему AccountPageV2, так чтобы в ней использовался новый модуль вместо прежнего, не смог нигде найти ответа на этот вопрос. Подскажите пожалуйста как можно реализовать такое замещение.

Нравится

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

Добрый день.
После того как вы создали свой модуль по аналогии с DuplicatesSearchUtilitiesV2, вам необходимо указать его в зависимости в замещенной схеме AccountPageV2.

Инициализировать его как миксин и использовать в методах как любой другой миксин.

 

Пример:

https://i2.paste.pics/8754cbb41c209e369590912c418fbfbb.png

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

Добрый день!

После запуска процесса Генерация структуры БД в браузере не появился файл, где его искать?

Спасибо!

Нравится

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

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

Перейдите на преднастроенную страницу, при нажатии должен скачаться файл.

Полозюков Евгений Петрович, перешла на страницу, нажимаю, но файл не появляется

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

Полозюков Евгений Петрович,

Спасибо!

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

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

 

Пытался перезагрузить лицензию, но при попытке загрузки лицензии выдает ошибку.

 

 

В логах пишет "Неверный формат лицензии".

В чем может быть проблема?

Нравится

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

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

Попробуйте выгрузить файл с запросом лицензий .tlr затем запросить и у поддержки обновленный файл .tls

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

Попробуйте выгрузить файл с запросом лицензий .tlr затем запросить и у поддержки обновленный файл .tls

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

Доброго дня.

Під час виконання операції створення індекса виникає помилка 'Could not check index exists' . На скріншоті показано стек помилки. Чи можете порадити вирішення цієї проблеми

Нравится

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

Юліє, зверніть увагу на аналогічну тему, опубліковану минулого тижня. Там автор запитання сам його вирішив шляхом повторного встановлення і налаштування компонентів пошуку. Якщо Вам це не допоможе, будь ласка, зверніться до служби підтримки для аналізу налаштувань системи.

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

На академии указано, что в качестве пространства имен конфигурационного веб-сервиса необходимо использовать либо Terrasoft.Configuration, либо любое, вложенное в него (например, Terrasoft.Configuration.MyRandomNamespace).

Насколько это обязательно и критично?

Обнаружил это только недавно, что все самописные веб-сервисы нормально работают в совершенно другом, не вложенном, namespace.

Нравится

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

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

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

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

На раздел портала добавлена деталь. Все необходимые права на объект деталь розданы. Записи детали создаются и сохраняются нормально.

 

Есть проблема с переходом на карточку детали. В консоли ошибка

 

 

Для указанного объекта детали не подгружается страница. Подскажите, какие доработки нужно сделать, чтоб страница подгрузилась?

Нравится

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

Если вы не можете получить editPage для детали значит у вас неправильно зарегистрированы связи между деталью и карточкой детали. Здесь написано как регистрируются эти связи в таблицах пункт 5 https://academy.terrasoft.ru/documents/technic-sdk/7-15/detal-so-strani…

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

Если вы не можете получить editPage для детали значит у вас неправильно зарегистрированы связи между деталью и карточкой детали. Здесь написано как регистрируются эти связи в таблицах пункт 5 https://academy.terrasoft.ru/documents/technic-sdk/7-15/detal-so-strani…

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