Вопрос

Добрый день.

Проблема такова: есть сущность DocumentEntity, в ней есть справочное поле SenderId(в нем хранится Id из справочника) - каким образом можно получить сущность записи из справочника не прибегая к ESQ (с ESQ все работает, но при отладке в VS обратил внимание на свойство LookupColumnEntities)?

Код:

var SenderEntityLookup = DocumentEntity.LookupColumnEntities.GetEntity("Sender") as Sender;
var Code = SenderEntityLookup.GetTypedColumnValue<string>("Code");

VS:

LoadState: NotLoaded

"Невозможно получить значение колонки Code, так как она не была загружена"

 

У меня такой же вопрос

0 комментариев
Войдите или зарегистрируйтесь, чтобы комментировать
Вопрос

Доброе утро.

Есть 2 вопроса по работе со схемами кампаний.

1. Подскажите, есть ли способ перенести схему кампании из одного пакета в другой (поле 'Пакет', как в других схемах конфигурации отсутствует)?

2. Каким образом корректно удалить уже настроенную схему кампании?

 

У меня такой же вопрос

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

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

Удалять кампании корректно можно по соответствующей кнопке, но только те, которые ещё не запускались.

 

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

Коллеги, вопрос такой.

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

Затем, повторная операция - сокращается до 2-3 секунд.

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

Кто как борется с такой ситуации? Не очень удобно, когда тебе нужно зайти в течении рабочего дня, причем я бы не сказал, про какие-то большие таймауты, это может быть полчаса или меньше (точно не могу определить) и опять все долго.

Особенно тяжело объяснить это заказчику, который привык работать с десктопными приложениями и там отклик быстрый.

В свое время занимался порталами, там были скрипты прогрева системы, может к BPM Online есть подобные.

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

PS: Версия облачная.

 

 

 

У меня такой же вопрос

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

Обратитесь в поддержку - они отлично умеют бороться с засыпанием IIS

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

Добрый день, коллеги! 

Есть задача: сделать веб-сервис, принимающий на вход сложное json-тело.

В ходе реализации столкнулась с двумя проблемами:

1. Не нашла, как описать прием сложного параметра в сервисе, кроме робкого указания на модификаторы [DataContract] и [DataMember]. Подскажите, где-нибудь есть информация об этом? 

2. При вызове из Postman сервис возвращает ответ "403 - Вы не имеете разрешения на просмотр этого каталога пли страницы." (скриншот ниже). Нужно ли где-то отдельно прописывать права на доступ к сервисам?

 

Скриншот ошибки:

Листинг пример json тела запроса.

{
"scoring_events" : [
		{
			"type" : "pageview",
			"page_url" : "https://bpmonline.com/",
			"datetime_utc" : "2018-08-08 12:00:12",
			"responsible_user" : {
				"name" : "Иван Иванов",
				"email" : "i.ivanov@yandex.ru",
				"type" : "user"
			},
			"partner" : {
				"name" : "ООО Ромашка"
				"bpm_id" : "783967ef-c629-4f1d-8cd4-3b3dba955ffc",
				"contact_email" : "n.ivanova@yandex.ru"
			}
		},
		...
		{
			...
		}
	]
}

 

листинг сервиса:

namespace Terrasoft.Configuration.WScoringService
{
	using System;
<...>
#region Class: WScoringService 
	[ServiceContract]
	[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]
	public class WScoringService : BaseService
	{
        private WScoringServiceResponse wScoringServiceResponse;
 
