Вопрос

Добрый день!

Подскажите, можно ли как-то принудительно завершить подпроцесс, не дожидаясь его выполнения? Не отменить, а именно завершить.

 

У меня такой же вопрос

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

На маркет плєйсе есть решение для массового закрытия БП по одному можно зайти в журнал БР выбрать нужный экземпляр и завершить!

На маркет плєйсе есть решение для массового закрытия БП по одному можно зайти в журнал БР выбрать нужный экземпляр и завершить!

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

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

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

Решение из маркет плейса не подходит по причине того что версия приложения 7.11.1, а дополнение должно работать на версии не ниже 7.11.3

Так отправьте из внешнего сигнал, который поймают внутренние и завершатся.

А по поводу версий, Вы можете обновиться с 7.11.1 на 7.11.3, между минорными версиями не должно быть особо тяжело.

Шувалов Николай Юрьевич,

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

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

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

С возможностью вставки картинок из буфера обмена, а также просмотра их в ленте в уменьшенном виде с увеличением по клику?

У меня такой же вопрос

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

Насколько я понимаю лента содержит html. А значит можно сохранять картинки в БД и подставлять к ним путь.

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

Так что все реально, насколько это сложно для вас зависит от вашего опыта в разработке js.

Насколько я понимаю лента содержит html. А значит можно сохранять картинки в БД и подставлять к ним путь.

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

Так что все реально, насколько это сложно для вас зависит от вашего опыта в разработке js.

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

Григорий, спасибо! А может подскажете, в маркетплейсе есть такая функциональность?

Если картинка вместе с текстом копируется из браузера и доступна по адресу в Интернете, то вставится в ленту уже сейчас:

А вы уверены, что вам лента вообще нужна?

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

«Интернет не нужон!»©

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

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

Добрый день!

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

У меня такой же вопрос

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

Право на операцию «Управление корпоративными тегами» (CanManageCorporateTags).

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

Спасибо!

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

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

Как можно в bpm'online перевести кроме элементов интерфейса на несколько языков еще и данные?
Необходимо отображать на языке пользователя некоторые поля справочников (Name, Description), а также некоторые поля разделов (например, названия, описания сервисов или продуктов)

У меня такой же вопрос

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

В схеме таблицы для тех полей, которые хотите локализировать, установить признак 'Локализируемый текст' (Localizable Text):

 

По умолчанию для таблиц, которые наследованы от Base lookup, для полей Name и Description эти признаки уже установлены.

Потом перейти в раздел Переводы (Translation), по ключу найти значения для нужного справочника, перевести их и потом применить перевод.

Для примера на скриншоте ключ выглядит следующим образом: Data:Contact.OfficialName:82d21f9f-4cec-4ff7-aeee-9255cc4f37f3. Contact - это название таблицы, OfficialName - название локализируемого поля, 82d21f9f-4cec-4ff7-aeee-9255cc4f37f3 - Id записи в таблице Contact, для которой делается перевод.

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

В схеме таблицы для тех полей, которые хотите локализировать, установить признак 'Локализируемый текст' (Localizable Text):

 

По умолчанию для таблиц, которые наследованы от Base lookup, для полей Name и Description эти признаки уже установлены.

Потом перейти в раздел Переводы (Translation), по ключу найти значения для нужного справочника, перевести их и потом применить перевод.

Для примера на скриншоте ключ выглядит следующим образом: Data:Contact.OfficialName:82d21f9f-4cec-4ff7-aeee-9255cc4f37f3. Contact - это название таблицы, OfficialName - название локализируемого поля, 82d21f9f-4cec-4ff7-aeee-9255cc4f37f3 - Id записи в таблице Contact, для которой делается перевод.

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

Спасибо!

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

А как все уже существовавшие записи добавить для перевода?

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

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

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

У меня такой же вопрос

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

Зайдите в настройку кэйса и посмотрите

1) панель кэйсов вашего раздела настроена на статус в продаже?

2) есть ли в панели шаг "продажа завершена с проигрышем" и с каких шагов на него можно попасть. При необходимости разрешите переход в "продажа завершена с проигрышем" со всех остальных шагов.

Зайдите в настройку кэйса и посмотрите

