Пожалуйста подскажите, как поменять названия вместо "Новая запись" подставить имя контакта в преднастроенной странице.

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

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

Нравится

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

Ислам Ибрагимжанов, добрый день!

Вы можете изменить заголовок преднастроенной страницы провалившись в дизайнер самой страницы.

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

Подробнее тут.

Sorotiuk Anna,

В первых двух я не смогу так провалится, у меня старая версия 7.13 в ней вы сразу попадает в страницу редактирования. А второй способ, не совсем подходит, потому, что у меня по прежнему на верху остаётся надпись "Новая запись". А должно быть имя контакта. Как мне решить эту проблему?

Ислам Ибрагимжанов,

Можете уточнить версию целиком?

Проверила на 7.13.3 - заголовок изменяется.

Sorotiuk Anna, 7.13.4.638 вот версия. Как вы изменяли и заголовок меняется? Подскажите

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

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

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

Допустим, у нас есть раздел "Продажи" и n-ное число записей. Пользователь отмечен ответственным за определенное число этих записей. Как теперь можно средствами БП настроить права доступа к записям, которые уже были созданы? 

Как вариант предложили БП по настройке прав доступа по добавлению новой или редактированию существующей записи. А возможно ли как-нибудь пройтись БП по существующим записям без их редактирования?

Нравится

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

Доброе утро.

 

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

Доброе утро.

 

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

Благодарю!

Единственное, что там ограничение в 5000 экземпляров подпроцесса. Так что, если продаж больше, то придётся разделять на несколько запусков

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

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

Нравится

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

Здравствуйте.

 

Такую функциональность можно разработать с помощью настройки прав доступа на записи в бизнес-процессе.

 

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

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

возможно ли провести процесс раздачи доступа к уже созданным записям ? Т.е. процесс пробежался бы по всем записям, как запрос "update" и определил доступы.

Арнур Келгенбаев,

Арнур, здравствуйте, можно организовать Вашу задачу в виде бизнес-процесса, который вычитывает коллекцию записей по фильтру, затем  последовательно передаёт записи в подпроцесс, и применяет элемент "Изменить права доступа" на каждый элемент коллекции.

 

Детальнее:

https://academy.terrasoft.ru/docs/user/biznes_processy/nastrojka_proces…

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

Доброго времени суток. Имею проблему. Нужно в преднастроенной странице в деталь карты поставить кнопку для активной записи детали. Кнопку "Заблокировать карту"Изображение удалено.

Попробовал из статьи туттут, и тут  , но никак не появляется кнопка. Подскажите как мне реализовать данную задачу? Она работает по другому? То есть в обычной детали появляется, а в преднастроенной странице не появляется. Я отыскал все ответы в комьюнити. Но у меня не появляется кнопка.  Прощу помощи. Спасибо.

Нравится

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

Ислам Ибрагимжанов,

Уточните, пожалуйста, вам необходимо добавить кнопку на детали или на странице редактирования?

Если на детали, то diff необходимо изменять в схеме BankCardDetailV2.

 

 Здраствуйте!

Для решения задачи в блок diff схемы детали необходимо добавить код кнопки:

{

        "operation": "merge",

        "name": "DataGrid",

        "values": {

                "activeRowAction": {"bindTo": "onActiveRowAction"},

                "activeRowActions": [

                        {

                                "className": "Terrasoft.Button",

                                "style":this.Terrasoft.controls.ButtonEnums.style.BLUE,

                                "markerValue": "myButtonAction",

                                "tag": "myAction",

                                "caption": "MyButton"

                        }

                ]

        }

}

Согласно реализации описанной в статье: https://community.terrasoft.ru/questions/dobavit-dopolnitelnuyu-knopku-…

По результату при клике на запись детали у вас отобразится кнопка  "MyButton":



Опишите, пожалуйста,  детальнее на каком этапе реализации возникла трудность.

Алёна Доля,

Я делаю по аналогии то, что вы мне скинули. У меня возникли некоторые сомнения, то что в преднастроенной странице деталь работает как-то иным способом, нежели в обычных страницах?  Для наглядности могу скинуть код моей страницы:

Вот результат, нет кнопки( 

Ислам Ибрагимжанов,

Уточните, пожалуйста, вам необходимо добавить кнопку на детали или на странице редактирования?

Если на детали, то diff необходимо изменять в схеме BankCardDetailV2.

 

Алёна Доля,У меня есть страница, которая вызывается работой бизнес процессе преднастроенная страница  и на этой странице я показываю деталь и к этой детали мне нужно сделать вышеуказанную логику. Если я добавлю в деталь логику кнопки через схему детали , то она(кнопка) будет показываться везде, а мне нужно чтобы конкретно на этой странице редактирования показывалась. Надеюсь стало понятно.

Ислам Ибрагимжанов,

Я попробовал изменять и в diff схеме детали BankCardDetailV2, но так же не появилась кнопка. 

Алёна Доля,

Спасибо разобрался. Действительно нужно было в странице делати писать. 

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

Доброго времени суток. Имею пробелму. Нужно в преднастроенной странице в деталь карты поставить кнопку для активной записи детали. Кнопку "Заблокировать карту"

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

Попробовал из статьи тут, тут, и тут  , но никак не появляется кнопка. Подскажите как мне реализовать данную задачу? Я отыскал все ответы в комьюнити. Но у меня не появляется кнопка.  Прощу помощи. Спасибо. 

Нравится

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

Ислам, добрый день!

Реализация в этом примере рабочая.

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

Привожу пример своей реализации:

define("Schemae4042f8dDetail", [], function() {
	return {
		entitySchemaName: "NewTestDetail",
		details: /**SCHEMA_DETAILS*/{}/**SCHEMA_DETAILS*/,
		diff: /**SCHEMA_DIFF*/[
			{
        "operation": "merge",
        "name": "DataGrid",
        "values": {
                "activeRowAction": {"bindTo": "onActiveRowAction"},
                "activeRowActions": [
                        {
                                "className": "Terrasoft.Button",
                                "style":this.Terrasoft.controls.ButtonEnums.style.BLUE,
                                "markerValue": "myButtonAction",
                                "tag": "myAction",
                                "caption": "MyButton"
                        }
                ]
        }
}
		]/**SCHEMA_DIFF*/,
		methods: {
			onActiveRowAction: function(buttonTag, primaryColumnValue) {
                if (buttonTag === "myAction") {
                        // весь код ниже можно убрать, он демонстрирует, что значения
                        // primaryColumnValue и activeRowId равны
                        var activeRow = this.getActiveRow();
                        var activeRowId = activeRow.get("Id");
                        console.log(primaryColumnValue);
                        console.log(activeRowId);
                        // дальше Ваша реализация
                }
        },
		}
	};
});

 

У меня таким образом

В DIFF

 

		"operation": "merge",
        "name": "DataGrid",
        "values": {
                "activeRowAction": {"bindTo": "onActiveRowAction"},
                // "onButtoClick": {"bindTo": "Alert"},
                "activeRowActions": [
                        {
                                "className": "Terrasoft.Button",
                                "style":this.Terrasoft.controls.ButtonEnums.style.GREEN,
                                "markerValue": "myButtonAction",
                                "tag": "Delete",
                                "caption": "Delete",
 
                        }
                ]
        }



И не забыть добавить в LocalizableString

"Delete"



В методах

 

			onActiveRowAction: function(buttonTag, primaryColumnValue) {
                if (buttonTag === "Delete") {
                          this.Delete();  // нужная функция
 			                }
        },

 

 

Oleg, у меня с таким же способом не срабаытывает почему-то( Все так же как вы описали, но не появляется кнопка.

Oleg,

 

И не забыть добавить в LocalizableString

"Delete" 

Не достаточно того, что вы написали в Caption название? Я вот этот пункт не сделал, не добавлял в LocalizableString.

Добавить комментарий

Ислам Ибрагимжанов,

Попробуйте :)

 

Не срабатывает, прощу помочь. Кто сталкивался ?

Oleg,

не отработало.

Ислам, добрый день!

Реализация в этом примере рабочая.

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

Привожу пример своей реализации:

define("Schemae4042f8dDetail", [], function() {
	return {
		entitySchemaName: "NewTestDetail",
		details: /**SCHEMA_DETAILS*/{}/**SCHEMA_DETAILS*/,
		diff: /**SCHEMA_DIFF*/[
			{
        "operation": "merge",
        "name": "DataGrid",
        "values": {
                "activeRowAction": {"bindTo": "onActiveRowAction"},
                "activeRowActions": [
                        {
                                "className": "Terrasoft.Button",
                                "style":this.Terrasoft.controls.ButtonEnums.style.BLUE,
                                "markerValue": "myButtonAction",
                                "tag": "myAction",
                                "caption": "MyButton"
                        }
                ]
        }
}
		]/**SCHEMA_DIFF*/,
		methods: {
			onActiveRowAction: function(buttonTag, primaryColumnValue) {
                if (buttonTag === "myAction") {
                        // весь код ниже можно убрать, он демонстрирует, что значения
                        // primaryColumnValue и activeRowId равны
                        var activeRow = this.getActiveRow();
                        var activeRowId = activeRow.get("Id");
                        console.log(primaryColumnValue);
                        console.log(activeRowId);
                        // дальше Ваша реализация
                }
        },
		}
	};
});

 

Дима Вовченко,

Благодарю, так все понятней.

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

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

Следующий код создания нового экземпляра Entity возвращает Null.

EntitySchema contractSchema = UserConnection.EntitySchemaManager.GetInstanceByName("Contract");

            Entity contract = contractSchema.CreateEntity(UserConnection);

            Guid guid = Guid.NewGuid();

            contract.SetDefColumnValues();

            contract.SetColumnValue("Id", guid);

Раньше такого не было. 

При попытке задать значение полей выдает ошибку "Ссылка на объект не указывает на экземпляр объекта.".

из за чего поведение кода могло измениться?

Спасибо за ранее!

Нравится

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

Здравствуйте!

 

Где именно располагается данный пример кода? В бизнес-процессе, в веб-сервисе или в каком-то другом месте?

Что в стеке вызовов исключения?

Подозреваю, что проблема в UserConnection. Видимо, данная переменная не инициализирована.

Михаил Назыров,

Здравствуйте, этот код находится в исходном коде клиента внешнего веб-сервиса.

 

Стек:

в Terrasoft.Configuration.Hmb.ContactIntegration.HmbGetDepositsInfoRs.CreateContract(HmbGetDepositsInfoRsResponse result, Contract contract, Contact contact)

в Terrasoft.Configuration.Hmb.ContactIntegration.HmbGetDepositsInfoRs.SendRequest(HmbGetDepositsInfoRsRequest request)

в Terrasoft.Configuration.Hmb.ContactIntegration.HmbGetDepositsInfoRs.GetClientDeposits(Guid ContactId)

в Terrasoft.Configuration.Custom.TestService.Start() в SyncInvokeStart(Object , Object[] , Object[] )

в System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(Object instance, Object[] inputs, Object[]& outputs)

в System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc& rpc)

