У нас есть раздел "Конфигурации", в котором хранится техника сотрудников. При заполнении раздела использовали импорт данных. Необходимо было уникальное поле, которого у нас не было, и мы добавили в эксель файл поле номер "КЕ00000...", который генерируется автоматически при заполнении вручную. 

Но теперь при попытке добавить КЕ вручную, номер не генерируется последний, а начинает с первого заполняться (КЕ00000001). 

Подскажите, как можно исправить данную проблему?

Нравится

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

Скорее всего, в Вашей конфигурации в системных настройках есть настройка, которая хранит текущий номер КЕ.

Вам нужно изменить её значение на номер последней КЕ.

Скорее всего, в Вашей конфигурации в системных настройках есть настройка, которая хранит текущий номер КЕ.

Вам нужно изменить её значение на номер последней КЕ.

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

Благодарю, нашел нужный SEQUENCE в базе и подправил через alter.

Идрисов Артур Ильдарович,

Всегда рада помочь!smiley

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

Добрый день!

Столкнулся со следующей ошибкой во время билда/ребилда через WorkSpaceConsole, настроенный в VS.

Error: Dependency 'TripUsefulConfigurationService' of package 'Business_Trip_Objects' was not found.

Нашел статью, параметры в консоли и WebConfig значение флага CompileByManagerDependencies совпадает и равняется true.

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

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

Нравится

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

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

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

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

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

Интересует вопрос возможно ли удалять сообщения в обращении, во вкладке Обработка?

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

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

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

Нравится

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

Добрый день! Прошу помочь со следующим кейсом:

В обращении при наступлении события X запускается бизнес-процесс и отправляется email. Необходимо прикрепись к нему все вложения с детали Файлы и ссылки.

Какие есть пути реализации? Заранее спасибо!

Нравится

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

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

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

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

Реализация следующая: создал активность типа Activity, заполнил обязательными для отправки письма полями, сохранил, создал несколько сущностей типа ActivityFile, ссылающихся на мою активность Activity, отправил письмо методом .Send(activityid) класса ActivityEmailSender. Тщательно продебажил метод, убедился что в собранном письме хранится коллекция из двух вложений.

Как мне отправить все вложения? Где я ошибся?

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

var emailClientFactory = ClassFactory.Get<EmailClientFactory>(new ConstructorArgument("userConnection", UserConnection));
 
var activityEmailSender = new ActivityEmailSender(emailClientFactory, userConnection);
 
activityEmailSender.Send(activity.Id);

 

 

Отбой, все работает, одно из вложений блокировалось почтовым клиентом)

Алла Савельева, спасибо вам большое)

Омельянюк Михаил,

А можете, пожалуйста, поэтапно расписать, как Вы это реализовали?

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

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

Добрый день!



Существует следующая необходимость - изменить в уведомлениях по активностям ФИО связанного контакта на номер обращения (потому что все равно на то с кем общаться, главное знать по какому обращению надо сделать задачу и быстро перейти в это обращение). Можно ли вообще осуществить такое изменение в версии 7.13 и выше? Если до, то как это осуществить? Может кто делал что-то подобное?Изображение удалено.

Нравится

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

Можно попробовать в схеме ActivityNotificationProvider переделать функцию GetBody и остальные, где формируется список колонок.

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

Добрый день.

Возник вопрос, как обозначать обращения в зависимости от их категории.

Сейчас существует по умолчанию 2 категории - Инцидент и Запрос на обслуживание.

Сам вопрос - как настроить нумерацию вида SD000** / IM000**** / C000**** в зависимости от их выбранной категории?

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

 

P.S. Еще один вопрос как создать отдельную сущность Инцидент, по типу Обращения?

Возможно ли скопировать базовый пакет Case и дальше уже его редактировать?

 

Нравится

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

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

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

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

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

Посмотрите это приложение, там реализована похожая задача

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

Всем добрый день. Версия 7.12.

Небольшой эксперимент с деталями. Пытаюсь понять, можно ли добавлять на деталь свои данные, не относящиеся к объектам системы.

Переопределил в схеме детали (схема обычная, наследуется от BaseGridDetailV2) стандартный onGridDataLoaded следующим образом:

onGridDataLoaded: function(response) {
				var newCollection = Ext.create("Terrasoft.Collection");
 
				var startItem = response.collection.collection.items[0];
				startItem.values.Address = "zzzz";
				newCollection.add("zzz", startItem);
 
				var nextItem = startItem;
				nextItem.values.Address = "yyy";
				newCollection.add("yyy", nextItem);
 
				var preloadRowKeys = this.get("PreloadedGridDataRecords") || [];
				var gridData = this.getGridData();
				var preloadGridData = gridData.filter(function(item, key) {
					return preloadRowKeys.indexOf(key) >= 0;
				});
				var isClearGridData = this.get("IsClearGridData");
				if (isClearGridData) {
					if (!gridData.isEmpty() && (response.success || preloadGridData.isEmpty())) {
						gridData.clear();
					}
					this.set("IsClearGridData", false);
				}
				var performanceManagerLabel = this.sandbox.id + "_onGridDataLoaded";
				performanceManager.start(performanceManagerLabel);
				this.afterLoadGridData();
				const isContinueExecution = this.Terrasoft.findValueByPath(response, "errorInfo.response.timedout") &&
						this.getIsFeatureEnabled("UseQueryOptimize") && this.isNotEmpty(this.$CurrentFolder);
				if (!response.success && !isContinueExecution) {
					performanceManager.stop(performanceManagerLabel);
					return;
				}
 
				this.initCanLoadMoreData(newCollection);
				this.prepareResponseCollection(newCollection);
				this.initIsGridEmpty(newCollection);
 
				newCollection = this.clearLoadedRecords(newCollection);
				newCollection.eachKey(function(key, item) {
					gridData.insert(0, key, item);
				});
 
				this.addItemsToGridData(newCollection);
				this.addSelectedRecords(newCollection);
				this._setRecordsCount(newCollection);
				if (!preloadGridData.isEmpty()) {
					this.addItemsToGridData(preloadGridData, this.getAddRowsOptions());
					this.addSelectedRecords(preloadGridData);
				}
				this.onDataChanged();
				performanceManager.stop(performanceManagerLabel);
			},

 