1) панель кэйсов вашего раздела настроена на статус в продаже?

2) есть ли в панели шаг "продажа завершена с проигрышем" и с каких шагов на него можно попасть. При необходимости разрешите переход в "продажа завершена с проигрышем" со всех остальных шагов.

Григорий Чех, в кейсах разрешено переход с любого этапа на "продажа завершена с проигрышем". Изменение статуса происходит в бизнес-процессе - не в бизнес-кейсе

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

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

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

 пример такой логики не можете показать или указать где можно глянуть?

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

Доброе утро!

Странная проблема у меня, создаю в «Мастер раздела» объект с именем UsrBePVM

Далее перехожу в JS скрипт, где описываю логику работы этого объекта, сохраняется удачно, все как бы хорошо.

Далее почему-то ничего не происходит на странице, такое ощущение, что не видит значения UsrBePVM или ему просто ничего не передается.

Что не так? Что-то забыл заполнить? Где смотреть?

 

У меня такой же вопрос

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

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

Как это сделать, подробно описано в статье.

Не забывайте прочистить кэш браузера после каждого сохранения в конфигураторе клиентского кода.

Алла Савельева пишет:

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

Как это сделать, подробно описано в статье.

Проблема в том, что ошибок нет, ничего выводило. Сам JS кода был описан в бизнес процессе. Помогла только эта статья.

Странно, что из бизнес процесса не работает.

Процессы отрабатывают на сервере, а JS — на странице в браузере. Соответственно, при работе процесса клиентская логика отрабатывать не будет.

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

Добрый день.

Прошу помощи, развернул сайт, все устанавливал согласно инструкции на сайте https://academy.terrasoft.ru/documents/administration/7-12/ustanovka-bp…

Установлен на Server 2016. Сервер видит и Redis и базу SQL 2017

При запуске выдает ошибку:

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.Reflection.ReflectionTypeLoadException: Unable to load one or more of the requested types. Retrieve the LoaderExceptions property for more information.
Source Error:
An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.

Stack Trace:
 

[ReflectionTypeLoadException: Unable to load one or more of the requested types. Retrieve the LoaderExceptions property for more information.]
   System.Reflection.RuntimeModule.GetTypes(RuntimeModule module) +0
   System.Reflection.Assembly.GetTypes() +112
   Terrasoft.Common.ReflectionUtilities.FindTypeByShortName(Assembly assembly, String name) +455
   Terrasoft.Core.SchemaManagerItem`1.get_TypeName() +150
   Terrasoft.Core.SchemaManager`1.InitializeCoreSchemaLocalizableValues(ISchemaManagerItem`1 schemaManagerItem) +31
   Terrasoft.Core.SchemaManager`1.AddCoreSchema(Guid uid, String name, Guid parenSchemaUId, Assembly assembly, Guid[] referenceSchemaUIds) +116
   Terrasoft.Core.Entities.SystemEntitySchemaManager.InitializeItems() +320
   Terrasoft.Core.Entities.EntitySchemaManager.Initialize(SchemaManagerProvider provider, SchemaManagerProviderConfigurationElement configuration) +163
   Terrasoft.Core.SchemaManagerProvider.InitializeSystemSchemaManager(String systemSchemaManagerName) +223
   Terrasoft.Core.SchemaManagerProvider.InitializeSchemaManager(String managerName) +27
   Terrasoft.Core.SchemaManagerProvider.GetManager(String managerName) +221
   Terrasoft.Core.UserConnection.get_SystemEntitySchemaManager() +47
   Terrasoft.Core.SystemUserConnection.InitializeCurrentUser(String userName, TimeZoneInfo timeZone, String clientIP, String agent, Boolean logSessionStart) +36
   Terrasoft.Core.AppConnection.InitializeSystemUserConnection(ConfigurationSection schemaManagerProviderConfigurationSection) +172
   Terrasoft.Core.AppConnection.Initialize(ConfigurationSectionGroup appConfigurationSectionGroup) +558
   Terrasoft.WebApp.Loader.Global.InitializeAppConnection() +486
   Terrasoft.WebApp.Loader.Global.Application_Start(Object sender, EventArgs e) +202
 
[HttpException (0x80004005): Unable to load one or more of the requested types. Retrieve the LoaderExceptions property for more information.]
   System.Web.HttpApplicationFactory.EnsureAppStartCalledForIntegratedMode(HttpContext context, HttpApplication app) +517
   System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr appContext, HttpContext context, MethodInfo[] handlers) +185
   System.Web.HttpApplication.InitSpecial(HttpApplicationState state, MethodInfo[] handlers, IntPtr appContext, HttpContext context) +168
   System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext, HttpContext context) +414
   System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr appContext) +369
 
