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

Столкнулся с такой проблемой.

Устанавливаю пакет через CLIO - выдает ошибки - https://prnt.sc/tqkuyw

В чем может быть проблема?

Версия системы 7.16.2.1600 

 

Или может быть создать пакет в системе, вытянуть его через clio конвертировать в пакет-проект, написать нужный функционал и затем задеплоить обратно? 

Нравится

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

так же при выполнении команды clio install-gate -e dev выдает ошибки - https://prnt.sc/tqnh3s

Алексей, по первому скриншоту, похоже, дело в файловой системе Вашего ПК, не может получить доступ к определённой папке.

 

По второму, у Вас как-то получилось вместо названия объекта «7.16.2», что делать нельзя, названия должны быть с латинскими буквами и без точек. Возможно, при оформлении перепутали с версией.

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

Странно как то получается создаю новый пакет Test и сразу  пушу его в систему и выдает такое - 

https://prnt.sc/tr3etj. Тут ну никак и нигде не задается имя 7.16.

Помимо всего даже когда устанавливаю пакет через интерфейс Creatio такая же ошибка. Из-за чего так получается есть предположение?

Если и через интерфейс такое же, то тем более, дело в самом пакете. Сравните с теми, которые ставятся нормально, может, что-то перепутано в полях? Вы создали пакет командой к clio?

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

"Вы создали пакет командой к clio?" - пакет Test да. 

 

Просто создали так?

Creating new package

To create new package project, use the next command:

 clio new-pkg <PACKAGE_NAME>

you can set reference on local core assembly with using Creatio file design mode with command in Pkg directory

 clio new-pkg <PACKAGE_NAME> -r bin

Может, что-то делали с версией?

Set package version

Set a specified package version into descriptor.json by specified package path.

clio set-pkg-version <PACKAGE PATH> -v <PACKAGE VERSION>

 

Вообще, не видя создавшегося пакета, сложно  сказать, что в нём не так.

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

просто clio new-pkg <PACKAGE_NAME>

Значит, смотреть внутрь пакета, где там упоминается «7.16.2». А падает только при установке на конкретный Ваш сайт? А если ставить на демку, то то же самое?

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

Устанавливал созданный пакет через clio на облачный дев, через интерфейс системы, стал без ошибок.

 

Значит, всё же дело не в пакете, а в сайте, куда его ставили? Может, версии отличаются?

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

версия сайта 7.16.2.1600, при создании пакета через clio задушить не получается, а вот при выгрузке из системы и конвертации, а потом пишите, то получилось...ещё те танцы с бубном))), но перед этим пришлось переустановить сайт.

Теперь бы разобраться как вызывать классы из данного пакета в других схемах конфигурации)

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

  Всем доброго времени суток! Подскажите, возможно ли использовать анонимный ws в качестве веб-хука, например для Telegram-bot?

Благодарю.

Нравится

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

Алексей, по поводу веб-хуков см. в этом обсуждении. Там упоминаются готовые примеры в системе и сторонних дополнениях.

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

Всем доброго времени суток! Столкнулся с такой проблемой. При добавлении БП в раздел "съезжает" ранее добавленная кнопка - https://prnt.sc/tn9xut.

Как с этим бороться?

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

Нравится

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

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

Вадим Косарев,

	diff: /**SCHEMA_DIFF*/[
			{
				"operation": "insert",
				"parentName": "ActionButtonsContainer",
				"propertyName": "items",
				"name": "SimpleInfoButton",
				"values": {
					"layout": { "column": 1, "row": 6, "colSpan": 1},
					"itemType": Terrasoft.ViewItemType.INFORMATION_BUTTON,
					"content": { "bindTo": "Resources.Strings.InfoButtonCaption" }
				}
			}
		]/**SCHEMA_DIFF*/,

 

Алексей, процессы открывает кнопка ProcessRunButton. Она реализована в BaseDataView (базовой схеме раздела) кодом:

