Добрый день

 

Поставлена задача контролировать статус активностей по обращению на момент перехода в статус "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 выставленное у контейнера также не помогло.



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



Спасибо

Нравится

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

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

 

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

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

 

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

Мотков Илья,



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

Идею зарегистрировали в апреле 2019 году. в августе 2020 напоминали про неё. На носу уже 2022 год, версия системы 7.18.5, а воз и ныне там....

Придумал для себя обходное решение. Мне надо было на страницу обращения добавить новые поля. Причем видные только при определенном сервисе. Естественно при скрытии полей оставалось пустое место. Тогда я решил спраятать эти поля в отдельный контейнер.

получилось так:

Контейнер_для_множества_полей_на_CardContentContainer
	Контейнер_для_поля1_ на_Контейнер_для_множества_полей
		Поле1_на_Контейнер_для_поля1
	Контейнер_для_поля2_ на_Контейнер_для_множества_полей
		Поле2_на_Контейнер_для_поля2

Потом создал бизнес-правила для Поля1 и Поля2. Сохранил, зашел в код страницы и заменил в секции businessRules Поле1 и Поле2 на Контейнер_для_поля1 и Контейнер_для_поля2 соответсвенно. + еще есть общее бизнес правило для Контейнер_для_множества полей, которое скрывает контейнер со страницу, когда поля совсем не нужны.

понимаю, что мое решение не для всех случае подойдет, но все же лучше чем ничего).

Очень надеюсь, что в версии 8.1. (именно 1, а не 8.0 - на неё уже нет надеджды) мы сможем это все делать на заявленном и распиареном LowCodeNoCode.

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