Коллеги, добрый день. Версия 7.15.

 

При компиляции возникли ошибки:

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

Подскажите, пожалуйста, где можно посмотреть логи. Интересуют именно логи компиляции, в какой папке они хранятся.

Нравится

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

Логи хранятся в 

%TEMP_PATH%/Creatio(или bpmonline для ранних версий)/<номер сайта в IIS>

Логи хранятся в 

%TEMP_PATH%/Creatio(или bpmonline для ранних версий)/<номер сайта в IIS>

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

Какие есть способы перенести все схемы из Custom в другой пакет?

Можно ли переименовать пакет "Custom" и создать свой?

или в SQL перенести все схемы в другой пакет?

Нравится

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

Добрый день.

 

Всё зависит от того, в какой версии нужно сделать перенос.

 

До версии 7.15.3 для переноса схем из одного пакета в другой пакет нужно через редактор конфигурации зайти в редактор каждой схемы и изменить пакет, в котором она содержится. 



Начиная с версии 7.15.3 был реализован функционала массового переноса элементов.

 

Относительно переименования пакета 'Custom' в пользовательский - этого не в коем случае нельзя делать, так как данный пакет является системным и зависит от всех остальных пакетов конфигурации.

Добрый день.

 

Всё зависит от того, в какой версии нужно сделать перенос.

 

До версии 7.15.3 для переноса схем из одного пакета в другой пакет нужно через редактор конфигурации зайти в редактор каждой схемы и изменить пакет, в котором она содержится. 



Начиная с версии 7.15.3 был реализован функционала массового переноса элементов.

 

Относительно переименования пакета 'Custom' в пользовательский - этого не в коем случае нельзя делать, так как данный пакет является системным и зависит от всех остальных пакетов конфигурации.

Я бы на месте разработчиков просто очистил бы значение Current package в системных настройках, чтобы новые пользователи осознанно выбирали, а не попадали на известные грабли с переносом из Custom

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

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

Зверев Александр пишет:

я имел в виду - очистить эту настройку в дистрибутиве, который выдаётся клиенту.  

Алла Савельева пишет:

Начиная с версии 7.15.3 был реализован функционала массового переноса элементов.

А где этот функционал описан? И включает ли он в себя перенос данных? 

Владимир Соколов пишет:

очистить эту настройку в дистрибутиве, который выдаётся клиенту.  

В таком случае до её заполнения не получится настраивать систему пользовательскими средствами.

Владимир Соколов пишет:

А где этот функционал описан?

См. тему

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

Последнее сообщение в этой теме в 2020 году, что функциональность ещё не готова до конца

Владимир, если релиза ещё не было, следите за анонсами в описании новых версий.

А вот интересно, этот функционал сможет менять префикс Usr на другой, ведь с таким префиксом даже перенеся в другой пакет будут проблемы скорее всего?

Александр, Вы можете проверить на предварительной версии функциональности, включив её, как описано в этой теме.

Александр Тыра пишет:

А вот интересно, этот функционал сможет менять префикс Usr на другой, ведь с таким префиксом даже перенеся в другой пакет будут проблемы скорее всего?

А какие должны быть проблемы, если используется префикс Usr?  

Префикс Usr у всех одинаковый и в разных системах разными пользователями могли быть внесены разные доработки с одинаковым названием.

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

Привет, 

Версия Creatio - 7.15.2 Sales Marketing

Есть пакет, в нем справочник. Значения этого справочника привязаны к пакету с типом "Установка". Пакет успешно установлен на тестовую среду. 

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

Повторно привязал данные к пакету, однако, не создавал новый объект, хранящий данные, а привязал к существующему. Тип установки остался прежним - установка. 

При установке на тестовую среду столкнулся с тем, что новые данные установились, но старые не обновились.

Использовал документацию https://academy.terrasoft.ru/documents/technic-sdk/7-15/razdel-konfigur…

Какой тип установки нужно использовать, чтобы как добавить новые строки, так и обновить существующие?