{
	"operation": "insert",
	"name": "ProcessRunButton",
	"parentName": "SeparateModeActionButtonsContainer",
	"propertyName": "items",
	"values": {
		"itemType": Terrasoft.ViewItemType.BUTTON,
		"caption": {"bindTo": "Resources.Strings.RunProsessButtonCaption"},
		"imageConfig": {"bindTo": "Resources.Images.ProcessButtonImage"},
		"iconAlign": Terrasoft.controls.ButtonEnums.iconAlign.LEFT,
		"classes": {
			"imageClass": ["t-btn-image left-12px t-btn-image-left proc-btn-img-top"],
			"textClass": ["t-btn-text t-btn-left actions-button-margin-right"]
		},
		"menu": {"items": {"bindTo": "getFilteredBySectionProcesses"}},
		"visible": {"bindTo": "getIsRunProcessButtonVisible"}
	}
},

В отличие от Вашего элемента, она входит в SeparateModeActionButtonsContainer, а уже тот —в ActionButtonsContainer:

{
	"operation": "insert",
	"name": "SeparateModeActionButtonsContainer",
	"parentName": "ActionButtonsContainer",
	"propertyName": "items",
	"values": {
		"itemType": Terrasoft.ViewItemType.CONTAINER,
		"visible": {
			"bindTo": "IsCardVisible",
			"bindConfig": {
				"converter": function(value) {
					return !value;
				}
			}
		},
		"wrapClass": ["separate-action-buttons-container-wrapClass"],
		"items": []
	}
},

Возможно, Ваша кнопка с учётом иерархии контейнеров не там, где должна была находиться? Или дело в «"layout": { "column": 1, "row": 6, "colSpan": 1}», ведь нумерация идёт с нуля и 1 — это уже второй, с учётом видимой кнопки процессов?

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

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

Кто нибудь пробовал уже разрабатывать на системе ориентированной под linux?

Как там происходит разработка в ФС и отладка серверного кода, как подсоединятся к процессу и т.д., в общем весь тот процесс, что делаем на Windows?

Благодарю!

Нравится

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

Насколько понимаю, в версии на .NET Core, которая используется под Linux, сейчас возможности разработки ограничены. Там даже нет раздела «Конфигурация»:

Большинство инструментов разработки и кастомизации уже поддерживают работу на платформе .NET Core. Реализована поддержка Low-code инструментов: дизайнера процессов, мастера раздела, мастера деталей и мастера мобильного приложения.

Также поддерживают работу на платформе утилиты командной строки, которые помогают разрабатывать и автоматизировать процессы разработки: WorkspaceConsole, clio.

В процессе разработки поддержка раздела [Конфигурация]. Планируется также поддержка дизайнера объектов. Сейчас разработка этими инструментами может происходить на Windows, изменения, сделанные этими инструментами, переносятся пакетами на Linux.

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

Всем доброго времени суток. Кто нибудь сталкивался с разработкой пользовательского виджета в аналитике. Не могу разобраться, как реализовать в виде списка? У меня есть ХП которая возвращает нужный результат. 

Можете скинуть пару примеров?

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

Нравится

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

Добрый вечер, Алексей.

 

Результат хранимой процедуры возвращайте в представление, например:

 

CREATE FUNCTION [dbo].[tsf_PathReportData]()
RETURNS @ExaminationBlocksByObject TABLE (
		[Number] nvarchar(50),
		[ExaminationId] uniqueidentifier,
		[ObjectId] uniqueidentifier,
		[MacroscopicDescription] nvarchar(max),
		[BlocksDescription] nvarchar(max))
