Добрый день! 

Столкнулся с проблемой - на портале у кастомной детали нет кнопки добавления записи. Удалось выяснить что метод "getEditPages" возвращает пустую коллекцию. Метод "getEditPages" связан с entityStructure в ModuleUtils.js. В entityStructure нет нужного объекта. Думаю причина в этом, но не понимаю почему структура объекта не загружается в модуль.

Кто нибудь сталкивался с данной проблемой? 

Нравится

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

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

Надеюсь кому то поможет.

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

Коллеги, замечено что для сервиса Exchange Listener необходим доступ в интернет, при его отсутствии статус сервиса на kubernetes становится ImagePullBackOff , как можно обойти эту проблему  использую exchangelistener-0.8.15

Нравится

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

Игорь Юрьевич, здравствуйте! 

 

Если я правильно понял, то вы имеете ввиду, что перезапускаете сервис, но из-за ограничения интернета, сервис падает в состояние ImagePullBackOff. 

 

Для решения проблемы вам необходимо обновить сервис на более новый. 

 

Начиная с версии 0.8.22 pullPolicy для образов изменена на IfNotPresent, и если образ будет закеширован во всех нодах kubernetes перезапуск\масштабирование\разворачивание сервиса не будет требовать доступа к docker hub. Если образа нет, то необходимо открыть доступ или перенести образ вручную на каждую ноду kubernetes.

 

Актуальная версия сервиса - 0.8.39.

Скачать можно на Академии - https://academy.terrasoft.ru/docs/user/ustanovka_i_administrirovanie/ra…

 

Хорошего дня!

Вильшанский Дмитрий

использовал 0.8.15

что понимается под  => если образ будет закеширован во всех нодах kubernetes, поясните пожалуйста 

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

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

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

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

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

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

 

Нравится

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

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

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

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

Spasibo!

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

Добрый день!

Есть чистая установка Studio 7.17.4.2265

После нажатия кнопки "Компилировать" получаю ошибкуИзображение удалено.

В логах:

2021-04-20 18:06:02,170 [116] INFO IIS APPPOOL\174 Build BuildInternalNetStandard - WorkspaceCompiler.Build started at 00:00:04.2261178

2021-04-20 18:06:02,170 [116] INFO IIS APPPOOL\174 Build BuildInternalNetStandard - OldUI = False

2021-04-20 18:06:02,170 [116] INFO IIS APPPOOL\174 Build BuildInternalNetStandard - NetStandardCompatibilityMode = True

2021-04-20 18:06:02,580 [71] INFO IIS APPPOOL\174 Build CaptureOutput - Microsoft (R) Build Engine óÑαß¿¿ 16.7.2+b60ddb6f4 ñ½∩ .NET

2021-04-20 18:06:02,580 [71] INFO IIS APPPOOL\174 Build CaptureOutput - (C) è«α»«αᵿ∩ îá⌐¬α«ß«ΣΓ (Microsoft Corporation). éßÑ »αáóá ºáΘ¿ΘÑ¡δ.

2021-04-20 18:06:05,838 [71] INFO IIS APPPOOL\174 Build CaptureOutput -   Ä»αÑñѽѡ¿Ñ »α«Ñ¬Γ«ó ñ½∩ ó«ßßΓá¡«ó½Ñ¡¿∩...

2021-04-20 18:06:06,068 [71] INFO IIS APPPOOL\174 Build CaptureOutput -   éßÑ »α«Ñ¬Γδ «í¡«ó½Ñ¡δ ñ½∩ ó«ßßΓá¡«ó½Ñ¡¿∩.

2021-04-20 18:06:07,489 [71] INFO IIS APPPOOL\174 Build CaptureOutput - C:\Program Files\dotnet\sdk\3.1.408\Microsoft.Common.CurrentVersion.targets(1177,5): error MSB3644: ¡Ñ ¡á⌐ñÑ¡δ ßß佫τ¡δÑ ßí«α¬¿ ñ½∩ .NETFramework,Version=v4.7.2. ùΓ«íδ πßΓαá¡¿Γ∞ φΓπ »α«í½Ñ¼π, πßΓá¡«ó¿ΓÑ »á¬ÑΓ αáºαáí«Γτ¿¬á (»á¬ÑΓ SDK ¿½¿ »á¬ÑΓ ¡áµÑ½¿óá¡¿∩) ñ½∩ φΓ«⌐ óÑαß¿¿ »½áΓΣ«α¼δ ¿½¿ »ÑαÑ¡áµÑ½∞ΓÑ »α¿½«ªÑ¡¿Ñ. Åá¬ÑΓδ αáºαáí«Γτ¿¬á ñ½∩ »½áΓΣ«α¼δ .NET Framework ¼«ª¡« ߬áτáΓ∞ ¡á ßΓαá¡¿µÑ https://aka.ms/msbuild/developerpacks. [C:\inetpub\wwwroot\DEF174\Terrasoft.WebApp\Terrasoft.Configuration\Terrasoft.Configuration.Dev.csproj]