в System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(MessageRpc& rpc)

в System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage11(MessageRpc& rpc)

в System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet)

 

Насчет UserConnection: Оно инициализируется сразу конструктором и используется до возникновения ошибки несколько раз.

public partial class HmbGetDepositsInfoRs

    {

          ........

          private readonly UserConnection UserConnection;

          public HmbGetDepositsInfoRs(UserConnection userConn)

        {

                UserConnection = userConn;

        }

         ........

}

Добрый день

Такое ощущение, что у пользователя (того, кто стоит за UserConnection) нет прав на создание записей в объекте Contract

Артем Гура,

это супервизор. На всякий случай проверил, права есть

Rahimberdiyev Mirzohid Muhammadjon o'g'li,

Добрый день



1) Попробуйте отладить Ваш код и дополнительно проверить UserConnection. За ним должен стоять пользователь с правами админа и с доступом на операции по типу CanManageSolution и тд. 

2) Также рекомендую проверить логи приложения на наличие ошибок. 

3) + провести дополнительную генерацию и компиляцию.

4) Проверить будут ли создаваться другие объекты кроме Contract.



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

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

Здравствуйте.

 

Пытаюсь из событийного процесса таблицы вызвать БП. Из C# скрипта.

 

ProcessSchema schema = UserConnection.ProcessSchemaManager.GetInstanceByName("RNProductsUnavailableForOrder");
				Process process = schema.CreateProcess(UserConnection);
				process.Execute(UserConnection);

Процесс запускается и висит в выполнении. Т.е. состояние процесса в журнале - "Выполняется".

В процессе только старт и стоп. Ничего больше нет. Уже три раза его пересоздавал. Висит в выполнении и всё! Ничего больше не происходит. Ни ошибок, ни действий, ни трассировки... ничего.



Что может быть?



Спасибо!

Нравится

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

Попробуй так:

public static void MethodName(UserConnection userConnection)
		{
			userConnection.ProcessEngine.ProcessExecutor.Execute("ProcessName");
		}

 

Pavel Litvinovich,

Здравствуйте.

Попробую.

Сейчас заработало вот так:

ProcessSchema schema = UserConnection.ProcessSchemaManager.GetInstanceByName("RNProductsUnavailableForOrder");
//Разные движки для интерпритируемых и компилироуемых БП
bool canUseFlowEngine = ProcessSchemaManager.GetCanUseFlowEngine(UserConnection, schema);
if(canUseFlowEngine) 
{
	var flowEngine = new FlowEngine(UserConnection);
	var param = new Dictionary<string, string>();
	param["Lead"] = "Test";
	flowEngine.RunProcess(schema, param);
}
else 
{
	Process process = schema.CreateProcess(UserConnection);
	process.SetPropertyValue("Lead", "Test");
	process.Execute(UserConnection);
}