AS
BEGIN
 
	DECLARE
		@Number nvarchar(50),
		@ExaminationId uniqueidentifier,
		@ObjectId uniqueidentifier,
		@MacroscopicDescription nvarchar(max),
		@BlocksDescription nvarchar(max)
 
	DECLARE ExaminationDetailCursor CURSOR STATIC LOCAL FOR
	SELECT
			O.Number,
			O.MacroscopicDescription,
			O.ExaminationId,
			O.Id as ObjectId
	FROM ABExaminationObject O
 
	OPEN ExaminationDetailCursor
 
	FETCH NEXT FROM ExaminationDetailCursor INTO @Number, @MacroscopicDescription, @ExaminationId, @ObjectId
 
	WHILE @@FETCH_STATUS = 0 BEGIN
 
		SET @BlocksDescription = ''
 
		SELECT @BlocksDescription = @BlocksDescription + B.Number + ' ' + B.[Description] + CHAR(13) + CHAR(10)
		FROM ABExaminationBlock B
		WHERE B.ExaminationObjectId = @ObjectId
 
		INSERT INTO @ExaminationBlocksByObject (
			Number,
			ExaminationId,
			ObjectId,
			MacroscopicDescription,
			BlocksDescription
		)
		VALUES (
			@Number,
			@ExaminationId,
			@ObjectId,
			@MacroscopicDescription,
			@BlocksDescription)
 
		FETCH NEXT FROM ExaminationDetailCursor INTO @Number, @MacroscopicDescription, @ExaminationId, @ObjectId
 
	END 
 
	CLOSE ExaminationDetailCursor 
	DEALLOCATE ExaminationDetailCursor
 
	RETURN
 
END
 
 
create view VwExaminationReport
as
select
	newid() as Id,
	Number as Number,
	MacroscopicDescription as MacroscopicDescription,
	ExaminationId as Examination,
	BlocksDescription as BlocksDescription
from [tsf_PathReportData]()

На основании этого представления создайте схему таблицы-представления в конфигурации и используйте этот объект в стандартном элементе итогов 'Список'.

Алла Савельева,

добрый! Мне в ХП нужно передавать параметры даты из фильтров, на сколько я знаю, то представление нельзя сделать с принимаемыми параметрами.

CREATE PROCEDURE [dbo].[absp_GetProductAnalyticByZone] @startDate varchar(10), @stopDate varchar(10)
AS
SELECT 
	T.Segment [Segment], 
	ROUND(SUM(T.[AvgRevenue]), 2, 1) [AvgRevenue],
	SUM(T.[SalesCount]) [SalesCount],	
	ROUND(SUM(T.[CPA]), 2, 1) [CPA],	
	SUM(T.[SumCtr]) [SumCtr],	
	ROUND(SUM(T.[ROAS]), 2, 1) [ROAS]
FROM
	(SELECT 
		[IABZ].[Date],
		[IABZ].ZoneId,
		[IZ].Segment,
		SUM([IABZ].Ctr) [SumCtr],
		SALES_QUERY.SalesCount [SalesCount],
		SALES_QUERY.AvgRevenue [AvgRevenue],
		IIF(SALES_QUERY.SalesCount = 0 , 0,([CpcCost].[AdsCost]/SALES_QUERY.SalesCount))[CPA],
		(SALES_QUERY.SalesCount * SALES_QUERY.AvgRevenue / [CpcCost].[AdsCost]) * 100 [ROAS],
		[CpcCost].[AdsCost]
 
	FROM [InsurerAnalyticByZone] [IABZ] WITH(NOLOCK)
	LEFT OUTER JOIN [InsurerZone] [IZ] WITH(NOLOCK) ON [IABZ].ZoneId = [IZ].Id
	INNER JOIN [CpcCost] [CpcCost] WITH(NOLOCK) ON [IABZ].[Date] = [CpcCost].[Date]
	OUTER APPLY (SELECT COUNT([I].[Id]) [SalesCount],
						AVG([I].[Revenue]) [AvgRevenue]
					FROM [AbInsurance] [I] WITH(NOLOCK) 
					INNER JOIN [CityByEwa] [CBE] WITH(NOLOCK) ON [I].EwaCityId = [CBE].Id
					WHERE [I].StatusId = '195CD1AD-37B3-4F0A-B4FC-70E2BF0B3F06' 
					AND [CBE].ZoneCode = [IZ].Code 
					AND CONVERT(varchar(10), [I].CreatedAt, 120) = [IABZ].[Date]
				) SALES_QUERY
	GROUP BY [IABZ].ZoneId, [IZ].Segment, [IABZ].[Date],  [IZ].Code, [CpcCost].AdsCost, SALES_QUERY.SalesCount, SALES_QUERY.AvgRevenue	
	) AS T
