Коллеги, Добрый день.

 

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

 

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

 

Нравится

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

Насколько я помню вам в таблицу EntityConnection. Там находятся связи между объектом-колонкой. Остаётся удалить ненужные

Варфоломеев Данила, а как можно удалить если объект в предустановленном пакете? 

Смолина Екатерина Михайловна,

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

Максим Цынгаев пишет:

вот только тут надо определить, какие именно строки надо удалять

записи в таблице EntityConnection имеют id 49BAB763-74C9-4AE7-9EEA-499D6C2F815A и F41CCA80-B81A-46F6-B120-0C03D50FFCC7 для "Документа" и "Заказа" соответственно.

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

Добрый день.



Можно ли как то задавать значения по умолчанию для полей в мобильном приложении?

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



Можно ли такое сделать и если можно, то как?

Нравится

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

Добрый день.



Для того, чтобы задать значение по умолчанию для поля при создании записи, можно использовать SDK модели:



Terrasoft.sdk.Model.setDefaultValuesFunc("НазваниеМодели", function(config) {

    var myValue = "Мобильное приложение";

    config.record.set("НазваниеКолонки", myValue);

    Ext.callback(config.success, config.scope);

});



Скрыть колонку тоже можно. Теперь используем SDK страницы:



Terrasoft.sdk.RecordPage.addColumn("НазваниеМодели", {

    name: "НазваниеКолонки", // название колонки как в объекте

    position: 0,

    hidden: true // Здесь скрывается колонка

}, "primaryColumnSet");



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



Больше примеров можете найти в пакете Mobile в схемах MobileActivityModelConfig и MobileActivityModuleConfig соответственно.

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

Добрый день.

Столкнулись со следующей проблемой:

Есть объект заявка, при создании этого объекта запускается бизнес процесс "Обработать заявку". Заявка может быть создана и со стороны основного приложения, с потрала и с мобильного клиента. 

Проблема в том, когда заявка создается от пользователя с ролью "Все пользователи портала" (т.е. от пользователя с очень ограниченными правами), то и Бизнес процесс запускается под этим пользователем. И процесс перестает работать на шаге создания активности:

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



После того как скачали текст ошибки и изучил исходники - выяснилось, что портальному пользователю не хватает прав на объект ActivityParticipantRole. После того как были выданы права на этот объект, появилась ошибка, что прав не хватает уже на объект "ActivityParticipant". Дальше права не стали выдавать (т.к. есть опасения что придется выдавать очень много).

Пока мы видим 3 решения этой проблемы: 

а) Последовательно выдавать пользователям портала права на все необходимые объекты - видится что это не самый правильный вариант решения проблемы, но рабочий.

б) Переделать архитектуру процесса, так чтобы только пользователи основного приложения запускали процесс обработки заявки.

в) Всегда запускать процесс от конкретного пользователя (если такое возможно).





Собственно вопросы:

1) Есть ли еще какие нибудь варианты решения и как "правильно" решить данную проблему?

2) Можно ли запускать процесс от конкретного пользователя?

 

Нравится

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

По пунктам:

а) Действительно рабочий, но куча проблем оттестировать этот момент.

б) Я бы переделал весь процесс и выборки/изменения/удаления делал через C# скрипт, пользуясь UserConnection.AppConnection.SystemUserConnection

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

Добрый день. Вот тоже столкнулся с проблемой. Что за пункт 6? 

Что то сайт совсем поломался, процитировать не могу.



По поводу "Я бы переделал весь процесс и выборки/изменения/удаления делал через C# скрипт, пользуясь UserConnection.AppConnection.SystemUserConnection" - наш процесс не маленький, по этому такая переделка будет очень трудоемкой, возможно даже более трудоемкой чем выдача прав.



Придумали еще 1 вариант, это запускать процессы по новым заявкам по таймеру (например раз в 1, 5 или 10 минут получать все заявки по которым еще не запущен процесс и запускать)

Габбазов Искандер Рустемович,

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

Евгений. В журнале процессов это все можно увидеть

Габбазов Искандер Рустемович,

В журнале процесса, есть ход выполнения процесса. А то что данный процесс был выполнен для заявки 1 нет. При таком же подходе, активности будут открываться вновь и вновь.

А, вопрос про то запущен процесс уже или нет? Так можно поле флаг создать. Например когда процесс по заявке стартует, сразу заполняем это поле флаг. А для запуска ищем все заявки у которых этот флаг не отмечен.

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

