Добрый день! Может кто-нибудь подскажет в чём причина данной ошибки, при срздании раздела, пакет создал, издателя поменял, префикс поменял, текущий пакет нужный поставил, создаю пакет, а тут вот.

 

Изображение удалено.

Версия приложения 7.13.3.481_SalesEnterprise_Marketing_ServiceEnterprise_Softkey_Oracle_ENU

Нравится

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

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

Для их решения рекомендуем установить на 11-м:

1) Удалить ODAC v.12 

2) Установить ODAC v.11 x64 протестирвать кейс:

    cmd: install.bat all c:\oracle64 oracle64

3) Если ошибка сохранится, установить ODAC v.11 x32, в свойствах пула приложения установить "Enable 32-bit applications" в "true", проверить кейс.

    cmd: install.bat all c:\oracle32 oracle32

 

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

Здравствуйте! Столкнулся с такой проблемой, есть деталь она прикреплена к Активности, в активности и в данной детали есть поля ссылающиеся на контакт, необходимо при добавлении записи в детали передавать в поле контакт контакт из активности. Пробовал через обработку событий перед сохранением записи на детали  не помогло:

Terrasoft.sdk.Model.setModelEventHandler("WaRecordClientToEventInVisit", 
	Terrasoft.ModelEvents[Terrasoft.ModelEventKinds.Before].insert,
	function(config) {
		debugger;
		var record = config.scope.eventConfig.records[0];
		window.console.log(record);
		var contact = record.data.Activity.data.Contact;
		record.data.Contact = contact;
		window.console.log(record);
		Ext.callback(config.success, config.scope);
});

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

Заранее благодарен.

Нравится

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

Такое можно реализовать на уровне серверной логики — во встроенном или отдельном БП на событии сохранения записи детали. Он сработает в момент сохранения, если онлайн-ражим, или в момент синхронизации с основной базой.

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

Всем доброго времени суток!

Добавляю деталь в мобильное приложение - http://prntscr.com/mx7ioh

добавлял следующим образом:

 

Terrasoft.sdk.Details.add("Activity", {
	name: "WaConsultationSubjectInVisitDetail",
	title: "WaConsultationSubjectInVisitCaption",
	model: "WaConsultationSubjectInVisit",
	parentColumnName: "Activity",
	masterColumnName: "Id",
	position: 0
});

Модуль зарегистрировал в манифесте.

так же добавил отображение грида для детали:

 

Terrasoft.sdk.GridPage.setTitle("WaConsultationSubjectInVisit", "WaConsultationSubjectInVisitGridTitle");
 
Terrasoft.sdk.GridPage.setPrimaryColumn("WaConsultationSubjectInVisit", "WaConsultationSubject");
Terrasoft.sdk.GridPage.setSubtitleColumns("WaConsultationSubjectInVisit", ["WaLoyalty","WaPotential"]);

При переходе на деталь вываливаются ошибки - http://prntscr.com/mx7jtz

Подскажите что делаю не так?

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

Нравится

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

Такое сообщение говорит о попытке писать в поле типа boolean неподходящее значение. Вероятно, в этой новой детали что-то не так сделали с одним из логических полей. Более точно узнать причину можно, изучив саму добавляемую деталь или посмотреть в Fiddler, какой запрос идёт к веб-сервису OData. 

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

Добрый день!

Не удается передать веб-сервису параметры методом POST, БП просто запускается, но не получает параметры. При использовании метода GET ошибок не возникает. использую строку /0/ServiceModel/ProcessEngineService.svc/UsrAddContragentPDZ/RunProcess

 public static void SendData()

        {

            var Request = HttpWebRequest.Create(processServiceUri) as HttpWebRequest;

            Request.Method = "POST";

            Request.Accept = "application/json";

            Request.ContentType = "application/json";

            Request.CookieContainer = AuthCookie;

            CookieCollection cookieCollection = AuthCookie.GetCookies(new Uri(processServiceUri));

            string csrfToken = cookieCollection["BPMCSRF"].Value;

            Request.Headers.Add("BPMCSRF", csrfToken);

            using (var requestStream = Request.GetRequestStream())

            {

                using (var writer = new StreamWriter(requestStream))

                {

                    string json = new JavaScriptSerializer().Serialize(new

                    {

                        BossID = "GBO_048845",

                        StatusPDZString = "007C2385-2EDC-402A-B40A-E74625E0E6DD",

                        PDZString = "4098,56"

                    });

                    writer.Write(json);

                    writer.Flush();

                    writer.Close();

                }

            }

Где может быть ошибка?

Нравится

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

Добрый день!



Вопрос следующего характера:

Необходимо изменить номера обращений - переделать поле текстовое в числовое. Есть пример https://community.terrasoft.ru/articles/sortirovka-po-nomeru-dogovora-d… но там выводится новая колонка, но моя задача - изменить текущую.



1) Что стоит предусмотреть и что может повлиять на работу? (сейчас создаются новые обращения формата "только цифры")