Нравится

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

А Force update установили для полей?

А Force update установили для полей?

 

Владимир Соколов пишет:

А Force update установили для полей?

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

Force update помог. Чтобы удалить старые записи, какие должны быть настройки?

через привязку данных в пакет перенести удаление данных нельзя. Можно написать SQL скрипт для удаление ненужных данных и привязать его к пакету. Я так делаю. Либо же ручками удалять везде.

Можно включить деактивизацию записей в справочнике и с Force update переносить значение поля Inactive

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

Есть деталь с набором однотипных boolean-полей. Количество записей, отображаемых в детали, может исчисляться несколькими десятками. Изображение удалено.

Стандартно в Creatio подгрузка новых записей делается через кнопку "Показать больше" внизу детали. Но при большом количестве записей прокрутка списка уводит заголовки столбцов за пределы видимости. В моем примере, как можно видеть, по тексту столбца понять, что за столбец, нереально, а запомнить их порядок наизусть - пользователям неудобно, и их можно понять...



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

В общем, очевидных решений тут два:

1. Зафиксировать заголовки сверху грида и скроллить грид где-то внутри себя.

2. Как-то заменить скроллинг грида - вместо кнопки "Показать больше" сделать постраничное листание списка с номерами страниц и ограниченным количеством записей на каждой странице.



Третье, неочевидное решение -

3. Вывесить всплывающие подсказки на строки грида, чтобы при наведении на столбец всплывало его название. Сошло бы на худой конец.



Проблема в том, что я не знаю, как реализовать любое из этих решений, да и возможно ли реализовать их вообще (версия 7.15). Подскажете?

Нравится

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

Юрий, фиксация заголовков реализована в 7.15.2. Если у Вас 7.15.0, то обновитесь. Но это для основного реестра. Для детали — пока только идея заведена.

Юрий, фиксация заголовков реализована в 7.15.2. Если у Вас 7.15.0, то обновитесь. Но это для основного реестра. Для детали — пока только идея заведена.

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

Доброе время суток!

Друзья help me please 

Столкнулся с ситуацией в которой необходимо выполнить следующие действия:

- есть родительская заявка, которая создает дочернюю;

-при определенном условии дочерняя ставится на паузу с указанием причины паузы (в моем случае эта причина - ожидания оплаты счета);

- в этой же дочерней заявке происходит обновления по статусу счета после отработки сервиса и вот тут самое интересное - мне нужно дочернюю заявку закрыть (те финализировать) и в родительской перешагнуть на следующий этап тех карты. Если делать по дочерний заявке в сервисе (по обновлению статуса счета) обновления: 

статуса,

причины паузы,

по завершению активности (активность создается в момент запроса оплаты счета и в ответ сервис присылает статус по счету),

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

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

Так вот вопрос: как мне отловить эту загружаемую страницу, чтоб в нее подать данные кодом в сервисе? Может есть примеры?

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

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

Нравится

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

Андрей, насколько понимаю, вся описанная логика взаимодействия с заявками реализована в одном большом самодельном БП. Почему бы тогда не использовать стандартные механизмы генерации и обработки сообщений и сигналов?

Если знаете, как это выполнить в интерфейсе, можете проанализировать уходящие запросы: какой веб-сервис в итоге вызывает нужные действия.

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

На скриншоте вижу настройку кейсов с выделенным элементом создания задачи.

Если нужно более сложную логику при переходе на эту стадию, можно вместо этого добавить элемент-подпроцесс, где реализовать нужное поведение.

Спасибо ? вам за идею)))

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

Добрый день, столкнулся с проблемой преобразования sql запроса через Select.BuildSqlText. Вылетает NullReferenceException при попытке выстроить такой запрос:

 

