После обновления на версию 7.17.2 перестали загружаться файлы в Excel отчёты.

Дополнение "Excel reports builder". Воспроизводится для всех разделов.

В консоли ошибка "One or more filters are not filled, please fill in all filters and try again."

Как можно решить данную проблему?

Нравится

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

Станислав, добрый день!

 

Ответственная команда по решению подготовила обновленный пакет с исправлением этой ошибки. Установите повторно решение из Creatio Marketplace.

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

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

Ошибка при добавлении в таблицу с правами в консоли на скрине. 

Изображение удалено.  Права все выданы как и на операции так и по записям - 100%.

*Компилировал, генерировал схемы, чистил редис.

**Что интересно, для все старых схем права работают.

 

Нравится

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

Посмотрите, есть ли ваши объекты в справочнике "список объектов, доступных пользователю портала"

Посмотрите, есть ли ваши объекты в справочнике "список объектов, доступных пользователю портала"

Трефилов Павел Сергеевич,

Spasibo!

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

Добрый день.

В приложении Advanced excel reports for Creatio не удается добавить колонку в отчет. Колонка "Название" обязательна для заполнения.

На версии 7.17.2 обновленный интерфейс выбора колонок. Предварительно причина в этом.

Подскажите, может кто сталкивался уже с проблемой и есть готовое решение?

 

https://marketplace.terrasoft.ru/app/advanced-excel-reports-creatio

http://joxi.ru/p279QRwuK4z6zr

Нравится

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

Вот решение, вдруг кому пригодится. Добавил флаг использования старого интерфейса выбора колонок. Нужно создать замещающий клиентский модуль с кодом:

define("BpmReportColumnDetail", ["terrasoft", "sandbox", "ModalBox", "ConfigurationGrid", "ConfigurationGridGenerator",
	"ConfigurationGridUtilities", "StructureExplorerUtilities"],
		function(Terrasoft, sandbox, ModalBox) {
	return {
		entitySchemaName: "BpmReportColumn",
		messages: {},
		attributes: {},
		mixins: {},
		diff: /**SCHEMA_DIFF*/[
		],/**SCHEMA_DIFF*/
		methods: {
			/**
            *@override
            */
			openStructureExplorerClick: function() {
				var reportConfig = this.sandbox.publish("GetReportConfig");
				var path = this.get("BpmPath");
				Terrasoft.StructureExplorerUtilities.open({
					scope: this,
					moduleConfig: {
						columnPath: path,
						useBackwards: false,
						schemaName: reportConfig.reportEntitySchemaName,
						displayId: true,
                      	useOldStructureExplorer: true //Добавлен параметр, т.к. открывался новый интерфейс выбора колонок и ломал логику.
					},
					handlerMethod: function(selectedColumns) {
						var path = selectedColumns.leftExpressionColumnPath;
						var pathCaption = selectedColumns.leftExpressionCaption;
						if (!this.get("BpmCaption") && selectedColumns.caption) {
							this.set("BpmCaption", selectedColumns.caption[selectedColumns.caption.length - 1]);
						}
						this.set("BpmPath", path);
						this.set("BpmPathCaption", selectedColumns.leftExpressionCaption);
						this.set("BpmName", path.replace(".", "_"));
						this.set("BpmPathLookup", {
							value: pathCaption,
							displayValue: pathCaption
						});
					}
				});
				ModalBox.setSize(580, 450);
			}
		}
	};
});

 

Вот решение, вдруг кому пригодится. Добавил флаг использования старого интерфейса выбора колонок. Нужно создать замещающий клиентский модуль с кодом:

define("BpmReportColumnDetail", ["terrasoft", "sandbox", "ModalBox", "ConfigurationGrid", "ConfigurationGridGenerator",
	"ConfigurationGridUtilities", "StructureExplorerUtilities"],
		function(Terrasoft, sandbox, ModalBox) {
	return {
		entitySchemaName: "BpmReportColumn",
		messages: {},
		attributes: {},
		mixins: {},
		diff: /**SCHEMA_DIFF*/[
		],/**SCHEMA_DIFF*/
		methods: {
			/**
            *@override
            */
			openStructureExplorerClick: function() {
				var reportConfig = this.sandbox.publish("GetReportConfig");
				var path = this.get("BpmPath");
				Terrasoft.StructureExplorerUtilities.open({
					scope: this,
					moduleConfig: {
						columnPath: path,
						useBackwards: false,
						schemaName: reportConfig.reportEntitySchemaName,
						displayId: true,
                      	useOldStructureExplorer: true //Добавлен параметр, т.к. открывался новый интерфейс выбора колонок и ломал логику.
					},
					handlerMethod: function(selectedColumns) {
						var path = selectedColumns.leftExpressionColumnPath;
						var pathCaption = selectedColumns.leftExpressionCaption;
						if (!this.get("BpmCaption") && selectedColumns.caption) {
							this.set("BpmCaption", selectedColumns.caption[selectedColumns.caption.length - 1]);
						}
						this.set("BpmPath", path);
						this.set("BpmPathCaption", selectedColumns.leftExpressionCaption);
						this.set("BpmName", path.replace(".", "_"));
						this.set("BpmPathLookup", {
							value: pathCaption,
							displayValue: pathCaption
						});
					}
				});
				ModalBox.setSize(580, 450);
			}
		}
	};
});

 

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