        #region Methods: Public
        [OperationContract]
        [WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped,
        ResponseFormat = WebMessageFormat.Json)]
        public string AddScoringEvent(List<ScoringEvent> scoring_events)
        {
            if (scoring_events.IsEmpty()) wScoringServiceResponse = new WScoringServiceResponse(true, "empty");
            else wScoringServiceResponse = new WScoringServiceResponse(true, scoring_events[0].ToString());
            return wScoringServiceResponse.ToJsonString();
        }
        #endregion
        #region  DataContract
	    [DataContract]
	    public class ScoringEvent
	    {
	    	[DataMember]
	        public string type;
	        [DataMember]
	        public string page_url;
	        [DataMember]
	        public string datetime_utc;
	        [DataMember]
	        public ResponsibleUser responsible_user;
	        [DataMember]
	        public Partner partner;
	        public override string ToString()
	        {
	            string result;
	            result = "type=" + type + ";";
	            result += "page_url=" + page_url + ";";
	            result += "datetime_utc=" + datetime_utc + ";";
	            result += "responsible_user_name=" + responsible_user.name + ";";
	            result += "partner_name=" + partner.name + ";\n";
	            return result;
	        }
	    }
	    [DataContract]
	    public struct ResponsibleUser
	    {
	    	[DataMember]
	        public string name;
	        [DataMember]
	        public string email;
	        [DataMember]
	        public string type;
	    }
	    [DataContract]
	    public struct Partner
	    {
	    	[DataMember]
	        public string name;
	        [DataMember]
	        public string bpm_id;
	        [DataMember]
	        public string contact_email;
	    }
	    #endregion
    }
    #endregion
 
    #region Class: WScoringServiceResponse
    public class WScoringServiceResponse
    {
        private bool success;
        private string message;
        public WScoringServiceResponse() { }
        public WScoringServiceResponse(bool success, string message = null)
        {
            this.success = success;
            this.message = message;
        }
        public string ToJsonString()
        {
            string result = "{\"status\":\"";
            if (success) result += "ok\",";
            else result += "error\",";
            result += "\"message\":\"" + message+ "\"}";
            return result;
        }
    }
    #endregion
}

 

У меня такой же вопрос

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

Примеры сервисов можно найти в конфигурации. Например, [DataContract] и [DataMember] применяют в CurrentUserService так:

[DataContract]
public class UserCultureInfo
{
	[DataMember(Name = "timeZoneCode")]
	public string TimeZoneCode { get; set; }
 
	[DataMember(Name = "timeZoneName")]
	public string TimeZoneName { get; set; }
 
	[DataMember(Name = "timeZoneId")]
	public Guid TimeZoneId { get; set; }
 
	[DataMember(Name = "cultureId")]
	public Guid CultureId { get; set; }
 
	[DataMember(Name = "cultureName")]
	public string CultureName { get; set; }
 
	[DataMember(Name = "cultureLanguage")]
	public string CultureLanguage { get; set; }
 
	[DataMember(Name = "dateTimeFormatId")]
	public Guid DateTimeFormatId { get; set; }
 
	[DataMember(Name = "dateTimeFormatName")]
	public string DateTimeFormatName { get; set; }
}

По поводу 403, такое бывает, если при отправке запроса к сервису не передать CSRF-токен.

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

Добрый день.

На странице редактирования имеется деталь с редактируемым реестром с собственным объектом, необходима возможность добавления записей по ней на странице портального и странице системного пользователей. Настроил доступы к обьекту детали для обеих ролей, открыл доступ доступ к записям с указанием правил раздачи прав на чтение и изменение, указал какие права должны раздаваться по умолчанию. Настоил записи в таблицах SysModuleEntity, SysEntitySchema и SysEntitySchemaInPortal, результат следующий:

1)при наличии записи в таблице SysEntitySchemaInPortal по данному обьекту сущность обьекта детали инициализируется при запуске приложения под портальным пользователем, возможность длбавлять записи есть, а при запуске приложения под обычным пользователем, не инициализируется, добавлять запись нельзя, плюсик соответственно тоже не виден.

2)при удалении записи из SysEntitySchemaInPortal все наоборот, обычный пользователь может создавать запись, а портальный - нет.

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

Заранее спасибо!

У меня такой же вопрос

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

Что-то не могу найти схему SysEntitySchemaInPortal в конфигурации. Может, это какая-то доработка? Обычно для указания, какие схемы доступны на портале, их вносят в «Список объектов, доступных пользователям портала» (SysSSPEntitySchemaAccessList) и их поля в «Список доступных полей объектов на портале» (PortalSchemaAccessList).

Войдите или зарегистрируйтесь, чтобы комментировать