WHERE T.[Date] BETWEEN @startDate AND @stopDate
GROUP BY T.ZoneId, T.Segment
 
UNION ALL 
 
SELECT 
[CBE].[Name] [Segment],
[R].[AvgRevenue] [AvgRevenue],
COUNT([I].[Id]) [SalesCount],
SUM(IIF(R.[Count] = 0, 0, [CpcCost].[AdsCost]/R.[Count])) [CPA],
 0 [SumCtr],
ROUND(SUM((R.[Count] * R.[AvgRevenue]) / [CpcCost].[AdsCost]) * 100, 2, 1) [ROAS]
FROM [AbInsurance] [I] WITH(NOLOCK) 
INNER JOIN [CityByEwa] [CBE] WITH(NOLOCK) ON [I].EwaCityId = [CBE].Id AND [CBE].Id = '9a008f3a-f865-4e74-b1f2-530f54711f2b'
INNER JOIN [CpcCost] [CpcCost] WITH(NOLOCK) ON CONVERT(varchar(10), [I].CreatedAt, 120) = [CpcCost].[Date]
OUTER APPLY ( SELECT COUNT([I].Id) [Count],
						AVG([I].[Revenue]) [AvgRevenue]
				FROM [AbInsurance] [I] WITH(NOLOCK) 
				INNER JOIN [CityByEwa] [CBE] WITH(NOLOCK) ON [I].EwaCityId = [CBE].Id AND [CBE].Id = '9a008f3a-f865-4e74-b1f2-530f54711f2b'
				INNER JOIN [CpcCost] [CpcCost] WITH(NOLOCK) ON CONVERT(varchar(10), [I].CreatedAt, 120) = [CpcCost].[Date]
				WHERE [I].StatusId = '195CD1AD-37B3-4F0A-B4FC-70E2BF0B3F06' AND CONVERT(varchar(10), [I].CreatedAt, 120) BETWEEN @startDate AND @stopDate
) R
WHERE [I].StatusId = '195CD1AD-37B3-4F0A-B4FC-70E2BF0B3F06' AND CONVERT(varchar(10), [I].CreatedAt, 120) BETWEEN @startDate AND @stopDate
GROUP BY [CBE].[Name], [R].[AvgRevenue]

вот моя ХП, возвращает мне нужную информацию

Нигрескул Алексей,

А если попробовать реализовать Ваш виджет, как наследник от базового списка итогов?

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

В чем суть архитектурного подхода micro frontend? За счет чего micro frontend позволяет быстро меняться, создавать независимые части приложения и быть командам более автономными? На эти вопросы отвечает Владислав Куварзин, Technical Leader компании Terrasoft, в своем тренинге для разработчиков. Язык видео - русский.

 

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

Нравится

Поделиться

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

Практика построения 12-факторных микросервисних приложений - фантастика или реальность? Тренинг для разработчиков о том, как эта философия может быть применена к реальному бизнес приложению. Спикер -Александр Бондаренко, Technical Leader компании Terrasoft. Язык видео - русский.

 

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

Нравится

Поделиться

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

Всем доброго времени суток. Подскажите есть ли возможность у bpm'online интегрироваться с RabbitMQ, а именно подписываться на сообщения?

Благодарю.

Нравится

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

Как минимум, в механизме глобального поиска он используется. Нужно смотреть документацию по этому ПО, как устроены стандартные библиотеки для взаимодействия с ним, есть ли они под JS и C# и можно ли ими воспользоваться в конфигурации bpm'online.

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