Добрый день!

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

Результат - письмо отправляется без вложений. В трассировке видно, что все файлы из той активности успешно прочитались, что в новую активность добавляются все эти записи, но при этом в созданной активности все равно пусто и в справочники Файлы и ссылки активности создается просто пустая строка. Не пойму, что я делаю не так.

 

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

Нравится

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

Пересылка вложений в бизнес-процессах была реализована только в 7.17. Какая версия у Вас?

Соколов Павел Валерьевич,

Возможность работы с файлами в бизнес-процессах доступна только с версии 7.17.2, это упоминается в официальном описании релиза - 

https://academy.terrasoft.ru/docs/release/opisanie-relizov/opisanie-rel…

Описание работы нового элемента есть в академии - https://academy.terrasoft.ru/docs/user/biznes_processy/spravka_po_eleme…

Решил проблему. Файлы активности не переносились из-за значения "Встроенное вложение = Да" при создании новой активности. После смены на "Нет" файлы успешно скопировались в новую активность и вложения отправились

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

Добрый день.

 

Очень нужна помощь. Сделал страничку редактирования

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

Но система нам все отображает в таком виде:

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

Как переделать на такой вид?

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

 

Меняем в браузере значения у

 .label-wrap {
    min-widht:60em;
    max-widht:60em;
}

и получаем как хочется. Теперь сделаю свой клиентский модуль и вкладке Less пишу свой класс

.usr-label-wrap {
	min-wight:60em;
	max-wight:60em;
}

Добавляю в схему