with UpStructure (Id, Name, UsrHoldingId, UsrSPRId, UsrChainId, TypeId) as (
	select Id,
		Name,
		UsrHoldingId, 
		UsrSPRId, 
		UsrChainId,
		TypeId
	from [TerrasoftDB].[dbo].[Account]
	where Id = @srcId
 
	union all
 
	select up.Id,
		up.Name,
		up.UsrHoldingId, 
		up.UsrSPRId, 
		up.UsrChainId,
		up.TypeId
	from [TerrasoftDB].[dbo].[Account] as up
	inner join UpStructure as down 
	on up.Id in (down.UsrHoldingId, down.UsrSPRId, down.UsrChainId)
),
 
FullStructure (Id, Name, UsrHoldingId, UsrSPRId, UsrChainId, TypeId) as (
	select Id,
		Name,
		UsrHoldingId, 
		UsrSPRId, 
		UsrChainId,
		TypeId
	from [TerrasoftDB].[dbo].[Account]
	where Id = (select Id from UpStructure
				where UsrHoldingId is null
				and UsrSPRId is null
				and UsrChainId is null)
 
	union all
 
	select down.Id,
		down.Name,
		down.UsrHoldingId, 
		down.UsrSPRId, 
		down.UsrChainId,
		down.TypeId
	from [TerrasoftDB].[dbo].[Account] as down
	inner join FullStructure as up 
	on up.Id in (down.UsrHoldingId, down.UsrSPRId, down.UsrChainId)
)
 
select * from FullStructure

кусок C# кода:

 

        public async Task<Dictionary<Guid, List<UsrAccountTypeEntityCode>>> GetAccountStructure(Guid guid, string sqlScriptName)
        {
            if (guid == Guid.Empty)
                throw new ArgumentNullException(nameof(guid));
 
            var declareString = "declare @srcId uniqueidentifier \r\n" +
                $"set @srcId = '{guid}';\r\n";
            var sql = System.IO.File.ReadAllText("GetStructure.sql"); //debbug
 
            var sb = new StringBuilder(declareString);
            sb.Append(sql);
 
            var select = new Select(UserConnection);
            select.BuildSqlText(sb);
            ...
        }

NullReferenceException где-то глубоко при вызове this.DBEngine.BuildQuerySqlText(sb, this) в классе Select

Нравится

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

Добрый день.

Рекомендую вам использовать CustomQuery вместо Select. Это вам больше подойдет, судя по вашему запросу.

Добрый день.

Рекомендую вам использовать CustomQuery вместо Select. Это вам больше подойдет, судя по вашему запросу.

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

Добрый день!

Добавил кнопки в DataGrid, но они выбиваются из общего стиля, как это можно исправить?



Код с добавлением кнопки в DataGrid

diff: [{

                    operation: "merge",

                    name: "DataGrid",

                    values: {

                        className: "Terrasoft.ConfigurationGrid",

                        generator: "ConfigurationGridGenerator.generatePartial",

                        generateControlsConfig: { bindTo: "generateActiveRowControlsConfig" },

                        changeRow: { bindTo: "changeRow" },

                        unSelectRow: { bindTo: "unSelectRow" },

                        onGridClick: { bindTo: "onGridClick" },                     

                        activeRowActions: [{

                                className: "Terrasoft.Button",

                                style:this.Terrasoft.controls.ButtonEnums.style.GREEN,

                                markerValue: "CallAction",

                                tag: "CallAction",

                                caption: "\u2706"

                        }],

                        initActiveRowKeyMap: { bindTo: "initActiveRowKeyMap" },

                        activeRowAction: { bindTo: "onActiveRowAction" }

                    }}]

Вот их отображение

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

Нравится

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

Сергей, у оригинальных трёх кнопок стиль прозрачный и показывается заранее созданная картинка. См. в ProductDetailV2:

{
	"operation": "merge",
	"name": "DataGrid",
	"values": {
		"className": "Terrasoft.ConfigurationGrid",
		"generator": "ConfigurationGridGenerator.generatePartial",
		"generateControlsConfig": {bindTo: "generateActiveRowControlsConfig"},
		"multiSelect": {"bindTo": "MultiSelect"},
		"changeRow": {"bindTo": "changeRow"},
		"selectRow": {"bindTo": "createEditRow"},
		"unSelectRow": {"bindTo": "unSelectRow"},
		"onGridClick": {"bindTo": "onGridClick"},
		"activeRowActions": [
			{
				"className": "Terrasoft.Button",
				"style": Terrasoft.controls.ButtonEnums.style.TRANSPARENT,
				"tag": "save",
				"markerValue": "save",
				"imageConfig": {"bindTo": "Resources.Images.SaveIcon"}
			},
			{
				"className": "Terrasoft.Button",
				"style": Terrasoft.controls.ButtonEnums.style.TRANSPARENT,
				"tag": "cancel",
				"markerValue": "cancel",
				"imageConfig": {"bindTo": "Resources.Images.CancelIcon"}
			},
			{
				"className": "Terrasoft.Button",
				"style": Terrasoft.controls.ButtonEnums.style.TRANSPARENT,
				"tag": "remove",
				"markerValue": "remove",
				"imageConfig": {"bindTo": "Resources.Images.RemoveIcon"}
			}
		],
		"listedZebra": true,
		"initActiveRowKeyMap": {"bindTo": "initActiveRowKeyMap"},
		"activeRowAction": {"bindTo": "onActiveRowAction"}
	}
},

Сами картинки, видимо, из BaseConfigurationGridRow, где они добавлены в дизайнере в левом блоке.

Зверев Александр пишет:

Сергей, у оригинальных трёх кнопок стиль прозрачный и показывается заранее созданная картинка. См. в ProductDetailV2:


 
{
	"operation": "merge",
	"name": "DataGrid",
	"values": {
		"className": "Terrasoft.ConfigurationGrid",
		"generator": "ConfigurationGridGenerator.generatePartial",
		"generateControlsConfig": {bindTo: "generateActiveRowControlsConfig"},
		"multiSelect": {"bindTo": "MultiSelect"},
		"changeRow": {"bindTo": "changeRow"},
		"selectRow": {"bindTo": "createEditRow"},
		"unSelectRow": {"bindTo": "unSelectRow"},
		"onGridClick": {"bindTo": "onGridClick"},
		"activeRowActions": [
			{
				"className": "Terrasoft.Button",
				"style": Terrasoft.controls.ButtonEnums.style.TRANSPARENT,
				"tag": "save",
				"markerValue": "save",
				"imageConfig": {"bindTo": "Resources.Images.SaveIcon"}
			},
			{
				"className": "Terrasoft.Button",
				"style": Terrasoft.controls.ButtonEnums.style.TRANSPARENT,
				"tag": "cancel",
				"markerValue": "cancel",
				"imageConfig": {"bindTo": "Resources.Images.CancelIcon"}
			},
			{
				"className": "Terrasoft.Button",
				"style": Terrasoft.controls.ButtonEnums.style.TRANSPARENT,
				"tag": "remove",
				"markerValue": "remove",
				"imageConfig": {"bindTo": "Resources.Images.RemoveIcon"}
			}
		],
		"listedZebra": true,
		"initActiveRowKeyMap": {"bindTo": "initActiveRowKeyMap"},
		"activeRowAction": {"bindTo": "onActiveRowAction"}
	}
},

Сами картинки, видимо, из BaseConfigurationGridRow, где они добавлены в дизайнере в левом блоке.

 

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

На самом деле мой код выглядит так, просто я не добавил выше код базовых кнопок что бы показать суть проблемы :

...
activeRowActions: [{  
    // Моя кнопка,
    // Код кнопок из вашего ответа
}],
...

Если бы кнопка была не в гриде, тогда проблема со стилями не возникает, но такой вариант не подходит, так как мои кнопки находятся в activeRowActions

{
					operation: "insert",
					name: "InfoButton",
					parentName: "ActionButtonsContainer",
					propertyName: "items",
					values: {
						click: { bindTo: "onButtonClick"},
						itemType: this.Terrasoft.ViewItemType.BUTTON,
						style: this.Terrasoft.controls.ButtonEnums.style.GREEN,
						hint: { bindTo: "showHint" },
						caption: "\u29C9",
					},
				},

 

