Есть задача. ЕЕ состояние завершена. Срок завершения 01.01.2018.

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

Что нужно проверить или изменить?

Нравится

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

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

В первую очередь следует посмотреть лог выполнения кейса. Его можно посмотреть зная Id процесса кейса.

Узнать Id процесса кейса можно следующим образом:

1. Через базу данных, в таблице SysProcessEntity найти запись где EntityId = <Id акции>. В выборке нас интересует результат колонки SysProcessId.

2. В системе перейти в Журнал процессов, открыть любую запись лога бизнес-процесса и заменить в ссылке Id карточки лога, на результат колонки SysProcessId, то есть ссылка должна заканчиваться так: SysProcessLogPageV2/edit/<SysProcessId с выборки>.

3. Откроется карточка лога кейса. Через неё можно посмотреть в каком состоянии выполнения кейс. А если есть ошибка в его выполнении - сориентироваться по ошибке.

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

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

Спасибо!

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

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

Версия 7.11.

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

var hash = /**путь до страницы**/;
this.sandbox.publish("PushHistoryState", {hash: hash});

Вопрос такой - а как это сделать внутри задания-сценария бизнес-процесса? Просто открыть для текущего пользователя некую страницу, зная её ссылку, перенаправить его.

В мастере БП есть стандартные элементы "Открыть страницу редактирования" и "Преднастроенная страница", но интересует страница раздела Обращений CaseSection - её нет в списке допустимых для открытия преднастроенных, и к тому же там идёт перенаправление по ссылке странного вида: ProcessCardModuleV2, а нужно просто #SectionModuleV2/CaseSection/

Хотелось бы получить скрипт для любой ссылки. Спасибо.

Нравится

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

"Хотелось бы получить скрипт для любой ссылки" - из бизнес-процесса можно отправить сообщение по вебсокету, а в ClientMessageBridge на клиенте загрузить страницу.

Альмухаметов Булат

добрый вечер, спасибо за идею.

Не подскажете, как правильно отправить сообщение из БП? Пробую вот по этой инструкции: https://academy.terrasoft.ru/documents/technic-sdk/7-11/clientmessagebr… компилятор ругается на MsgChannelUtilities в задании-сценарии. Что ещё нужно подключить?

Нашёл. Отправляю таким способом:

 

// Публикация сообщения по WebSocket.
var userConnection = Get<UserConnection>("UserConnection");
Terrasoft.Configuration.MsgChannelUtilities.PostMessage(userConnection, "OpenCaseSection", "messageText");
return true;

В переопределённом ClientMessageBridge  на клиенте соответственно доработал метод:

onMessageReceived: function(scope, response) {
					this.callParent(arguments);
					if (response.Header.Sender == "OpenCaseSection"){
						console.log(response);
						this.sandbox.publish("PushHistoryState", {hash: "SectionModuleV2/CaseSection/"});
					}
				},

Но теперь проблема при перенаправлении: i {message: "Message PushHistoryState is not defined in BaseSch…aModuleV2 (ViewModule_clientMessageBridge) module"}

Соответственно, вопрос - где именно происходит подписка на PushHistoryState, и как выглядит обработчик?

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

думаю, нужно добавить сообщение

"PushHistoryState": {
					mode: this.Terrasoft.MessageMode.BROADCAST,
					direction: this.Terrasoft.MessageDirectionType.PUBLISH
				},

 

Подписка происходит в NUI.NavigationModule, там всего пару методов для работы с глобальным объектом роутером.

Альмухаметов Булат,

спасибо, так работает.

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

Как на детали "Связи" в объекте активности убрать поля: заказы, проект, документы, так как эти объекты не используются в системе?

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

 

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

Нравится

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

Здравствуйте, Екатерина!

 

Базовыми средствами внести данные изменения не получится. Необходимо выполнить замещение базовой схемы EntityConnectionsDetailV2

Подобная проблема уже рассматривалась ранее Вы можете ознакомиться с решением тут - https://community.terrasoft.ru/questions/kak-ubrat-ne-nuznoe-pole-v-rod…

Для проделывания данной операции хватит всего лишь удалить соответствующие записи из таблицы EntityConnection. Соотношение идёт в ней вроде по Id (или UId) объекта - Id (или UId) колонки.

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

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

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

Как это можно сделать?

 

Нравится

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

Здравствуйте, Екатерина!

 

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

 

Более подробно можно прочитать на академии Террасофт - https://academy.terrasoft.ru/documents/studio/7-11/nastroyka-spiska-rab…

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

Добрый день!

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

Нравится

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

Во встроенном процессе объекта. В дизайнере объекта нажмите Дополнительно -> открыть процесс. Исходный код будет храниться в метаданных объекта в экранированном виде, там можно смотреть все изменения из SVN.

Альмухаметов Булат,

у меня возникла проблема, может Вы мне сможете помочь?

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

Добрый день. В замещающем объекте вы можете переопределить методы родителя и не вызывать базовую реализацию.

Кот Владимир Владимирович,

А подскажите, пожалуйста, каким образом я могу переопределить методы родителя в сущности типа "объект"?

В "Дополнительно -> Открыть процесс" я могу увидеть родительские методы, но не имею понятия как их переопределить.

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