Добрый день.

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

  1. Рядом с пакетами подрядчика в списке пакетов стоит "замочек". Что означает этот замочек? Можем ли мы редактировать такие пакеты?
  2. Пакет подрядчика включает в себя бизнес-процессы и скрипт на C#. Если нам необходимо отредактировать, например, скрипт на C#, то каким образом это лучше сделать? Редактировать пакет подрядчика? Как я понимаю, создать свой пакет с замещением скрипта на C# или бизнес-процесса нельзя?

Заранее спасибо за ответы.

Нравится

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

Игорь, этот пакет, судя по всему, установлен из SVN. Если вы не имеете доступа к этому SVN, то попросите подрядчика отдать вам исходные коды в виде архива (ну, либо скопировать утилитами SVN-to-SVN). Далее вы поднимите свой собственный SVN, поменяете настройки репозитория и тогда сможете работать с этими пакетами, как со своими собственными.

Другой вариант, договориться с подрядчиком о предоставлении вам доступа к этому SVN и пользоваться им для внесения правок в пакет.

Создать пакет с "замещением" C# - нельзя, но вы можете описать данный класс как partial и дорабатывать его. Правда это несет дополнительные проблемы. Можно также создать "наследника" исходного класса и использовать уже его в новой логике.

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

Здравствуйте, Игорь!

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

 

Обратитесь к подрядчику с данными вопросами для поиска оптимальных путей решения Вашей потребности.

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

Всем добрый день!

Опишу проблему, с которой столкнулись.

Имеется БП, который стартует после создания кастомного объекта. Объект может создаваться как в основном приложении, так и через портал. БП в обоих случаях используется один и тот же.

В случае когда БП запускается после создания объекта с основного приложения, все отрабатывает.

Но если объект был создан на портале, то и БП запускается от пользователя портала. У пользователя портала очень урезаны права, поэтому в БП некорректно создаются активности. Подозреваю, что недостаточно прав на какие-то базовые объекты.

Видится такое решение, что если БП запускать от другого пользователя с другим набором прав, то функционал должен отработать.

Коллеги ,вопрос к вам, можно ли это осуществить (БП запускать от другого пользователя)? Или может быть какие-то другие решения посоветуете.

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

Нравится

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

Здравствуйте, Николай!

По пунктам:

а) Действительно рабочий, но куча проблем оттестировать этот момент.

б) Я бы переделал весь процесс и выборки/изменения/удаления делал через C# скрипт, пользуясь UserConnection.AppConnection.SystemUserConnection

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

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

Добрый день.

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

Например:

Категория задачи/активности "Заявка"

Шаг "Проверить наличие товаров" Результат "В наличии", "Отсутствует"

Далее в зависимости от результата - переход на следующую стадию

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

Как поправить?

Ниже скриншоты.

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

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

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

Нравится

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

Возможно ли сделать это?

Добрый день!

1. Добавить новую категорию для типа Задача.

2. Добавить результат, привязать к категории.

3. Почистить кэш.

так и делал, кроме

3. Почистить кэш.



как это сделать в облаке?

:-D

3. Почистить кэш.

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

Кстати все заработало, спасибо.

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

Всем привет, нет физического доступа к серверу с MSsql.

Можно ли просматривать таблицы, через "Управление Конфигурацией" ?

 

Нравится

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

Это оно?

Втупляет не подецки, так и должно быть?

Добрый день.

Для выполнения произвольных запросов можете воспользоваться продуктом "SQL Executor for bpm’online".

https://marketplace.terrasoft.ru/app/pt-sql-executor-bpmonline

"Втупляет" на каком моменте?

Если при выполнении запросов, то наверное это вопрос к запросу.

Толмачев Дмитрий Юрьевич,

 

select * from SysEntitySchemaReference - 30-40сек

Добрый день!

Единственный способ - использовать SQL Executor. Указанная таблица хранит все связи объектов, в связи с чем данный запрос может выполняться достаточно долго. По вопросу быстродействия лучше обратиться к разработчикам решения - support@samarasoft.com

Последовский Роман,

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

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

Коллеги.

Подскажите пожалуйста.

Как пользователю с ролью "пользователь услуги" показывать такой же интерфейс обращения как и пользователю с ролью "портальный пользователь"?

Конечно же для, других ролей интерфейс должен быть полным.

Нравится

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

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

Система не позволит выполнить указанную Вами настройку, только для пользователей, входящих в роль "Все пользователи портала" доступен портал и весь его интерфейс.

Любой пользователь в один момент времени может быть либо портальным, либо системным, и тем и другим он не может быть по определению, соответственно и интерфейс не может быть одновременно представлен.

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

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

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