define("UsrCustomPage", ["css!UsrCustomCSS", "CommonCSSV2"], function() {

В блоке diff пишу (пробую по разному)

{
	"operation": "insert",
	"name": "UsrRisk_01",
	"values": {
		wrapClass:["usr-label-wrap"],
		"layout": {
			"colSpan": 12,
			"rowSpan": 1,
			"column": 0,
			"row": 0,
			"layoutName": "QuestionsTabLabelGridLayout"
		},
		"bindTo": "UsrRisk_01",
		"labelConfig": {
			"caption": {
				"bindTo": "Resources.Strings.UsrRisk_01_LabelCaption"
			}
		},
		"enabled": true
	},
	"parentName": "QuestionsTabLabelGridLayout",
	"propertyName": "items",
	"index": 0
},
{
	"operation": "insert",
	"name": "UsrRisk_09",
	"values": {
		classes:{
			labelClass:["usr-label-wrap"]
		},
		"layout": {
			"colSpan": 12,
			"rowSpan": 1,
			"column": 12,
			"row": 0,
			"layoutName": "QuestionsTabLabelGridLayout"
		},
		"bindTo": "UsrRisk_09",
		"labelConfig": {
			"caption": {
				"bindTo": "Resources.Strings.UsrRisk_09_LabelCaption"
			}
		},
		"enabled": true
	},
	"parentName": "QuestionsTabLabelGridLayout",
	"propertyName": "items",
	"index": 1
}

Но в итоге Ничегошеньки....

В идеале бы конечно добиться такого вида

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

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

Нравится

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

Добрый день.

 

Странно что у вас не получилось добавить свой CSS. Возможно где-то есть более приоритетный стиль от которого и берётся класс .label-wrap.

Для пробы добавил новое текстовое поле на страницу активности, прикрутил к нему css и всё получилось.

Модуль с css:

.usr-base-edit-input {
    width: 30em;
}

Замещающая модель страницы активности:

define("ActivityPageV2", ["css!UsrNewCss"], function() {
    return {
        entitySchemaName: "Activity",
        diff: /**SCHEMA_DIFF*/[
            {
                "operation": "insert",
                "parentName": "Header",
                "propertyName": "items",
                "name": "UsrMeetingPlace",
                "values": {
                  	wrapClass:["usr-base-edit-input"],
                    "caption": "MeetingPlace",
                    "layout": {
                        "column": 0,
                        "row": 5,
                        "colSpan": 12,
                        "rowSpan": 1
                    }
                }
            }
        ]/**SCHEMA_DIFF*/
    };
});

Возможно это вам поможет.

Заработало только после того как в модуле с CSS указал класс как 

.usr-label-wrap .label-wrap{
	min-wight:60em;
	max-wight:60em;
}

 

ну осталась проблема как запретить наезд двух надписей от checkbox друг на друга при уменьшении масштаба окна

Попробуйте добавить строчку в свой css по типу "width: XX%;"

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

В числовых полях, для которых назначено округление (и для которых оно не назначено тоже) в Creatio, и которые не заполнены (например, пользователь импортирует из excel свои данные заполняя карточку какую-нибудь, и там не все ячейки заполнены), отображается ЦИФРА, а не пустое поле. Сейчас обратила внимание на данную проблему, есть ли какое-либо решение?

 

Нравится

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

Это не проблема. Так работает система, так как для всех числовых полей системы на уровне ядра прямо в БД установлено значение по умолчанию - 0. Это происходит потому что в СУБД нет для числовых колонок такого понятия, как пустое значение. Если число, то обязательно 0. Так же если логическое, то FALSE.

Это не проблема. Так работает система, так как для всех числовых полей системы на уровне ядра прямо в БД установлено значение по умолчанию - 0. Это происходит потому что в СУБД нет для числовых колонок такого понятия, как пустое значение. Если число, то обязательно 0. Так же если логическое, то FALSE.

Владислав Литвинчук,

Спасибо! Для меня это стало проблемой, когда пользователь проводит расчеты, и видит 0 вместо пустой ячейки, как он вводил в excel. Сделать поля другого формата не получится, потому как позже это поле где-то используется как для математических операций

Добрый день!

Описанное Вами поведение не является ошибкой и соответствует базовой логике, которая присуща всем полям.

Если поле имеет тип - Число или Дробное число, то значение 0 или 0,00 - это пустое значение, то есть поле не заполнено.

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

Значения 0 или 0,00 является пустым значением, они отображаются в пустых полях для того, чтобы визуально пользователи понимали формат поля.

 

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

Жмурко Сергей,

Спасибо за объяснения) к сожалению, да, заменить на текстовое поле не получится..

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

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

 

Столкнулся с проблемой при настройке синхронизации с почтой. У меня продукт ServiceEnterprise. Сервис ExchangeListener настроен согласно инструкции на академии (все необходимые фичи включены, почтовый сервер настроен). На версии 7.17.1 все отлично работает, как IMAP/SMTP, так и Exhange сервера. Проблема в том, что на версии 7.17.2, 7.17.3 при настройке почтового ящика получаю ошибку 

 

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

 

В логах приложения следующее: 

2021-04-07 09:54:53,829 [255] WARN IIS APPPOOL\SE_7173 IsServerValid - Mailbox ********* didn't pass validation with these credentials, info: Sending test message: The remote server returned an error: (404) Not Found.

 

Перепробовал разные почтовые ящики - ошибка одинаковая. Может на этих версиях приложения нужно выполнить дополнительные настройки? Подскажите куда копать, что проверить. Спасибо.

 

Нравится

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

Паламарчук Максим Олегович,

Попробуйте, пожалуйста, поставить новую версию сервиса ("переразвернуть" helm-пакет). Сейчас версия 0.8.26.

У вас слишком она старая.

У нас была похожая ситуация (на почте zimbra). Помогло сменить порт SMTP на 465 в настройках почтовых провайдеров

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

проверил настройки - 465-й порт уже был выбран,

 

 

Максим, здравствуйте! 

 

Ваше приложение находится в облаке или расположен на ваших серверах (on-site)?

Пробовали ли добавить ukr.net почту с такими параметрами, например, Outlook или The Bat?

 

Проблема с любым почтовым провайдером или только ukr.net? Пробовали добавить Gmail?

 

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

Дмитрий, здравствуйте!

 

Приложение он-сайт.

 

У меня есть несколько почт - ukr.net(провайдер imap) и корпоративная(провайдер exchange). Все работают на версии 7.17.1. На версиях 7.17.2 и 3 с идентичними настройками провайдеров и ящиков ни одна не работает.

 

Я пинговал подписки листенеров микросервиса (адрес сервера)/api/listeners/status - там есть подписки от сайта 7.17.1, а от более новых версий - нет.

 

Также открывал страницу диагностики - там все верно настроено

 

Паламарчук Максим Олегович,

Попробуйте, пожалуйста, поставить новую версию сервиса ("переразвернуть" helm-пакет). Сейчас версия 0.8.26.

У вас слишком она старая.

Дмитрий,

 

спасибо попробую

Дмитрий,

 

действительно на новом сервисе все взлетело. Спасибо большое!

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

Всем привет. Возник такой вопрос, как можно переделать фиксированное количеств сервисов на динамический, то есть я понимаю, что должен быть некий выбор из справочника, но не понимаю как реализовать. 

Прикрепленные файлы

Нравится

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

Всем добрый день!

Бьюсь второй день. Нужно добавить группу фильтров в разделе с оператором OR.

По умолчанию в коробке в коллекцию фильтров filters добавляются группы через AND, при этом легко добавляется просто одиночный фильтр (например "FilterStatus"). Но вот группа фильтров - уже не работает.

Судя по примеру добавления фильтров "FixedFilter" и "CustomFilter" в коробке продукта - нужно как то хитро определять конфиг этой группы. Я добавляю items в группу, но получается не так, как у Terrasoft. Их исходного кода найти не могу. Помогите, пожалуйста :( Что не так...

getFilters: function() {
 
debugger;
var filters = this.callParent(arguments);
var items = this.$UsrGroups;
let counter = 1;
//создание группы фильтров
var usrFilterGroup = this.Ext.create("Terrasoft.FilterGroup");
usrFilterGroup.logicalOperation = this.Terrasoft.LogicalOperatorType.OR;
//добавление фильтра по каждой группе юзера
for (var item in items) {
	var tempFilterGroup = Terrasoft.createColumnFilterWithParameter(
		Terrasoft.ComparisonType.EQUAL, "Group.Id", item);
	usrFilterGroup.addItem(tempFilterGroup);
	window.console.log("Добавлен фильтр по группе " + item.Name);
	counter++;
}
filters.add("UserGroupsFilter", usrFilterGroup);
return filters;
}

 

Нравится

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

Вам нужно вернуть фильтр с условием User filter или Section filter, так?

 

Если так, то тогда нужно создать две группы, одна группа, которая будет объединять фильтры секции и вторая с вашими фильтрами. В общей группе сделать тип or, в вашей вам нужно. И потов вернуть не filters, а объединяющую группу.

 

var usrSectionFilterGroup = this.Ext.create("Terrasoft.FilterGroup");

usrSectionFilterGroup.logicalOperation = this.Terrasoft.LogicalOperatorType.OR;



usrSectionFilterGroup.add("SectionFilter", filters);

var usrFilterGroup = this.Ext.create("Terrasoft.FilterGroup");

//ваш фильтр

usrSectionFilterGroup.add("UsrFilterGroup", usrFilterGroup);

return usrSectionFilterGroup;

 

 

Трефилов Павел Сергеевич,

Ваш вариант не работает (

Надо добавить фильтр так чтобы он нигде визуально не отображался, остальное не важно.

Помогите разобраться (

 

В ActivitySectionV2 так, и все работает... Тут тоже самое - нет... Каааааак?

getFilters: function() {
 
var filters = this.callParent(arguments);
	var fixedFilters = filters.contains("FixedFilters")	? filters.get("FixedFilters") : null;
	if (!this.Ext.isEmpty(fixedFilters) && fixedFilters.contains("Owner")) {
	var ownerFilters = fixedFilters.get("Owner");
	if (ownerFilters.contains("OwnerDefaultFilter")) {
	ownerFilters.removeByKey("OwnerDefaultFilter");
}
}
if (this.isSchedulerDataView()) {
	if (!filters.contains("ShowInSchedulerFilter")) {
	filters.add("ShowInSchedulerFilter", this.Terrasoft.createColumnFilterWithParameter(
		this.Terrasoft.ComparisonType.EQUAL, "ShowInScheduler", true));
	}
	if (!fixedFilters) {
		fixedFilters = this.Terrasoft.createFilterGroup();
		fixedFilters.logicalOperation = Terrasoft.LogicalOperatorType.AND;
		filters.add("FixedFilters", fixedFilters);
	}
	var hasPeriodFilters = fixedFilters.contains("PeriodFilter");
	var periodFilter = hasPeriodFilters ? fixedFilters.get("PeriodFilter") : null;
	if (!hasPeriodFilters || (periodFilter && !(periodFilter instanceof Terrasoft.Collection))) {
		this.setDateFiltersCurrentDate(fixedFilters);
	}
}
	if (this.isNotSchedulerDataView() &&
		filters.contains("ShowInSchedulerFilter")) {
		filters.removeByKey("ShowInSchedulerFilter");
}
 
filters.add("NotEmailFilter", this.Terrasoft.createColumnFilterWithParameter(
	this.Terrasoft.ComparisonType.NOT_EQUAL, "Type", ConfigurationConstants.Activity.Type.Email
));
 
return filters;
},
 
				/**
				 * ############# ############ ####### ## ####### ### ########## ## ####### ####.
				 * @private
				 * @param {Object} fixedFilters ###### ############ ########.
				 */
setDateFiltersCurrentDate: function(fixedFilters) {
	var now = new Date();
	var periodFilter = this.Terrasoft.createFilterGroup();
	periodFilter.logicalOperation = Terrasoft.LogicalOperatorType.AND;
	periodFilter.add("DueDate", this.Terrasoft.createColumnFilterWithParameter(
	this.Terrasoft.ComparisonType.GREATER_OR_EQUAL, "DueDate",
	this.Terrasoft.startOfDay(now)));
	periodFilter.add("StartDate", this.Terrasoft.createColumnFilterWithParameter(
	this.Terrasoft.ComparisonType.LESS_OR_EQUAL, "StartDate",
	this.Terrasoft.endOfDay(now)));
	if (fixedFilters.contains("PeriodFilter")) {
	fixedFilters.removeByKey("PeriodFilter");
}
fixedFilters.add("PeriodFilter", periodFilter);
},

 

Добрый день, Надежда!



Хочу у вас уточнить, вы проводили отладку вашего кода?

Также мне интересно, что именно у вас представляет $UsrGroups?

Попробовал запустить ваш код, в итоге объект items был undefiend.

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

Добрый день. При добавлении обращения любым способом такая ошибка. Помогите! Что делать? Поддержка игнорит нас((( The INSERT statement conflicted with the FOREIGN KEY constraint "FKHt8lBgKfy2jprTXzDRFvnS56zg". The conflict occurred in database "bpmpredprod", table "dbo.Case", column 'Id'. The statement has been terminated. ---> System.Data.SqlClient.SqlException: The INSERT statement conflicted with the FOREIGN KEY constraint "FKHt8lBgKfy2jprTXzDRFvnS56zg". The conflict occurred in database "bpmpredprod", table "dbo.Case", column 'Id'. The statement has been terminated.

Нравится

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

Уверены, что ошибка именно в коробочном функционале?

Скорее всего есть какая-то доработка на именно вашем сайте (напр. процесс), которая пытается добавить записи на деталь обращения, но подставляет неверный Id записи обращения.

Либо же логика пытается добавить записи на деталь ДО сохранения обращения в БД. Все заполнения деталей возможны только после сохранения основной записи в базу данных.

Уверены, что ошибка именно в коробочном функционале?

Скорее всего есть какая-то доработка на именно вашем сайте (напр. процесс), которая пытается добавить записи на деталь обращения, но подставляет неверный Id записи обращения.

Либо же логика пытается добавить записи на деталь ДО сохранения обращения в БД. Все заполнения деталей возможны только после сохранения основной записи в базу данных.

Владислав Литвинчук,

Ошибка возникла после обновления на версию 7.16.

До этого все работало стабильно. Мне кажется при таком раскладе дело не в логике.

Есть еще какие-то варианты?

Спасибо!

Надежда, это ссылка на Case из таблицы CaseLifecycle. Проверьте, нет ли у Вас  каких-то доработок в этом объекте или его страницах, которые могли сломаться при обновлении. Если нет и сломалось обновление системы без доработок, лучше обратиться к поддержке.

Ещё, если есть доступ к SQL-серверу, можно посмотреть, что за запрос идёт и приводит к ошибке, там какой-то конкретный Guid, с нулями или ещё что-то.

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

Добрый день, Александр!

Доработки ЖЦ были, переопределили схему в нашем пакете: добавлено поле в объект, и добавлено отслеживание изменений этого поля в объекте Case и его запись в ЖЦ. 

Как можно оперативно исправить ошибку? Спасибо за помощь!

Действительно проблемы были из-за доработок событийных процессов объекта Case. В новой версии 7.16 добавилась колонка CaseRecordId в объекте CaseLifeCycle, которая не обрабатывалась у нас.

Всем спасибо!

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