Добрый день. Редакция real-estate 7.7 Интересует следующий момент - можно ли каким нибудь образом на стороне клиента подписаться на события добавления/удаления фотографий?
Цель нашей работы следующая: требуется, что бы фото, которые прикреплены к объектам были видны из сети интернет безо всякой авторизации + для интернет аудитории требуется наложение watermark. Соответственно идея в том, что после того, как фото загружалось / удалялось штатным механизмом запускать свой сервис, который будет например выдирать фото из БД и копировать их к примеру на удаленное хранилище.
Коллеги, возможно кто то сталкивался с подобными задачами, просьба поделиться идеями, как это лучше реализовать.
Про вариант в Odata я знаю, но если все же это делать на стороне terrasoft?
Петр, в схеме GalleryDetail есть метод onDataLoaded, который вызывается когда мы добавляем картинку в галерею.
В схеме GalleryImageViewModel есть метод onImageDeleteClick, который вызывается при клике на кнопку удаления.
В этих методах можно добавить вызов своего сервиса, который будет расшаривать картинки.
После обновления до 7.8 страницы редактирования разных типов документа ведут себя странно. При добавлении открывается нужная страница, а при открытии сохраненной записи - всегда базовая (DocumentPageV2). Подскажите как исправить.
Олег, это скорее частный случай, который требует индивидуального рассмотрения и лучше с ним обратится в техническую поддержку, если не хотите светить сайтом и доступом к нему здесь. Их адрес support@terrasoft.ru
Здравствуйте, есть задача менять и рассчитывать значение мультивалютных полей при загрузки детали заказа.
Используется bpm'online comerce 7.6
Я нашел метод обработки события выбора валюты onCurrencyMenuItemClick, но я думаю он мне не поможет. Подскажите пожалуйста что мне делать или в каком направлении "копать"???
Задание автоматически по стране выбирать валюту и присвоить, рассчитать, все поля с валютой данной страны. Мне не нужно проводить расчеты мне нужно автоматизировать это действие.
В базовой версии сумма хранится в поле "Итого, б.в". Сумма пересчитывается по курсу, указанному в справочнике "Курсы валют", к валюте, указанной в системной настройке "Валюта по умолчанию".
Честно говоря, я не совсем понимаю, почему возник данный вопрос - в статье нет упоминаний системных настроек.
Системные настройки хранятся в объекте SysSettingsValue. Вы можете изменить системную настройку запросом ESQ. В системе для некоторых объектов, например, счет и заказ используются системные настройки. В результате добавления новой записи значение системной настройки увеличивается.
Я зашел в описание системных настроек - было упоминание о этой настройке, сейчас она почему то пропала.
В объекте SysSettingsValue нету такой настройки, настройка базовой валюты находиться в объекте SysSettings.
Спасибо большое за подсказку. Стало ясно как работать с SysSettingsValue. А в клиентских схемах еще проще.
Что касается вопроса автоматизации определения по стране курса валют, допустим я смогу пересчитать
для заданной страны, заданной валюты и по курсу все нужные мне поля, как мне поменять значение валюты для каждого поля и перерисовать, что бы label соответствовали валюте данной страны указанной в заказе?
Необходимо из клиентского модуля выполнить процесс и чтоб он вернул, например, коллекцию значений. Серверный процесс, должен сделать select к сторонней базе, и вернуть то что попало в select.
Задание-сценарий - это функция типа bool. То есть она не сможет возвратить коллекцию.
Пользователь находится в интерфейсе bpm'online и запускает действием процесс. В результате процесс должен:
1) Обратиться к стороннему ресурсу
2) Получить ответ в виде параметра bool
3) Обработать его в процессе
4) Вернуть на клиент.
Здравствуйте,
Вам не нужен бизнес-процесс для выполнения задуманного, вы можете написать свой конфигурационный сервис, и на языке c# написать все что угодно что позволяет язык c#, а делать запросы к БД он явно позволяет. https://academy.terrasoft.ru/documents/technic-sdk/7-8-0/kak-sozdat-svo…
Функция, написанная в сервисе может вернуть как простой тип, так и сложный, массивы, списки, что угодно, сериализуя это в JSON.
На клиенте вы получите результат: https://academy.terrasoft.ru/documents/technic-sdk/7-8-0/kak-programmno…
И делаете с ним что хотите.
Все это можно сделать если сервис и вызов сервиса написан в рамках одной Bpmonline. Если вы хотите сервис иметь на одном сайте, а вызов на другом, то можно даже написать сервис доступный для вызова без авторизации, с другого сайта (CORS) но вроде бы для вашей задачи вам это не нужно. Если нужно то на форуме уже где-то была инструкция как это сделать.
У меня вопрос: в печатной форме есть макрос, например, который форматирует текст. Как его исполнить, в коде сервиса? Это необходимо сделать до конвертации в PDF.
Здравствуйте. Стоит задача сохранить карточку Лида при нажатии на кнопку "Завершить" активности в LeadSectionActionsDashboard.
При нажатии кнопки вызывается метод onExecuteButtonClick схемы ActivityDashboardItemViewModel.
Но как отследить нажатие кнопки Завершить из карточки Лида непонятно.
Заранее спасибо за ответ.
Здравствуйте!
Отследить нажатие кнопки "Завершить" можно попробовать с помощью пробрасывания события.
В методе onExecuteButtonClick добавить публикацию события "SomeEvent" в ActivityDashboardItemViewModel:
this.sandbox.publish("SomeEvent", []);
На странице LeadPageV2 в messages добавить подписку на событие "SomeEvent" :
"SomeEvent": {
mode: Terrasoft.MessageMode.PTP,
direction: Terrasoft.MessageDirectionType.SUBSCRIBE
}
На странице LeadPageV2 в методе subscribeSandboxEvents добавить вызов метода "someMethod" по событию "SomeEvent":
this.sandbox.subscribe("SomeEvent", this.someMethod, this, ...);
На странице LeadPageV2 написать метод "someMethod" , в котором вызывать сохранение Лида.
Заместил ActivityDashboardItemViewModel. Добавил в метод onExecuteButtonClick публикацию события. В свойствах ActivityDashboardItemViewModel в Messages добавил своё сообщение (Публикация, Адресное). В LeadPageV2 в блок messages добавил сообщение, в метод subscribeSandboxEvents добавил subscriber.
При публикации сообщения возникает ошибка: Message UsrOnExecuteButtonClick is not defined in BaseSchemaModuleV2.
Нужно замещать ещё BaseSchemaModuleV2?
И ещё вопрос, существует ли подробная инструкция по использованию сообщений в BPMOnline7.x?
Т.к. активность можно Завершить не только по нажатию на кнопку "Завершить", но и при переходе по ссылке активности, поэтому Вам было предложено сделать через SectionActionsDashboard.
Если делать через LeadPageV2 то можно сделать только по клику на кнопку.
2. В методе execute:
execute: function(options) {
this.sandbox.publish(“SomeEvent”, {});
var elementUId = this.get("ProcessElementId");
var recordId = this.get("Id");
var schemaName = this.get("EntitySchemaName");
if (this.isActivity() && this.hasMiniPage(schemaName)) {
this.showMiniPage(options);
} else {
if (elementUId) {
ProcessModuleUtilities.tryShowProcessCard.call(this, elementUId, recordId);
} else {
this.callParent(arguments);
}
}
},
По идее после этих настроек ошибка при публикации должна была уйти, но при публикации сообщения ошибка " Message UsrOnExecuteButtonClick is not defined in BaseSchemaModuleV2." опять появляется.
В связи с особенностями реализации ActivityDashboardItemViewModel, вариант с событиями всё-таки не получится.
Поэтому, в качестве обходного решения, можно сделать вот так:
В моём случае, наверно правильнее будет наследовать LeadSectionActionDashboard?
При замещении столкнулся с проблемой, заголовок для LeadSectionActionDashboard как и для SectionActionDashbord равен BaseActionDashboard и не понятно какую из схем наследовать
"Demchenko Olha" написал:В связи с особенностями реализации ActivityDashboardItemViewModel, вариант с событиями всё-таки не получится.
Поэтому, в качестве обходного решения, можно сделать вот так:
Друзья, подскажите, как в справочнике "Типы средств связи" создать новый "Тип коммуникации". Например есть необходимость создать вложенный список Email (рабочий, личный), как это реализовано в списке "Телефон"
Зарегистрируйте справочник от объекта "тип коммуникации". Добавьте свой тип. Перепишите метод "getToolsMenuItems" детали ContactCommunicationDetailV2 по аналогии с тем как в этом же методе создаются группы для телефонов и соц. сетей.
Добрый день. Есть справочник с полями(Имя, Описание, Показывать(логическое)).
Подскажите, как сделать фильтр, если Показывать = фолс то не отображать запись в справочнике.
(при нажатии на лупу в всплывающем окне не отображались такие записи)
Прикреплю скриншоты.
Есть два варианта решения:
1) Программированием
2) Распределением прав
Программированием Вы можете создать список элементов для отображения. Пример Вы можете найти в схеме ActivityPageV2 (пакет UIV2). Поле "Результат" фильтруется. Доступные для выбора записи определяются кодом:
"Result":{
lookupListConfig:{
filters:[
function(){
var type =this.get("ActivityCategory");
var filterGroup = Ext.create("Terrasoft.FilterGroup");
filterGroup.add("ActivityCategory",
Terrasoft.createColumnFilterWithParameter(
Terrasoft.ComparisonType.EQUAL,
"[ActivityCategoryResultEntry:ActivityResult].ActivityCategory",
type.value));
filterGroup.add("BusinessProcessOnly",
Terrasoft.createColumnFilterWithParameter(
Terrasoft.ComparisonType.EQUAL,
"BusinessProcessOnly",
0));return filterGroup;}]}},
Правами Вы можете включить администрирование по записям для объекта справочника. Далее, Вам необходимо:
1) Определить права для пользователей, чтобы все видели все записи
2) Удалить содержимое справочника
3) Создать значения, которые должны видеть все пользователи
4) Изменить права по умолчанию - раздать права таким образом, чтобы записи не видели пользователи, у которых Пользователь = false (например, добавив пользователей, которые могут видеть записи в функциональную роль)
5) Создать значения, которые должны видеть пользователи, входящие в функциональную роль с четвертого пункта.
Интеграция с Mandrill была реализована начиная с продукта 7.4, до этого использовалась интеграция с MailChimp. К сожалению, ввиду технологических отличий, на продукте версии 7.2 использовать сервис Mandrill не удастся.
Прошу обратить Ваше внимание, что с версии продукта 7.8 мы перешли на использование email-рассылок в облаке (UniOne).