Подскажите, как реализовать следующий таск в гриде детали есть есть текстовое поле которое необходимо сделать гиперссылкой -  http://prntscr.com/hm7pnf

реализовал следующие методы:

getExternalURLLink: function() {
				return this.getLink(this.get("Number"));
			},
			onExternalLinkClick: function() {
				debugger;
				var value = this.get("Number");
				!Ext.isEmpty(value) && window.open(value, "_blank");
				return false;
			},
			getLink: function(value) {
				if (Terrasoft.isUrl(value)) {
					return {
						url: value,
						caption: value
					};
				}
			}
		},

Вопрос в следующем, как привязать данные ф-ции к нужному полю?

Код детали приведен ниже:

define("ScCoinCommunicationDetail", ["ConfigurationGrid", "ConfigurationGridGenerator",
	"ConfigurationGridUtilities"], function() {
	return {
		entitySchemaName: "ScMeansOfCommunication",
		attributes: {
			"IsEditable": {
				dataValueType: Terrasoft.DataValueType.BOOLEAN,
				type: Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN,
				value: true
			}
		},
 
		mixins: {
			ConfigurationGridUtilites: "Terrasoft.ConfigurationGridUtilities"
		},
 
		methods: {
			getExternalURLLink: function() {
				return this.getLink(this.get("Number"));
			},
			onExternalLinkClick: function() {
				debugger;
				var value = this.get("Number");
				!Ext.isEmpty(value) && window.open(value, "_blank");
				return false;
			},
			getLink: function(value) {
				if (Terrasoft.isUrl(value)) {
					return {
						url: value,
						caption: value
					};
				}
			}
		},
 
		diff: /**SCHEMA_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.TRANSPARENT,
							"tag": "save",
							"markerValue": "save",
							"imageConfig": {"bindTo": "Resources.Images.SaveIcon"}
						},
						{
							"className": "Terrasoft.Button",
							"style": this.Terrasoft.controls.ButtonEnums.style.TRANSPARENT,
							"tag": "cancel",
							"markerValue": "cancel",
							"imageConfig": {"bindTo": "Resources.Images.CancelIcon"}
						},
						{
							"className": "Terrasoft.Button",
							"style": this.Terrasoft.controls.ButtonEnums.style.TRANSPARENT,
							"tag": "remove",
							"markerValue": "remove",
							"imageConfig": {"bindTo": "Resources.Images.RemoveIcon"}
						}
					],
					"initActiveRowKeyMap": {"bindTo": "initActiveRowKeyMap"},
					"activeRowAction": {"bindTo": "onActiveRowAction"},
					"multiSelect": false
				}
			}
		]/**SCHEMA_DIFF*/
	};
});

Благодарю!

Нравится

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

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

Придётся смотреть как реализована деталь "График поставки и оплат" в заказе. Там "Добавить" - кликабельное поле. Вангую, что скорее всего сделано в виде невидимой кнопки. Как-то так.

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

Товарищи подскажите, как добавить(можно ли) в showInformationDialog,  поле для комментария

 

 

Нравится

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

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

Спасибо за ссылку

Сделал, пока так 

 	//Код всплывающего окна
			    var customCommentPopUp = '<div id="popUpWindow" class="ts-messagebox-box ts-messagebox-border-style-blue ts-messagebox-center-position" style="height: 250px;"><div id="t-comp0-caption" class="ts-messagebox-caption">Оставьте комментарий</div><textarea id="commentTextArea"  style="width: 100%;height: 100px;" placeholder="Ваш комментарий"></textarea><span id="customCommentBtnOk" class="t-btn-wrapper t-btn-text t-btn-style-blue" style="margin-top:15px" tabindex="1" data-item-marker="ОК">ОК</span><span id="customCommentBtnNo" class="t-btn-wrapper t-btn-text t-btn-style-default " style="margin-top:15px" tabindex="1" data-item-marker="Нет">Нет</span></div>';
	            $('body').append(customCommentPopUp);//Добавляем элемент на страницу
 
 
	             //Обработка нажания на кнопку (Да)
	             $('#customCommentBtnOk').click(function(){
 
 
	                  var comment = $('#commentTextArea').val();//Получаем комментарий
	               	  console.log("comment:"+comment);
 
                      if(comment!=''){
                        $('#popUpWindow').remove();//Закрываем окно
                      }else{
                      	$('#commentTextArea').css('background-color', '#FFF9C4');//Пользователь не ввел данные и пытается сохранить
 
                      }
                  });
 
                   //Обработка нажания на кнопку (Нет)
                   $('#customCommentBtnNo').click(function(){
                       $('#popUpWindow').remove();//Закрываем окно
                   });

 

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