Привет.

Как использовать события таблицы Журнала изменений(ЖИ) как начальных событий для запуска БП?

Известно что это идут таблицы которые не имеют своего в Entity ORM, с названием - "Sys[TableName]Log" и специальным атрибутом в метаданных таблицы - "TS.EntitySchema.Kind=TrackChangesInDB;".

Тут два пути как я вижу: 
1. "Как-то" сделать  Entity из уже существующей таблицы ЖИ в БД. Но как? 
2. Сделать логирование на ново созданную таблицу логирования через Entity. Вариант крайне не желателен, потому как добавления каждого нового поля для логирования будет гемором.

Нравится

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

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

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

Добрый день

 

Поставлен следующий кейс. Надо в системе регистрировать запросы польхователей на предоставление полномочий в ИС (например, 1С). При этом мы являемся корпорацией. Полномочия раздаются только в Москве. Запросы из регионов могу поступать напрямую и через представителей ИТ на местах. Требование 1. получить отчет кому когда какие полномочия были предоставлены. 2. получить отчет кем и как менялись полномочия у пользователя.

Теперь рассмотрим самый сложный кейс. Представитель ИТ в регионе дает заявку на подключение 5ти пользователей. 

Сейчас это происходит так:

С ходу вижу 2 решения:

1. применить принцип 1 обращение = один пользователь. Добавить требуемые поля/справочники как в таблице.

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

 

В первом случае получаем сложность регистрации - это надо 5 обращений создать и обработать. Можно и настроить копирование заявки. Во втором случае получаем сложность в формировании отчета. Просто реестр раздела уже не настроить

А еще может быть доступ не к одной БД, а ко многим сразу.

Вот теперь думаю на какой путь встать. Какие еще пути вы предложите в решение данного кейса? Ну и какой будет лучше?

Нравится

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

Я бы делал отдельно.

Так как для каждого пользователя выделение прав может пойти разными путями - одному сразу можно сделать, по второму надо уточнить, по третьему - невозможно и т.п. В итоге, придется думать насчёт статусов по каждому пользователю, что усложняет логику.

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

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

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

Нравится

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

Игорь, добрый день.

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

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

Доброго дня.

Очень нужна помощь в настройке отчета FastReport. Делаю первый раз и пока не очень то получается.

Почему FastReport - потому что надо PDF и расширений покупать не будем. Имеем отчет по одной записи. Т.е. провайдер данных нам всегда будет только 1 строку. Табличных данных нет. Только текст заключение. Надо при установке галочек в Creatio вывести на печать локализируемые строки соответствующие этим галочкам. В запросе настроили и данные и локализируемые строки. Все данные приходят - это видно по отладчику. 

Теперь делаем форму. Вот она. Красным выделено 5 строк которые соответствуют 5ти галочкам. Они называются в отчете Text_Stop0#

в коде отчета в FastReport пишем :

    private void ReportTitle1_BeforePrint(object sender, EventArgs e)
    {
      if (!((Boolean)Report.GetColumnValue("EPMAccountChk.EPMStop_01")))
      {
        Text_Stop01.Visible=false;      
      }
      if (!((Boolean)Report.GetColumnValue("EPMAccountChk.EPMStop_02")))
      {
        Text_Stop02.Visible=false;   
      }
      if (!((Boolean)Report.GetColumnValue("EPMAccountChk.EPMStop_03")))
      {
        Text_Stop03.Visible=false;    
      }
      if (!((Boolean)Report.GetColumnValue("EPMAccountChk.EPMStop_04")))
      {
        Text_Stop04.Visible=false;                    
      }
      if (!((Boolean)Report.GetColumnValue("EPMAccountChk.EPMStop_05")))
      {
        Text_Stop05.Visible=false;    
      }
    }    

Т.е. если галочка не стоит, то скрываем это поле.

Если стоят все галочки, то печатаем все. Это отлично работает

Но вот если оставляем только одну строку, то беда. Остается пустое место от других строк. 

 

Как его убрать и поднять все строки, что ниже? Это еще не конец отчета и будет еще строки.

Также пробовал через блэнд Data. Привязывал его и LocalizableStrings и к своей схеме, но почему в этом случае вообще ничего не выводится. 

Нравится

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

Попробуйте добавить не как отдельные поля, а в таблицу FastReport, и для её строк установите параметр AutoSize=true

Попробуйте добавить не как отдельные поля, а в таблицу FastReport, и для её строк установите параметр AutoSize=true

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

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

 

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

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

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

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