[HttpException (0x80004005): Unable to load one or more of the requested types. Retrieve the LoaderExceptions property for more information.]
   System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +532
   System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +111
   System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +714

Помогите советом, что делать? куда копать?

У меня такой же вопрос

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

Добрый день, посмотрите настройки IIS, иногда функции отключены по умолчанию. Проверьте наличие галочки
Панель управления - >> Программы - >> Программы и компоненты - >> Включить или отключить функции Windows - >> Внутренние информационные службы
 

 

Добрый день.

Все компоненты установлены.

Evgeny D,

 

обратите внимание, что в требованиях предполагается IIS 7 и выше; а у вас , возможно, стоит более ранняя версия, так же есть в описании ошибки к этому отсылка

System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context)

Попробуйте обновить IIS 

изначально установлен IIS 10

Если после обновления при логине в систему возникает ошибка вида "Unable to load one or more of the requested types", то вам необходимо установить компонент Microsoft Visual C++ 2010 SP1 Redistributable Package. Загрузить его можно на сайте компании Microsoft по ссылке.

Установка Microsoft Visual C++ 2010 SP1  помогла! огромное спасибо за помощь.  Хочется понять, почему в инструкции не указано, что должен стоять этот компонент. Спасибо!

Нашел заметку, но совсем в другом месте

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

Здравствуйте, подскажите, есть ли в нашей версии редактора отчетов возможность вносить изменения в БД ? Если да, то буду признателен за рабочий пример.

У меня такой же вопрос

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

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

var manager = UserConnection.EntitySchemaManager.GetInstanceByName("Account");
var entity = manager.CreateEntity(UserConnection);
//entity.SetDefColumnValues();
entity.FetchFromDB(ID); //Account guid
entity.SetColumnValue("Name", "TEST");
entity.Save(false);

 

Мне интересно, какая бизнес-задача может потребовать этого?

Может, счётчик запусков или их логирование?

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

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

Коллеги, доброго дня!

Может, кто-то сталкивался с подобной задачей, прошу подсказать ньюансы:

1. В продакшн среде есть бизнес-процесс, который активно используется в кейсах разделов, вручную и т.д.

2. При реализации нового функционала я создал новую версию работающего процесса в пакете-наследнике от пакета с процессом и пакета с новым функционалом.

Цель - оставить запущенные экземпляры на старой реализации процесса, а новые с момента обновления запускать на новой реализации. 

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

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

Кто-нибудь сталкивался? как прошло?

У меня такой же вопрос

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

См. статью «Версионность процессов»:

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

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

При сохранении изменений в процессе выполняется проверка:
 

  1. есть ли запущенные экземпляры процесса;

  2. доступен ли для изменений пакет, в котором находится процесс;

  3. выполнялся ли экспорт бизнес-процесса.

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

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

Всем доброго времени суток. Версия 7.12.

В своё время работал с настройкой мобильного приложения, в т.ч. с добавлением кастомных элементов на страницы. Вроде тогда всё работало (в 7.10 и эмуляторе приложения для 7.10) - https://community.terrasoft.ru/questions/dobavlenie-kastomnyh-elementov…

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

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

Есть схема MobileContactPreviewPage, которая подключена в MobileApplicationManifestDefaultWorkplace у контакта в Models:

"Contact": {
			"Preview": "MobileContactPreviewPage",
			"RequiredModels": [
				"Account",
				"Contact",
				"ContactCommunication",
				"CommunicationType",
				"Department",
				"ContactAddress",
				"AddressType",
				"Country",
				"Region",
				"City",
				"ContactAnniversary",
				"AnniversaryType",
				"Activity",
				"SysImage",
				"FileType",
				"ActivityPriority",
				"ActivityType",
				"ActivityCategory",
				"ActivityStatus",
				"Job"
			],
			"ModelExtensions": [],
			"PagesExtensions": [
				"MobileContactRecordPageSettingsDefaultWorkplace",
				"MobileContactGridPageSettingsDefaultWorkplace",
				"MobileContactActionsSettingsDefaultWorkplace",
				"MobileContactModuleConfig"
			]
		}

Я заместил схему MobileContactPreviewPage, перенёс содержимое из оригинальной реализации полностью, добавил свою небольшую доработку-  просто добавление кнопки на страницу:

/* globals Contact: false */
Terrasoft.LastLoadedPageData = {
	controllerName: "ContactPreviewPage.Controller",
	viewXType: "contactpreviewpageview"
};
 
Ext.define("ContactPreviewPage.View", {
	extend: "Terrasoft.view.BasePreviewPage",
	xtype: "contactpreviewpageview",
	config: {
		id: "ContactPreviewPage"
	}
});
 
Ext.define("ContactPreviewPage.Controller", {
	extend: "Terrasoft.controller.BasePreviewPage",
 
	statics: {
		Model: Contact
	},
 
	config: {
		refs: {
			view: "#ContactPreviewPage"
		}
	},
 
	/**
	 * @inheritdoc
	 * @protected
	 * @overridden
	 */
	onCallPhoneStarted: function() {
		this.callParent(arguments);
		Terrasoft.PhoneCallLogUtils.openPage({
			activityLinkColumnNames: [
				{
					parentColumnName: "Id",
					activityColumnName: "Contact"
				},
				{
					parentColumnName: "Account",
					activityColumnName: "Account"
				}
			],
			record: this.record
		});
	},
 
	onLoadRecord: function(loadedRecord, callback) {
      this.callParent([loadedRecord, function() {
        Terrasoft.MessageBox.showMessage("onLoadRecord");
         var panelItems = this.getView().getPanel().getItems();
         var primaryColumnSet = panelItems.first();
 
		//Кнопка
		var controlbutton = this.getOurCustomButton(loadedRecord);
        controlbutton.on("tap", function () {
    		loadedRecord.set("UsrImgData","");
        }, this);
 
        primaryColumnSet.add(controlbutton); //если добавляем в конце панели
 
      }]);
    },
    getOurCustomButton: function(record) {
        return Ext.create('Ext.Button', {
              xtype: "button",
              cls: "x-button x-button-primary-blue",
              text: "Очистить"
            });
    },
 
});

 

Собственно, кнопки так и не появилось, сообщение showmessage тоже отсутствует. Версия приложения последняя, установил прямо с GooglePlay, проверяю всё непосредственно с телефона.

 

И ещё общий вопрос - что собственно, представляет собой приложение? Могу ли я туда выводить непосредственно html- или нативный javascript-код как в браузер? Будет ли при этом работать javascript-код на всех видах устройств?

У меня такой же вопрос

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

Добрый день, Денис!

А вы смотрели в dom дереве кнопка создалась? Может она есть, но просто не видна. Тогда придется поработать со стилями.

Приложение собой представляет одностраничное веб-приложение, т.е. html можно разве что в iframe'е попробовать вставить. А нативный JavaScript должен работать без проблем.

Золотарев Артем Андреевич,

Артём, спасибо за ответ.

Дело в том, что в приложении негде смотреть - консоли-то нету.. ну и потом, текст-то на кнопке хотя бы должен отобразиться. Где-нибудь есть эмулятор для 7.12?

html как-то добавляли в той теме по ссылке.

Ещё пробовал вместо MobileContactPreviewPage создавать свою версию с названием UsrMobileContactPreviewPage и аналогичным содержимым и подключать её на место оригинала в манифесте - тогда в приложении страница контакта вообще перестаёт открываться.

https://sun9-5.userapi.com/c830309/v830309684/143865/aieJi10t5ks.jpg (MobileContactPreviewPage)

https://sun9-7.userapi.com/c834401/v834401309/18b001/y7z3N8IY2FQ.jpg (UsrMobileContactPreviewPage)

Смородинов Денис,

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

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