2021-04-20 18:06:07,506 [71] INFO IIS APPPOOL\174 Build CaptureOutput - ÄΦ¿í¬á ßí«α¬¿.

2021-04-20 18:06:07,506 [71] INFO IIS APPPOOL\174 Build CaptureOutput -     ÅαÑñπ»αѪñÑ¡¿⌐: 0

2021-04-20 18:06:07,506 [71] INFO IIS APPPOOL\174 Build CaptureOutput -     ÄΦ¿í«¬: 1

2021-04-20 18:06:07,506 [71] INFO IIS APPPOOL\174 Build CaptureOutput - Åα«Φ½« óαѼѡ¿ 00:00:04.84

2021-04-20 18:06:07,550 [116] INFO IIS APPPOOL\174 Build BuildInternalNetStandard - WorkspaceCompiler.Build finished at 00:00:09.6052291

2021-04-20 18:06:07,550 [116] INFO IIS APPPOOL\174 Build BuildInternalNetStandard - Время компиляции: 00:00:09.6057857

 

Windows 10 Pro 1909, + SQL2016SP2

.NET Framework 4.8 (528040)

.NET Framework 4.8 Developer Pack

.NET Core 3.1 SDK (v3.1.408)

Понизить версию Framework нельзя, так как она идет вместе с версией виндовс.

 

Что делать?

Нравится

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

Такое бывает когда Creatio не распознает .net 4.7.2 если стоит 4.8. Удаляйте 4.8 и ставьте 4.7.2

Я же писал выше, что понизить версию нельзя.

Для Windows 10 Pro сборка 1909, штатная версия Framework 4.8 (528040). Переустанавливать винду не получится, ибо корпоративный стандарт.

Добрый день. 

 

Да, в новых сборках Windws предустановлен Framework 4.8. Но, можно дополнительно установить рекомендуемый фреймворк .Net 4.7.2 из документации. Это должно помочь в Вашем случае. Дополнительно, можно по инструкции из документации проверить компоненты Windows. 

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

Добрый день.

В приложении 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);
			}
		}
	};
});

 

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

Есть ли возможность добавления/импорта pdf файла в выбранный объект системы

Нравится

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

Создайте поле с типом Двоичные данные и кладите в него файл.

 

Добрый день! Не могли бы Вы подробнее описать процесс добавления pdf файла в (допустим разделе контакты/ вкладке основная информация). Не очень понимаю как создать поле с типом данных двоичный код. Заранее спасибо за ответ!

Тимур Макаев,

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

Как вызывать из JS я знаю, но тут понадобилось вызвать из C#

Нравится

4 комментария
var property = "PropertyValue";				
ProcessSchema schema = SystemUserConnection.ProcessSchemaManager.GetInstanceByName("ProcessName");
				bool canUseFlowEngine = ProcessSchemaManager.GetCanUseFlowEngine(UserConnection, schema);
				if(canUseFlowEngine) {
					var flowEngine = new FlowEngine(UserConnection);
					var param = new Dictionary<string, string>();
					param["Property"] = property;
					flowEngine.RunProcess(schema, param);
				} else {
					Process process = schema.CreateProcess(UserConnection);
					process.SetPropertyValue("Property", property);
					process.Execute(UserConnection);
				}

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

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

Добрый день!

Подскажите почему возникает ошибка.

Pavel Litvinovich,

уточните, какая именно ошибка возникает, если навести на подчёрнутый участок кода? Что происходит при попытке скомпилировать этот код?

Олег Нефедьев,

Спасибо! Уже разобрался.

 

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

Как кодом пишется фильтр "содержит"? Такой как на скриншотеИзображение удалено.

Чаше всего используется фильтр 

var esqFirstFilter = esq.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL, "Country.Name", "Испания");

а как написать "содержит"?

если можно, то с примером на той же Испании и на JS и на C#

Спасибо

Нравится

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

Terrasoft.ComparisonType.CONTAIN - содержит

Terrasoft.ComparisonType.START_WITH - начинается на

Terrasoft.ComparisonType.CONTAIN - содержит

Terrasoft.ComparisonType.START_WITH - начинается на

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

Благодарю

Карабаева Марина,

Добрый день.

Уточните, что Вы имеете в виду? Этот фильтр применяется для EntitySchemaQuery при формировании запроса. Более детально по ссылке.

Mykhailo Storozhuk,

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

Mykhailo Storozhuk, Михаил, могли бы помочь мне в данном вопросе?

Карабаева Марина,

Вам необходимо изменить значение по умолчанию системной настройки 

StringColumnSearchComparisonType на 1. Если я Вас правильно понял, то эта сис настройка должна для всех быстрых фильтров в системе применять логику поиска "Содержит".

Mykhailo Storozhuk,

спасибо за помощь!

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

Всем доброго дня.

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

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

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

Нравится

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

Я делал автонумерацию через процесс на объекте. Триггер на срабатываение кода - после добавления записи или после удаления.

 