2) Если в это поле будет писаться текст (случайно попадет) - что изменится?

3) Что станет с БП, которые берут значение этого поля как текст?

Нравится

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

Быстров Сергей,

Как то так попробуй (код набросал на глазок, те сырой нужно  отлаживать)

initQuerySorting: function(esq) {
	var columnName = "Number";
	if (esq.columns.contains(columnName)) {
		//var numColumn = esq.addColumn(columnName);
		var numColumn = esq.columns[columnName];
		if (numColumn.orderPosition && numColumn.orderPosition > 0) {
			var numNewColumn = esq.addColumn("NewNumberIntegere");
			numNewColumn.orderDirection = numColumn.orderDirection;
			numNewColumn.orderPosition = numColumn.orderPosition;
			delete numColumn.orderDirection;
			delete numColumn.orderPosition;
		} else {
			this.callParent(arguments);
		}
}
},

 

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

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

2) в число текст не впихнуть будет ошибка при сохранении

3) зависит от того как именно обрабатывается строка в БП

Григорий Чех,

В принципе, задача с новой колонкой подойдет, но люди привыкли по номеру переходить в объект. Но почему-то нельзя установить "Отображаемое значение" числовое, только строку. 

Быстров Сергей,

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

Григорий Чех,

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

Быстров Сергей,

Есть еще костыльный вариант установить шаблон маски в SP{0:00000000} тогда номера будут формироватся в виде SP000000001,  SP000000002 и тд что позволит сортировать по текстовому полю номер, возможно вам это подойдет если пользователи не будут ругаться на лидирующие нули.

Григорий Чех,

А вот на это ругается первая линия, потому что "лишние цифры - это плохо". Поэтому сразу откинули такой вариант. Может можно как-то переопределить фильтр: когда мы пытаемся фильтровать по номеру, на самом деле фильтр делается по другому полю "UsrNumber"?

Быстров Сергей,

Фильтр не трогать, а можно попытатся переопределить сортировку, те при попытке сортировать по номеру отсортировать по новому числовому полю номер

Григорий Чех,

А провернуть такое можно, если в реестре не выведена эта колонка? Просто еще ни разу не делал подобного. Если есть какие-то примеры - буду рад.

Быстров Сергей,

Как то так попробуй (код набросал на глазок, те сырой нужно  отлаживать)

initQuerySorting: function(esq) {
	var columnName = "Number";
	if (esq.columns.contains(columnName)) {
		//var numColumn = esq.addColumn(columnName);
		var numColumn = esq.columns[columnName];
		if (numColumn.orderPosition && numColumn.orderPosition > 0) {
			var numNewColumn = esq.addColumn("NewNumberIntegere");
			numNewColumn.orderDirection = numColumn.orderDirection;
			numNewColumn.orderPosition = numColumn.orderPosition;
			delete numColumn.orderDirection;
			delete numColumn.orderPosition;
		} else {
			this.callParent(arguments);
		}
}
},

 

Григорий Чех,

Спасибо за помощь, получилось вот так:

initQuerySorting: function(esq) {
	this.callParent(arguments);
	var columnName = "Number";
	if (esq.columns.contains(columnName)) {
	var numColumn = esq.columns.collection.get(columnName);
		if (numColumn.orderPosition && numColumn.orderPosition === 1) {
			var numNewColumn = esq.columns.collection.get("UsrNumber");
			numNewColumn.orderDirection = numColumn.orderDirection;
			numNewColumn.orderPosition = 0;
			delete numColumn.orderPosition;
		}
	}
},
getGridDataColumns: function() {
	return {
		"UsrVIPobr": {path: "UsrVIPobr"},
		"UsrNumber": {path: "UsrNumber"}
	};
},

 

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

