Добрый день! Подскажите пожалуйста как в скрипте перекрасить компоненты и сделать текст жирным и курсивным: Page.Label или Page.TextEdit, это мне надо в BPMOnline CRM, предоставьте пожалуйста примеры.
Есть ли возможность в детали Активность (ActivityDetail из пакета NUI) сделать наименование задачи ссылочным как в разделах? (то бишь при щелчке в гриде на наименование задачи открывать карточку редактирования задачи)
Или хотя бы прикрутить к определенной колонке грида что-нить типа события OnDblClick по которому будет открываться на редактирование выбранная задача из детали
На данный момент просто тупо добавил кнопку Изменить по аналогии с кнопкой Добавить, но мне все же хотелось бы сделать значение именно ссылкой на объект, так как перегружать интерфейс кнопками очень не хотелось бы )
p.s. Есть ли где-нить инфа по созданию модулей (как создать грид, описание конфигов и кастом конфигов для колонок и т.д.)?
раз уж в 7ке IDE для создания карточек не используется, то хотелось бы хотя бы в виде SDK инфу получить или примеров
Спасибо, будем ждать
p.s. в рамках обращения 0149995 нам готовят новую сборку (или пакет обновлений), так что решение необходимо будет для будущей версии (номер сборки не знаю)
Специалистами департамента разработки предлагается следующий механизм для реализации перехода по ссылкам при клике на название активности в детали активности:
1) Удалить в профиле сохранённую настройку кастомизацию для детали в данной секции
Например для Раздела контакта: delete from SysProfileData where [Key]='ContactActivityDetailGridSettings';
2) Необходимо создать замещающий клиентский модуль ActivityDetail. В качестве родительского объекта необходимо указать “Схема Детали Активности” Добавить строки локализации TitleCaption, StartDateCaption, StatusCaption. Зависимость – “Активность ( Base )”
3) В код добавить следующий код:
define('ActivityDetail', ['Activity', 'sandbox', 'ActivityDetailStructure', 'ActivityDetailResources',
'ConfigurationEnums', 'ConfigurationConstants'],
function(Activity, sandbox, structure, resources, ConfigurationEnums, ConfigurationConstants){
structure.userCode= function(){
var entitySchema =this.entitySchema= Activity;this.name='ActivityDetailViewModel';this.editPageName='ActivityPage';this.typeColumn="Type";this.columnsConfig[0][0].link={bindTo:'getLink'};this.captionsConfig=[{
cols:12,
name: resources.localizableStrings.TitleCaption},
{
cols:6,
name: resources.localizableStrings.StartDateCaption},
{
cols:6,
name: resources.localizableStrings.StatusCaption}];this.methods.modifyItems= function(items){for(var index in items){
items[index].getLink= function(){
var link = Terrasoft.workspaceBaseUrl;
var id =this.get('Id');
var type =this.get('Type');
var schemaName ='Activity';
var config = Terrasoft.configuration.ModuleStructure[schemaName];
var URL ='';
var cardSchema;if(type != null && type.value== ConfigurationConstants.Activity.Email){
cardSchema ='EmailPage';}else{
cardSchema = config.cardSchema;}
var notes ="";
var target ='_self';
URL =[link, 'Nui/ViewModule.aspx#'+config.cardModule, cardSchema, ConfigurationEnums.CardState.Edit, id];return{
url: URL.join('/'),
title: notes,
target: target
};};}};};return structure;});
День добрый!
Ваш способ помог, но к сожалению есть небольшая проблемка c отображением детали
Поле создания замещающего модуля для ActivityDetail с кодом:
define('ActivityDetail', ['Activity', 'sandbox', 'ActivityDetailStructure', 'ActivityDetailResources',
'ConfigurationEnums', 'ConfigurationConstants'],
function(Activity, sandbox, structure, resources, ConfigurationEnums, ConfigurationConstants){
structure.userCode= function(){
var entitySchema =this.entitySchema= Activity;this.name='ActivityDetailViewModel';this.editPageName='ActivityPage';this.typeColumn="Type";this.captionsConfig=[{
cols:12,
name: resources.localizableStrings.TitleCaption},
{
cols:6,
name: resources.localizableStrings.StartDateCaption},
{
cols:6,
name: resources.localizableStrings.StatusCaption}];this.columnsConfig[0][0].link={bindTo:'getLink'};this.methods.modifyItems= function(items){for(var index in items){
items[index].getLink= function(){
var link = Terrasoft.workspaceBaseUrl;
var id =this.get('Id');
var type =this.get('Type');
var schemaName ='Activity';
var config = Terrasoft.configuration.ModuleStructure[schemaName];
var URL ='';
var cardSchema;if(type != null && type.value== ConfigurationConstants.Activity.Email){
cardSchema ='EmailPage';}else{
cardSchema = config.cardSchema;}
var notes ="";
var target ='_self';
URL =[link, 'Nui/ViewModule.aspx#'+ config.cardModule, cardSchema, ConfigurationEnums.CardState.Edit, id];return{
url: URL.join('/'),
title: notes,
target: target
};};}};};return structure;});
произошло смещение колонок + появился непонятный элемент undefined (см. activity_detail_err.png) при чем в хтмле он оформлен без тегов (см. activity_detail_html.png)
При отладке вплоть до самой загрузки данных в конфиге показывает 3 колонки, откуда появляется 4ая могу только догадываться ) видимо добавляется системой так же как и чекбокс для мультиселекта при формировании ряда
Очень надеюсь что хотя бы подскажете куда копать, потому я уже даже не знаю )
Акмаль, можно запретить менять настройки. Добавить генерацию ссылок при формировании настроек, сохраняемых в профиль не получится.
Отмена отрабатывает корректно, как "Назад". Если у Вас возвращает не в родительскую запись, нужно разбирать конкретный случай.
При использовании базового механизма перехода по ссылке из детали (в результате обычно открывается карточка редактирования объекта) используется метод openCardInChain базовой модели представления (BaseSchemaViewModel), который открывает карточку в том же окне, независимо от атрибута target.
Для того, чтобы по ссылке карточка открывалась в новом окне, необходимо использовать метод open глобального объекта window. Например:
var url = Terrasoft.workspaceBaseUrl;
window.open(url);
Примеры использования - модуль SystemDesigner пакета UIv2: действия "Мастер разделов", "Мастер деталей", "Управление конфигурацией".
Олег, здравствуйте!
Спасибо Вам большое за ответ.
Я посмотрела SystemDesigner и решила сделать наподобие.
У меня есть поле UsrFoto. Я добавила туда следующие строчки:
Настя, у контрола, который создаётся по полю "UsrFoto", нет свойства "click".
Вы можете добавить свой контрол, который не ссылается на колонку Entity-схемы, с типом BUTTON или LABEL, и связать его свойство "click" с обработчиком onNavigateClick.
Может быть я сейчас глупые вопрос задам, но мне ведь нужно, чтобы именно содержимое
этого поля становилось ссылкой и переходило на другую вкладку.
Я посмотрела как это реализовано с Средствах связи контакта (там же как раз есть пол Web и по нажатию на другую вкладку как раз переходит), но не могу там разобраться..
Добрый день. Возможно данный вопрос уже был но все же, хотелось бы знать есть ограничение на кол-во добавления колонок(строк, справочников и тд) в карточке продажи или других карточках! И если есть можно ли его убрать? и как это сделать?
Заранее спасибо!
Подскажите, есть ли шанс избавиться от постоянно оказывающегося на своем месте окна Outline?
Перекрывает оно большой кусок процесса, и сдвинуть можно, и закрыть, но всегда оно после редактирования элементов, например, скрипта, возвращается на свое место и вновь надо его закрывать, двигать... можно ли как то заставить его (1) уменьшиться, (2) открываться в другой части окна, (3) совсем исчезнуть? Может есть какой хитрый способ?
Здравствуйте коллеги, возник такой вопрос! Можно в карточке продаж перейдя в дизайнер страниц редактировать поля и групповые элементы
по своему желанию?
То-есть: Уменьшить ширину колонок, поставить их в 2 ряда (напротив друг друга), вообщем двигать и менять по своему усмотрению как в 5 версии Bpm?
Возможно данная тема уже есть, но не могу найти, если можно киньте ссылку буду признателен!
И заранее спасибо за любую помощь по данному вопросу!
Юрий, из дизайнера страниц вносить такие изменения нет возможности.
Используя дизайнер Вы сможете определить расположение отдельного поля, но не колонок.
Вопрос решается созданием замещающего клиентского модуля, модуль наследуется от той страницы, для которой нужно изменить визуальное отображение. Затем прописывается логика на java script.
Есть бизнес процесс. Допустим объект указанный в БП был переименован\удален. При запуске БП он выполняется и не завершается.
Как увидеть ошибки?
Как отменить выполнение БП ?
Информацию о наличии ошибок можно увидеть только в поле "Состояние" детали [Элементы процесса] раздела [Журнал процессов].
Отменить шаг используя интерфейс системы нет возможности. Чтобы убрать ошибочные процессы, нужно будет удалять данные на уровне СУБД (таблицы SysProcess, SysProcessElement).
Антон, проставление статуса "Ошибка" в случае наличия ошибок при выполнении элемента дополнено в последних сборках (Вы можете обратиться в службу технической поддержки для обновления текущей версии).
Что касается отмены выполнения БП, помимо описанного мной ранее варианта обратите внимание на этот
Здравствуйте коллеги, нужна ваша помощь. Нужно создать бизнес процесс:
После создания карточки лида в колонке Активности(Добавить e-mail, задачу, звонок) нужно добавить звонок, но так, что бы Бп это делал автоматом, после сохранения карточки!
Как это можно сделать в BPM 7 дизайнере процессов?
Заранее спасибо!
Юрий Тимурович, используйте элемент "Добавление данных". Объектом будет фигурировать "Активность", связь с лидом нужно установить через поле "Лид" в активности.
Спасибо Наталия, а еще один вопросик!
А как теперь эту активность открыть для редактирования? использовать изменение данных и указать объект активность,а связь с созданной ранее активностью ?
Есть необходимость в качестве окна выбора для поля справочника показывать не штатное окно с полями поиска и реестром, а окно с деревом групп соответствующего объекта и полями поиска... Вот интересно, есть ли где в базовой версии пример реализации такого окна выбора? Или все ж самому создавать, творить по образу и подобию раздела придется?
В базовой версии нет такой карточки, где выбор значения лукапного поля происходит из окна с древовидным реестром.
Однако, у каждого лукапного контрола в карточке существует свойство SelectWindowUSI, куда можно подставить USI любого окна в конфигурации, которое будет открываться при нажатии на "лупу".
Таким образом, Вы можете создать свое окно, использовать в нём древовидный реестр (пример таких окон в конфигурации Вы можете найти) и реализовать установку выбранного значения из этого окна в лукапный контрол.
"Резвов Роман" написал:Однако, у каждого лукапного контрола в карточке существует свойство SelectWindowUSI, куда можно подставить USI любого окна в конфигурации, которое будет открываться при нажатии на "лупу".
BPMOnline?
"Резвов Роман" написал:пример таких окон в конфигурации Вы можете найти
Не нашел :) пишу вот сам по аналогии с Базовой страницей групп модуля и базовой страницей раздела
Насчет SelectWindowUSI не знаю, по моему это точно не из BPMonline оперы, но есть у лукапного поля на странице свойство Страница справочника, по моему то что ищете....
Александр, я не это ищу... как назначить свою страницу на lookup я знаю минимум два способа, а нужен мне пример работающей страницы с деревом групп и реестром, но не раздела, там я весь день голову ломаю с пониманием инициализации. Пока не получилось повторить - окно то я создал, вот и пытаюсь добиться чтоб группы грузились, реестр в нем фильтровался :confused:
Роман, спасибо! Только там "скучная" деталь, просто назначили в качестве источника данных объект Группы контактов и все... Хотя вот как потом по выбранной группе отбирают контакты почитаю!
Кстати, что уже получилось: окно с нужным деревом групп проинициализировалось! Теперь добиваюсь чтобы при переходе по группам список фильтровался - вот тут тяжко... разбираюсь с методами из BaseModulePage
Окно получилось. Работает именно так, как и требовалось. Код далек от совершенства и написан пока "начерно", поэтому выкладывать здесь пока смысла не вижу. В качестве родителя использовалось окно справочника LookupGridPage, в качестве "донора" скриптов базовая страница раздела.
Здравствуйте. Возникла сложность с элементом чтение данных.
Мне нужно считать e-mail ответственного по активности. В элементе "чтение данных" указываю все данные:
Затем в элементе "Формула", пытаюсь присвоить созданному в структуре параметру значение e-mail ответственного, но не нахожу его в результате выборки чтения данных.
Снова перехожу в чтение данных - действительно, поле e-mail ответственного пропало, хотя я его и указывал.
На C# написал класс, метод которого подключается к базе данных, собирает нужные данные, формирует PDF файл и отправляет клиенту. В качестве параметра я передаю туда идентификатор счета (Invoice).
Далее, на основе класса и метода, я создаю в SQL ассамблею и процедуру.
И вызываю эту процедуру из BPM.
Возникает ошибка, которую я вижу просто в виде
При этом, если я запускаю эту же сформированную процедуру прямо в SQL Studio - все отлично срабатывает, счет формируется и отсылается. Проблема только при запуске из BPM.
Опытным путем, я установила, что ошибка возникает только в случае, если я в методе подключаюсь к базе данных. Если я просто формирую xml файл, с сохранение его на диске - все срабатывает (т.е. метод вызывается, и все отрабатывается как надо). Но как только я из метода делаю запрос к базе данных - возникает такая ошибка.
Bad Request error 400 – означает, что сервер обнаружил в данном запросе, который ввел клиент, синтаксическую ошибку. То есть - сервер обрабатывает битую ссылку ссылаясь на error 400.
Действительно, если посмотреть на Ваш скриншот, ссылка имеет один лишний слэш. Т.е. подозреваю что дело не в подключении к БД. Попробуйте скопировать адрес запроса и вставить в адресную строку в браузере, скорее всего Вы получите туже ошибку.
А если отсылать запрос без подключения к БД, адрес POST запроса такой же?
> А если отсылать запрос без подключения к БД, адрес POST запроса такой же?
Да. Такой же.
Мне удалось это наладить. Проблtма была именно при вызове процедуры для подключения к базе данных. Без вызова базы данных все работало прекрасно.
Для исправления ошибки надо было сначало запустить локальный сервис Distributed Transaction Coordinator. Потом вышла другая ошибка - о том, что данный процесс уже занят. Ее можно исправить, добавив в Connection String параметр Enlist=false