Код следующий, на сколько тут все хорошо не знаю, но вроде работает. Ручное переименование можно запретить, либо добавить "стрелочки" с перетаскиванием позиции вверх-вниз на клиенте.

 

using System.Linq;
 
public virtual void RunNumeration()
        {
            string parentEnityName = "UsrParent"; //Колонка с родителем, например Invoice для объекта InvoiceProduct
            var esq = new EntitySchemaQuery(UserConnection.EntitySchemaManager, Entity.Schema.Name);
            var positionNumberColumn = esq.AddColumn("UsrPositionNumber").Name; //колонка с номером по порядку
            esq.AddAllSchemaColumns();
            if (parentEnityName.IsNotNullOrEmpty())
            {
                Guid parentEnityId = Entity.GetTypedColumnValue<Guid>(parentEnityName+"Id");
                if (parentEnityId != Guid.Empty)
                {
                    esq.Filters.Add(esq.CreateFilterWithParameters(FilterComparisonType.Equal, parentEnityName, parentEnityId));
                    var entityProductsCollection = esq.GetEntityCollection(UserConnection)
		            .OrderBy(x => x.GetTypedColumnValue<int>(positionNumberColumn) == 0)
		            .ThenBy(x => x.GetTypedColumnValue<int>(positionNumberColumn));
		            int newNumber = 0;
		            foreach (var item in entityProductsCollection)
		            {
		                int number = item.GetTypedColumnValue<int>(positionNumberColumn);
		                newNumber++;
		                if (number != newNumber)
		                {
		                    item.SetColumnValue("UsrPositionNumber", newNumber);
		                    item.Save();
		                }
		            }
                }
            }
        }

 

Я делал автонумерацию через процесс на объекте. Триггер на срабатываение кода - после добавления записи или после удаления.

 

Код следующий, на сколько тут все хорошо не знаю, но вроде работает. Ручное переименование можно запретить, либо добавить "стрелочки" с перетаскиванием позиции вверх-вниз на клиенте.

 

using System.Linq;
 
public virtual void RunNumeration()
        {
            string parentEnityName = "UsrParent"; //Колонка с родителем, например Invoice для объекта InvoiceProduct
            var esq = new EntitySchemaQuery(UserConnection.EntitySchemaManager, Entity.Schema.Name);
            var positionNumberColumn = esq.AddColumn("UsrPositionNumber").Name; //колонка с номером по порядку
            esq.AddAllSchemaColumns();
            if (parentEnityName.IsNotNullOrEmpty())
            {
                Guid parentEnityId = Entity.GetTypedColumnValue<Guid>(parentEnityName+"Id");
                if (parentEnityId != Guid.Empty)
                {
                    esq.Filters.Add(esq.CreateFilterWithParameters(FilterComparisonType.Equal, parentEnityName, parentEnityId));
                    var entityProductsCollection = esq.GetEntityCollection(UserConnection)
		            .OrderBy(x => x.GetTypedColumnValue<int>(positionNumberColumn) == 0)
		            .ThenBy(x => x.GetTypedColumnValue<int>(positionNumberColumn));
		            int newNumber = 0;
		            foreach (var item in entityProductsCollection)
		            {
		                int number = item.GetTypedColumnValue<int>(positionNumberColumn);
		                newNumber++;
		                if (number != newNumber)
		                {
		                    item.SetColumnValue("UsrPositionNumber", newNumber);
		                    item.Save();
		                }
		            }
                }
            }
        }

 

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

 

спасибо, отлично работает с вашим кодом)

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

Добрый день!

 

Подскажите, пожалуйста, совместимо ли решение Copy detail records с платформой под Linux (.Net Core)?

Возможно ли данное решение адаптировать под .Net Core? 

 

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

 

Нравится

7 комментариев

Наталья, добрый день!

 

решение разрабатывалось и тестировалось на платформе .Net Framework. Направила запрос ответственной команде по поводу совместимости с .Net Core.

Наталья, добрый день!

 

получила обратную связь от ответственной команды, что решение не совместимо с .Net Core. Планов по добавлению совместимости с .Net Core нет, поскольку в базовом продукте разработан механизм для копирования деталей. Этот механизм предусмотрен для разработчиков. В планах публикация статьи по этому механизму на Академии.

Лазоренко Ирина,

 Подскажите, пожалуйста, в какой версии платформы есть уже разработанный механизм копирования деталей? С помощью каких механизмов можно копировать записи деталей вместе с основной записью?

Наталья, добрый день.

 

Механизм был разработан начиная с версии 7.17.0. Применение для своих данных требует навыков разработчика. Более детально будет предоставлено описание в статье на Академии.

Ирина, добрый день

 

Просьба скинуть ссылку на статью Академии.

Если статья отсутствует, то сообщить сроки публикации статьи.

 

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

Наталья, добрый день! Статья еще в процессе подготовки. Предварительные сроки публикации - вторая половина сентября.

Никита, здравствуйте! уточните продукт Creatio и его версию, на котором пробовали настроить. Также обратите внимание, что решение не совместимо с платформой .Net Core.

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