Т.е. создаю собственную коллекцию, в которую два раза подряд добавляю первый элемент возвращаемой по запросу к объекту ContactAddress коллекции response.collection.collection.items[0], в котором также меняю значение колонки Address. В итоге на детали отображается две записи с одинаковым id, при выводе коллекции в консоль тоже всё верно, но на самой детали Address остался без изменений.

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

Как правильно изменить элемента коллекции? Либо, второй вариант - как добавить в Terrasoft.Collection свой новый элемент (не переопределять результаты запроса, а создать собственный)?

Нравится

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

Пример добавления в Terrasoft.Collection  элементов

var results = this.Ext.create("Terrasoft.Collection");
this.Terrasoft.each(decodedAllowedResults, function(result) {
	var itemId = result.resultId;
	results.add(itemId, {
		id: itemId,
		value: itemId,
		displayValue: result.caption,
	});
}, this);

 

Пример добавления в Terrasoft.Collection  элементов

var results = this.Ext.create("Terrasoft.Collection");
this.Terrasoft.each(decodedAllowedResults, function(result) {
	var itemId = result.resultId;
	results.add(itemId, {
		id: itemId,
		value: itemId,
		displayValue: result.caption,
	});
}, this);

 

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

Добрый день! 

Подскажите, пожалуйста, как преобразовать дату в текстовую строку так, чтобы не выводилось время? Я использую оператор .ToString() и получается 02.05.2019 0:00:00. Есть ли возможность получить дату без времени?

Нравится

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

В параметрах метода ToString укажите нужный формат даты.

Подробнее посмотрите в статье 1 и статье 2.

В параметрах метода ToString укажите нужный формат даты.

Подробнее посмотрите в статье 1 и статье 2.

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

Спасибо огромное! Получилось

Немировская Виктория,

Рада, что смогла помочь wink

Показать все комментарии
WS
веб сервис
бизнес-процесс
7.13_()
service

Добрый день!

Создал свой WS с методом GET. Он не требует авторизации в BPM. По прямой ссылке он прекрасно выдает результат в браузере.

При попытке использования его в БП появляется сообщение: 

Ошибка HTTP 401.1 — Unauthorized

Я верно понимаю, что причина кроется именно в настройке самой BPM  для работы с WS, а не в настройке конкретного БП?

Нравится

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

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

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

Григорий Чех,

Верно ли понимаю, что можно в БП первым действием блок для работы с WS вставить, 

описать WS AuthService.svc/Login в справочнике WS и на первом шаге к нему обращаться так:

https://bpm/ServiceModel/AuthService.svc/Login

Тем самым решая проблему выполнения последующих блоков в рамках данного БП.

Или нужно c# кодом описывать логику дополнительно?

При работе с веб-сервисами кроме авторизации ещё нужно получать CSRF-токен. Если в итоге с авторизацией через AuthService не получится, можно переделать на basic-аутентификацию, как поступил автор темы тут. Правда, её не рекомендуют из-за недостатков.

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

Добрый день!

Сделал тестовый WS, который возвращает:

{"TestResult":[{"comment":"Programer","name":"Alex"},{"comment":"Manager","name":"Bob"}]}

Пробую данный ответ парсить через БП (этот код реализовывал, отталкиваясь от примеров, которые нашел в сообществе). 

В блоке с кодом C# первой строкой пишу:

var entities = Get>("WebService1.UsrTestResult_Out");

При выполнении данной строки в entities данные не появляются.

В чем могут быть проблемы?

 

Нравится

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

ICompositeObject  это для случяая когда вы парсите коллекцию полученную из элемента чтение данных в БП

Вам нужно просто выполнить парсинг JSON на C# примеров в интернете как это сделать масса

ICompositeObject  это для случяая когда вы парсите коллекцию полученную из элемента чтение данных в БП

Вам нужно просто выполнить парсинг JSON на C# примеров в интернете как это сделать масса

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

Коллеги, а можно ли в задании-сценарии создавать свой класс? И можно ли в принципе свободно в нем писать свой код или есть большое число ограничений?  Ссылку по описанию данного блока на академии смотрел. Описание так весьма краткое.

Например пробую использовать:

public class SomeClass{

            public string id;

            public string login;

            public string name;

};

При попытке его использования выскакивает ошибка при публикации.

Александр Кулиш,

Свой класс вы можете создать добавив в конфигурации элемент - Исходный код, затем его можно использовать в задании сценарии!

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