Нет никакого стиля базовых кнопок, это три картинки.

Показать все комментарии
var usrConn = Get<UserConnection>("UserConnection");
var timeNow = DateTime.Now;
var ESQ = new EntitySchemaQuery(usrConn.EntitySchemaManager, "TemporaryRole");
ESQ.AddAllSchemaColumns();
ESQ.Filters.Add(ESQ.CreateFilterWithParameters(FilterComparisonType.GreaterOrEqual, "EndDate", timeNow));
var expiredRoles = ESQ.GetEntityCollection(usrConn);
foreach (var expiredRole in expiredRoles) {
 
	var unitInRoleId = expiredRole.GetTypedColumnValue<Guid>("UnitInRoleId");
 
	Set<Guid>("UnitInRoleIdLast", unitInRoleId);
 
	var uirESQ = new EntitySchemaQuery(usrConn.EntitySchemaManager, "SysUserInRole");
 
	uirESQ.AddAllSchemaColumns();
	uirESQ.Filters.Add(uirESQ.CreateFilterWithParameters(FilterComparisonType.Equal, "Id", unitInRoleId));
	var expiredUsersInRoles = uirESQ.GetEntityCollection(usrConn);
	foreach(var expiredUserInRole in expiredUsersInRoles)
	{
		var schema = usrConn.EntitySchemaManager.GetInstanceByName("SysUserInRole");
		var entity = schema.CreateEntity(usrConn);
		if (entity.FetchFromDB(expiredUserInRole.PrimaryColumnValue)) {	
			entity.Delete();
		}
	}
}
return true;

Есть код для удаления записей в таблице SysUserInRole. После отработки никаких ошибок не возникает, но записи не удаляются.

Нравится

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

Пробывал разные варианты и filterMethod и lookupListConfig с указанием нужного поля, но для редактируемого реестра не заводится, каким еще способом можно отфильтровать записи справочного поля в детали с редактируемым реестром при создании или же изменении записи на детали?

Нравится

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

Добрый вечер.

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

Проблема решена при помощи переопредления метода:

getGridRowViewModelConfig: function(config) {

                var result = this.callParent(arguments);

                if (result && result.rowConfig && result.rowConfig.Contact) {

                    result.rowConfig.Contact.lookupListConfig = {

                        "filters": [

                            function() {

                                var vendor = this.get("Vendor");

                                var filterGroup = Ext.create("Terrasoft.FilterGroup");

                                if (vendor && vendor.value) {

                                    filterGroup.add("Account",

                                        Terrasoft.createColumnFilterWithParameter(

                                            Terrasoft.ComparisonType.EQUAL, "[AccountInVendor:Account:Account].Vendor", vendor.value));

                                } else {

                                    filterGroup.add("Empty", Terrasoft.createColumnIsNullFilter("Id"));

                                }

                                

                

                                return filterGroup;

                            }

                        ]

                    };

                }

                return result;

            },

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

Добрый день, Друзья!

 

Прошу помочь с одним вопросам!

Такая ситуация, компания на 2 страны.

Загрузили список инфо контактов (клиентов) кому были выданы карты дисконтные  в базу, и после загрузки все эти карты должны были активироваться и также автоматом  бонусы упасть определенные.

Но этого не произошло, данные все сели, а вот карты не активировались.

До этого все контакты садились также и активировались.

Может кто то знающий поможет.

Спасибо за ответ!

Нравится

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

Асу, о каких картах речь? В Studio нет такого раздела. Вы используете продукт Loyalty от Samarasoft, Consimple или Banza?

Или это свои разработки?

Если это продукт от компании-партнёра, по конкретным моментам его использования лучше будет уточнить у них в службе поддержки. Либо самостоятельно анализировать логику, какой отдельный или встроенный в объект БП производит активацию карт и почему в этом случае он не сработал.

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