Здравствуйте!
Где можно найти информацию о свойствах sandbox?

sandbox.publish("UpdateDetail", this.get("Id"), [sandbox.id]);

Например что и куда передается в этой строке. Где хранится UpdateDetail и прочее..

Спасибо большое!

После добавления данного действия в код стала возникать ошибка "Ошибка сохранения: This SqlTransaction has completed; it is no longer usable."

Нравится

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

Добрый день!

"Исаева Сабина" написал:

Где можно найти информацию о свойствах sandbox?

sandbox.publish("UpdateDetail", this.get("Id"), [sandbox.id]);

Общую информацию о свойствах объекта sandbox можно найти здесь:
- http://www.terrasoft.ru/bpmonlinesdk/ (можно воспользоваться поиском)
- http://www.terrasoft.ru/bpmonlinesdk/SubstitutionMechanism.html
- http://www.terrasoft.ru/bpmonlinesdk/ModuleDevelopmentInBPMonline.html

"Исаева Сабина" написал:

Например что и куда передается в этой строке. Где хранится UpdateDetail и прочее..

В данной строке значение this.get("Id") передается в метод, который подписан на сообщение "UpdateDetail" от модуля sandbox.id

UpdateDetail - это название сообщения. Оно может хранится в любом модуле, который подписан на это сообщение.

Пример подписки модуля на сообщение:

  messages: {
                               "UpdateDetail": {
                                               mode: Terrasoft.MessageMode.PTP,
                                               direction: Terrasoft.MessageDirectionType.SUBSCRIBE
                               }
                },
 methods: {
                               init: function() {
                                               this.callParent(arguments);
                                               this.sandbox.subscribe("UpdateDetail", this.onCardUpdateDetail, this, subscribersIds);
                               },
                               onCardUpdateDetail: function(inputArg){
 
                               }
                }

В любом модуле, где реализован данный код, и которая загружена в момент вызова sandbox.publish, выполнится метод onCardUpdateDetail и в него передастся this.get("Id") в переменную inputArg, если sandbox.id содержится в subscribersIds и если публикация и подписка настроена правильно для конкретной версии приложения.

Спасибо.

Буду вам весьма признательна если вы сможете мне помочь с ошибкой.
Я добавила одну ошибочную строчку с sandbox. После компиляции возникли ошибки. "Ошибка сохранения: This SqlTransaction has completed; it is no longer usable." и еще несколько строчек.
После удаления этого кода ошибка не исчезла. Теперь в системе невозможно делать никакие изменения, т.к. выходит эта ошибка.
Можно это как убрать?
Что можно предпринять?

"Исаева Сабина" написал:

Спасибо.

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

Я добавила одну ошибочную строчку с sandbox. После компиляции возникли ошибки. "Ошибка сохранения: This SqlTransaction has completed; it is no longer usable." и еще несколько строчек.

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

Можно это как убрать?

Что можно предпринять?

Сабина, я писал ранее:


выполнится метод onCardUpdateDetail и в него передастся this.get("Id") в переменную inputArg, если sandbox.id содержится в subscribersIds и если публикация и подписка настроена правильно для конкретной версии приложения .

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

Также посмотрите здесь:
https://www.google.com.ua/webhp?sourceid=chrome-instant&ion=1&espv=2&ie…

Вопрос удален..

Сабина, если у Вас остались вопросы, то сообщите нам.

Спасибо, Дмитрий!
Ну вопросов, как говорится, хоть отбавляйте.

sandbox.publish("PushHistoryState", {
hash: "CardModule/ContactPage/view", stateObj: { id: recordId }
});

Здесь, если я правильно понимаю, я передаю Id одной записи.
Как мне передать коллекцию записей(enum, string, array ) ?

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

Ну страничка не ContactPage а произвольная, которая должна принимать коллекцию İd.
(а как подругому можно передать много İd другой странице?)

Для открытия страницы записи передается только один конкретный ID для конкретной карточки.
Пример:

../0/Nui/ViewModule.aspx#SectionModuleV2/OrderSectionV2/OrderPageV2/edit/8838b3bd-80eb-40e1-95c5-c466ea0f6208

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

Сабина, кнопка реализована в схеме BaseSectionV2

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

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

BPMonline 7

подскажите можна ли в схему представления карточки и в схему представления детали добавить свой MESSAGE чтобы делать публикацию/подписку с помощю sandbox?

Нравится

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

Здравствуйте, Владимир.

Переадресовал обращение в департамент разработки. В ближайшее время ожидаем рекомендаций.

Владимир, ответ от разработки следующий:

На данный момент такое невозможно, поскольку у модулей есть список сообщений с которыми этот модуль работает (для детали они определяются не в схемах а в DetailModule, соответственно, доступны только сообщения которые выведены в нём).
1. Можно этот модуль переопределить, но при этом потеряется обновление исходного кода модуля и это не самый лучший вариант;
2. На стороне клиента динамически дописать в определение DetailModule нужное сообщение, но это не очень хороший вариант поскольку использует недокументированные возможности.

Максим, меня как раз интересует возможность дописать динамически нужное сообщение.

Как можно такое реализовать?

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

//Получение существующего дескриптора модуля ViewModule
var description = core.getModuleDescriptor("ViewModule");
//Добавление нового широковещательно сообщения на подписку
description.messages.MyMessage = {direction: "subscribe", mode: "broadcast"}
//Установка  нового описания для модуля (тут можно положится на ссылочный тип переменной description, но лучше установить явно, чтобы не зависеть от реализации метода ядра getModuleDescriptor)
core.setModuleDescriptor("ViewModule", description)

спасибо, Максим!

все получилось :wink:

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