Добрый день

 

Поставлена задача контролировать статус активностей по обращению на момент перехода в статус "IsResolved". Сделал на CasePage в methods 2 функции:

asyncValidate: function(callback, scope) {
	this.callParent([function(response) {
		if (!this.validateResponse(response)) {
			return;
		}
		Terrasoft.chain(
			function(next) {
				this.validateActivities(function(response) {
					if (this.validateResponse(response)) {
						next();
					}
				}, this);
			},
			function() {
				callback.call(scope, response);
			}, this);
	}, this]);
},
validateActivities: function(callback, scope) {
	var result = {success: true};
	if (this.get("Status").IsResolved===true) {
		var esq = Ext.create("Terrasoft.EntitySchemaQuery", { rootSchemaName: "Activity" });
		esq.addColumn("Status.Finish", "Isfinished");
		esq.filters.addItem(esq.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL, 
			"Status.Finish", "0"));
		esq.filters.addItem(esq.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL, 
			"Case", this.get("Id")));
		esq.getEntityCollection(function(response) {
			if (response.success && response.collection.getCount() > 0) {
					result.message = this.get("Resources.Strings.CantChangaStatus");
					result.success = false;
			}
			callback.call(scope || this, result);
		}, this);
	}
}

Если обращение существует, то все отлично. Проверка идет, сохранять обращение не дает.

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

Нравится

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

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

 

А если заменить проверку с ESQ на заглушку, тоже зависает? Может, дело в асинхронности получения ответа от него, а выполнение проверки в asyncValidate ожидало результата сразу?

 

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

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

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

Нравится

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

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

 

Для решения возникших ошибок вам стоит обратится в техническую поддержу. 

 

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

Добрый день! Создал по инструкции веб-сервис, опубликовал его на проде, так же по той же инструкции тех. поддержка Terrasoft зарегистрировала мне этот анонимный веб-сервис, т.к. прод находится в облаке. После отправки запроса на сервис, заметил, что параметры, которые я передаю в итоге оказываются пустыми (в случае, если передаю Guid, то в сервисе обрабатывается пустой Guid, если передаю строку, то обрабатывается пустая строка)


Код сервиса:
 

namespace Terrasoft.Configuration.UsrUnsubscribeFromNewslettersService
{
	using System;
	using System.IO;
	using System.Net;
	using System.Collections.Generic;
	using System.ServiceModel;
	using System.ServiceModel.Web;
	using System.ServiceModel.Activation;
	using Terrasoft.Web.Common;
	using Terrasoft.Common;
	using Terrasoft.Core.Entities; 
	using Terrasoft.Core;
	using Terrasoft.Core.Process;
	using Terrasoft.Core.Process.Configuration;
	using Newtonsoft.Json;
	
	[ServiceContract]
	[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]
	public class UsrUnsubscribeFromNewslettersService: BaseService
	{
		private SystemUserConnection _systemUserConnection;
        private SystemUserConnection SystemUserConnection {
            get {
                return _systemUserConnection ?? (_systemUserConnection = (SystemUserConnection)AppConnection.SystemUserConnection);
            }
        }
		[OperationContract]
		[WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped,
		ResponseFormat = WebMessageFormat.Json)]
		public UnsubscribeRequest UnsubscribeFromNewsletters(UnsubscribeRequest request){
            SessionHelper.SpecifyWebOperationIdentity(HttpContextAccessor.GetInstance(), SystemUserConnection.CurrentUser);
			ProcessSchema schema = SystemUserConnection.ProcessSchemaManager.GetInstanceByName("UsrUnsubscribeUserFromNewsletters");
			
			var flowEngine = new FlowEngine(SystemUserConnection);
			var param = new Dictionary<string, object>();
			param["ContactId"] = request.ContactId;
			param["NewslettersId"] = request.NewslettersId;
			flowEngine.RunProcess(schema, param);
			return request;
		}
		
	}
	public class UnsubscribeRequest {
		public Guid ContactId {get; set;}
		public Guid NewslettersId {get; set;}
	}
}

Если переделать POST на GET, то сервис работает.

Нравится

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

Сергей, при регистрации в системе веб-сервиса он должен так же само работать, как и вне сайта 7.Х.
Попробуйте создать в Visual Studio отдельный проект и создать аналогичный сервис в нём.
Если там будет такая же ошибка, в Visual Studio можно будет произвести отладку.
Возможно, Вы неправильно оформили метод и параметры.

Также обратите внимание на тему с похожими симптомами:
https://stackoverflow.com/questions/6835872/wcf-rest-post-of-json-parameter-is-empty
 

Сергей, при регистрации в системе веб-сервиса он должен так же само работать, как и вне сайта 7.Х.
Попробуйте создать в Visual Studio отдельный проект и создать аналогичный сервис в нём.
Если там будет такая же ошибка, в Visual Studio можно будет произвести отладку.
Возможно, Вы неправильно оформили метод и параметры.

Также обратите внимание на тему с похожими симптомами:
https://stackoverflow.com/questions/6835872/wcf-rest-post-of-json-parameter-is-empty
 

Спасибо за ответ, проблема была в том, что для класса UnsubscribeRequest и пропертей внутри него не были добавлены атрибуты DataContract и DataMember соответственно

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

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

При скрытии поля механизмом бизнес-правил (условие на отображение) в карточке контрагента в левом контейнере (ProfileContainer) остаются пустые строки - http://joxi.ru/l2ZK46BtEgkNDA

Пробовал через css - сработало только для центрального блока (которые внутри вкладок на карточке). Свойство collapseEmptyRow выставленное у контейнера также не помогло.

Есть ли способ решить данную проблему?

Спасибо

Нравится

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

Здравствуйте, Артем!

 

В базовой конфигурации системы действительно при скрытии поля через бизнес-правило или использование свойства контрола "visible" вместо поля остается пустое место. Это происходит так как расположение элементов поля задается статически. Но, по данному вопросу уже зарегистрирована проблема/пожелание на команду разработки с целью рассмотрения реализации решения в последующих версиях.

Здравствуйте, Артем!

 

В базовой конфигурации системы действительно при скрытии поля через бизнес-правило или использование свойства контрола "visible" вместо поля остается пустое место. Это происходит так как расположение элементов поля задается статически. Но, по данному вопросу уже зарегистрирована проблема/пожелание на команду разработки с целью рассмотрения реализации решения в последующих версиях.

Мотков Илья,

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

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