Здравсвуйте!  Возникла следующая ошибка:

Изображение удалено.

Версия приложения 7.13.2. На сервере под пользоваетлем с правами администратора, права на папку с приложение розданы. В пуле приложения в  поле "Удостоверение" указал текщего пользователя (у которого есть права администратора). Не могу понять, в чем здесь причина, может кто-нибудь подскажет. СПасибо.

 

Нравится

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

В SQL нужно дать пользователю права на БД: Безопасность -> Имена для входа. Я так решал это проблему у себя на среде.

В SQL нужно дать пользователю права на БД: Безопасность -> Имена для входа. Я так решал это проблему у себя на среде.

Терещенко Алексей,

Спасибо за ответ, но у пользователя с помощью которого я подключаюсь к бд, в табличке "Членство в роли базы данных: BPM-IIC", стоят чекбоксы в db_owner и public, для нужной БД.

Такое сообщение говорит, что пользователь, под которым запущен пул или который явно прописан в ConnectionStrings.config, не может установить подключение с SQL-сервером. Скорее всего, дело даже не в пользователе, а доступ заблокирован на уровне настроек SQL-сервера или firewall.

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

Спасибо за ответ, да дело было именно в брандмауэре.



.

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

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

Есть ли свойство в diff которое позволяет смещать Caption полей, к примеру текстовых? По умолчанию Caption стоит слева, нужно сделать сверху.

Нравится

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

А что вам мешает в первой строке вывести свои заголовки а во второе вывести значение полей без заголовка (Чтото близкое к гриду)

Григорий Чех,

ничего, интересовало есть ли такое свойство. А так обычный костыль.

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

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

Стала проблема получения списка всех Id записей в реестре.

this.getGridData().collection.keys.toString(); - вот это возвращает Id, но возвращает только те, которые видно в реестре, можно ли как то получить все айдишки, которые есть в реестре?

Нравится

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

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

Например, можете собрать все Id с помощью запроса esq следующего вида:

var ids = "";
 
var esq = this.getGridDataESQ();
this.initQueryColumns(esq);
this.initQuerySorting(esq);
this.initQueryFilters(esq);
this.initQueryEvents(esq);
 
esq.getEntityCollection(function(response) {
	if (response.success) {
		response.collection.each(function(item) {
			ids += item.get("Id") + ";";
		});
	}
}, this);

 

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

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

Например, можете собрать все Id с помощью запроса esq следующего вида:

var ids = "";
 
var esq = this.getGridDataESQ();
this.initQueryColumns(esq);
this.initQuerySorting(esq);
this.initQueryFilters(esq);
this.initQueryEvents(esq);
 
esq.getEntityCollection(function(response) {
	if (response.success) {
		response.collection.each(function(item) {
			ids += item.get("Id") + ";";
		});
	}
}, this);

 

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

Коллеги столкнулся с такой проблемой, не находит некоторые схемы - http://prntscr.com/mugxfw

Схемы добавлены в манифест рабочего места - http://prntscr.com/mugxx2

Подскажите что делаю не так?

Нравится

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

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

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

Здравствуйте, не могу понять как создается шаблон для excel выгрузки. То есть какие идентификаторы должны стоять в колонках, чтобы система поняла, что туда надо выгружать?

Нравится

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

Скорее всего вы поставили это дополнение https://marketplace.terrasoft.ru/app/excel-reports-builder-bpmonline

Тогда в шаблоне колонки попадают в том порядке в котором вы указали в дизайнере отчета и вы можете только задать/указать форматирование колонок

О какой выгрузке вы спрашиваете?, уточните как вы ее запускаете с какого раздела.

Григорий Чех,

 

Ринат вспомните какое расширение от партнеров для отчтетов в Эксель вы ставили и запросите у разработчика документаию 

Скорее всего вы поставили это дополнение https://marketplace.terrasoft.ru/app/excel-reports-builder-bpmonline

Тогда в шаблоне колонки попадают в том порядке в котором вы указали в дизайнере отчета и вы можете только задать/указать форматирование колонок

Если вам нужно чтото более сложное используйте построение excel файлов через библиотеки OpenXML (см пример) или аналогичные библиотеки

Григорий Чех, Спасибо большое, очень помогли.

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