Я находил такой пример на форуме, но у меня он вызывал ошибку и я пошёл искать дальше. А надо было ковырять ошубку, которую он вызывал.

Спасибо ещё раз!

Всё заработало.

Slovarik,

У Вас тоже через flowEngine запускаются процессы новосозданные? У меня в 7.18.2 новые процессы только через flowEngine запускаются, и код ругается что данные способ будет скоро удален из системы, используйте новый (тот что у Вас в примере в начале). Не знаете почему новые процессы работают на старом ядре ?

Александр Тыра,

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



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

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

Всем привет.

Версия 7.13.3.481.

 

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

 

http://localhost:7010/0/Nui/ViewModule.aspx#CardModuleV2/CommercialOfferEditPage/edit/24c9ca0d-748c-4a8b-85bb-e82dca7df06e

 

он работает через 

 

http://localhost:7010/0/Nui/ViewModule.aspx#/CommercialOfferEditPage/ed…

 

Из-за этого возникают проблемы с его открытием например из детали другого раздела или из новой вкладки. Страница открывается пустой.

Причём, если подставить в URL CardModuleV2, то всё открывается отлично.

 

Подскажите пожалуйста, как настроить нормальное открытие карточки раздела?

 

Спасибо!

Нравится

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

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

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

Литвинко Павел,

Спасибо, попробую. 

Модуль, который подставляется в ссылку определяется в таблице SysModule в поле CardModuleUId

Чтобы страница открывалась через CardModuleV2, надо вставить его Id в CardModuleUId



Id для CardModuleV2 можно получить следующим образом:



SELECT [UId]

FROM SysSchema 

WHERE [Name] = 'CardModuleV2'



Схожая проблема в обсуждении:

https://community.terrasoft.ru/questions/giperssylki-na-polzovatelskikh….

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

Здравствуйте, помогите решить задачу, пожалуйста,

На странице редактирования выведены 2 поля: Оценка (число), Оценка традиционная (Справочник).

Справочник традиционная оценка содержит колонки Название (например Удовлетворительно), Балл от (напр. 50), Балл до (напр. 69).

Как сделать так, чтобы после ввода числового значения X в поле Оценка на странице редактирования, сравнивалось значение числа по справочнику [Балл от] < X < [Балл до], и затем в справочном поле Оценка традиционная заполнялось Id найденного значения?

Хотелось бы это сделать не процессом после сохранения и закрытия карточки, а именно на странице редактирования после изменения поля.

Колонки:

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

Справочник:

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

Нравится

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

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

attributes: {
	"UsrRatingLookup": {
		dependencies: [
			{
				columns: ["UsrRating"],
				methodName: "setRatingLookup"
			}
		]
	},
},
 
methods: {
	setRatingLookup: function() {
			var esq = this.Ext.create("Terrasoft.EntitySchemaQuery", {
				rootSchemaName: "UsrRatingLookup"
			});
esq.addColumn("Id");
			esq.addColumn("Name");
			var esqIdFilter = esq.createColumnFilterWithParameter(this.Terrasoft.ComparisonType.GREATER_OR_EQUAL, "UsrRatingMin", this.$UsrRating);
			esq.filters.add("esqFilter", esqIdFilter);
			var esqIdFilter2 = esq.createColumnFilterWithParameter(this.Terrasoft.ComparisonType.LESS_OR_EQUAL, "UsrRatingMax", this.$UsrRating);
			esq.filters.add("esqFilter2", esqIdFilter2);
			esq.getEntityCollection(function (result) {
				if(result.success &amp;&amp; result.collection.collection.items.length&gt;0) {
					this.set("UsrRatingLookup", {value: result.collection.collection.get(0).get("Id"), displayValue: result.collection.collection.get(0).get("Name")});
				}
			}, this);
	},
}

 

Доброе утро.

 

Вам нужно Ваше поле сделать вычисляемым. Посмотрите на Академии пример, как это можно сделать, по ссылке.

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

Добрый день!

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

Для время входа подтягиваем данные из профиля пользователя - деталь "Сеансы" - колонка "Начало сеанса".

При тесте отчета обнаружилось, что данные в колонке "Начало сеанса" перезаписываются после 12:00 по Алматы. 

С чем это может быть связано?

 

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

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

Нравится

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

Добрый день, Гулим.

Проверьте нет ли у вас каких-то не базовых триггеров в БД на таблице SysUserSession, и в целом посмотрите на неё модифицируются ли колонки ModifiedOn, ModifiedById. 

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