base.TryProcessComplete(changeType);

Вместо этой строчки достаточно будет написать нужную вам функциональность. Реализация из родителя вызываться не будет.

Показать все комментарии
Бизнес-процессы
7.9
sales

Есть БП, который запускается по сигналу "Изменение записи". Можно ли в логах БП (полный доступ в базу имеется) узнать Id записи, на которую сработал БП? Логируется ли это где-нибудь?

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

Нравится

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

Добрый день!

Для решения задачи нужно в сам процесс добавить элемент [Привязать процесс к объекту]. Описание можно найти в документации.

После этого связь между экземпляром процесса и записью можно будет увидеть в Журнале процессов в конкретном экземпляре.

Или в таблице SysProcessEntity. Тут есть ссылка на экземпляр БП (в SysProcessLog), UId схемы объекта к которому привязан экземпляр (в SysSchema) и Id конкретной записи (из объекта к которому выполнена привязка)

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

Добрый день! Проблема с сервисом DataService. В процессе разработки была произведена небольшая интеграция с сайтом клиента, однако в процессе переноса на боевую среду (в облаке) возникла ошибка следующего вида: невозможно выполнить какой-либо запрос (напр. SelectQuery):

Возвращается код ошибки 403 и ответ вида: 





403 - Forbidden: Access is denied.





Server Error

 
  

403 - Forbidden: Access is denied.

You do not have permission to view this directory or page using the credentials that you supplied.

ЕМНИП, необходимо при начале работы с сервисом отключить CSRF-проверку подлинности. Не подскажете, в чём может быть проблема? Спасибо. 

Нравится

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

Здравствуйте, Иван

Данное поведение возникло в следствие некорректного отключения защиты от CSRF-атак.

Ошибку исправили на Вашем сайте и временно отключили защиту от CSRF-атак. Прошу обновить страницу с очисткой кеша.

Также напоминаю, что при следующем обновлении сайта, защита от CSRF-атак будет включена автоматически и для корректной работы Вашей интеграции в последующем Вам необходимо доработать Вашу интеграцию по инструкции https://academy.terrasoft.ru/documents/technic-sdk/7-11/zashchita-ot-cs…

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

Добрый день.

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

Нравится

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

Добрый день!

Вы можете удалить запись с помощью sql запроса:

delete from Actitity where id '...' где вместо трех точек подставить id нужной Вам записи (если нет доступа к бд, то id можно просто скопировать из адресной строки браузера при открытии интересующей активности). Также можно удалять по заголовку и другим колонкам записи, но в таком случае нет уверенности, что запись по этим колонкам уникальна (в связи с этим удаление 1 записи лучше выполнять по id). В случае, если у Вас база размещена в облаке и нет доступа к бд, то запрос можно выполнить в разделе "Конфигурация"-"Sql-сценарии". После выполнения запроса на удаление, вероятнее всего, у Вас появится ошибка о наличии связей по ключу с другой сущностью. В таком случае нужно вывести текст ошибки (просто в реестре раздела "sql-сценарии" вывести колонку "Текст последней ошибки") и выполнить обнуление связей. Например, получили ошибку о том, что данная запись не может быть удалена, так как имеет связь с каким-то контактом. В таком случае запрос на обнуление такой связи будет выглядеть следующим образом:

update Contact set ActivityId = null where ActivityId = '...' (опять же подставляете id активности, которую хотите удалить). После чего снова можете пробовать удалить запись первым запросом. 

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

 

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

Добрый день.

Не получается удалить заявку (служебная записка) в bpm online sales. Пишет, есть связанные заявки.

Есть какой-либо запрос для удаления заявки?

 

Нравится

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

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

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

Вы можете удалить заявку напрямую скриптом из БД.

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

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

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

Создал два процесса. В обоих просто задание-сценарий, запуск по пустому сигналу. Код внутри первого:

var userConnection = Get("UserConnection");

string processName = "UsrLogNowDate";
string jobName = processName + "Job";
string jobGroupName = jobName + "Group";
 
int startOffset = 80; // 80 секунд
AppScheduler.RemoveJob(jobName, jobGroupName);
var job = AppScheduler.CreateProcessJob(jobName, jobGroupName, processName, userConnection.Workspace.Name, userConnection.CurrentUser.Name);
var trigger = new SimpleTriggerImpl(jobName + "Trigger", jobGroupName, DateTime.UtcNow.AddSeconds(startOffset));
AppScheduler.Instance.ScheduleJob(job, trigger);

return true;

В Usings соответственно добавлены: 

Quartz.Impl

Quartz

Quartz.Impl.Triggers

Terrasoft.Core.Scheduler

UsrLogNowDate - это второй процесс, представляет собой простое логирование текущей даты в справочник UsrTriggersLog. Код второго:

var userConnection = Get("UserConnection");
new Insert(userConnection).Into("UsrTriggersLog").Set("Name", Column.Parameter(DateTime.Now.ToString())).Set("Description", Column.Parameter("Записано автоматически.")).Execute();
return true;

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

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

Где ошибка? Как правильно запускать такие процессы в 7.11?

Нравится

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

Добрый день!



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

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