bpmonline не предполагает таких операций. Тем не менее данную задачу можно попробовать реализовать через бизнес процесс. Вам необходимо перебрать все записи в соответствующей таблице (объекте). Для каждого раздела объект "Файлы и ссылки" свой (как и таблица в базе данных).
1) Начальный элемент
2) Получение данных о файле элементом "Чтение данных"
3) "Исключающее ИЛИ" с двумя условными потоками (если файлов для выгрузки больше нет, то конец процесса), иначе идем дальше.
4) Элемент "Задание-сценарий" с приблизительным кодом:
В моем случае не нужно было универсальное решение для всех объектов. Как вариант, можете в параметрах прокидывать название объекта или родительской схемы и идентификатор записи.
Необходимо переопределить несколько ф-ий мастера раздела. Создаю замещающий клиентский модуль, наследуюсь от Модуля мастера создания раздела. Что бы я не делал, получаю ошибки: cannot read property 'replace' of undefined, или cannot read property 'isDestroyed' of undefined. Подскажите как сделать правильно.
Мастер раздела - это не только конфигурация, а еще и ядро. Изменение конфигурации не повлияет на ядро. Исправлять ядро пользовательскими средствами нет возможности, соответственно изменения функций мастера раздела смогут его сломать.
Олег, уточни, в каком момент возникает ошибка? при сохранении схемы?
А какие функции хотите переопределить? Может это не предусмотрено в bpm.
Ошибка возникает при открытии мастера раздела. Причем я ничего не менял. Просто создал замещающий модуль SectionDesigner. Пробовал с "пустым" кодом:
define("SectionDesigner", [],
function() {});
Пробовал полностью скопипастить код, или оставить файл пустым - безрезультатно. Мне бы просто его запустить, а дальше я разберусь.
Олег, при замещении необходимо полностью замещать модуль (локал. стринги, месседжи, параметры и т.д.). Т.е. здесь работает базовая логика замещение модуля.
Но хотелось бы отметить, если Вы переопределяете базовые методы и если обновите приложение на новые бинари, то базовые изменения не вступят в силу.
Создал раздел через мастер разделов. В объекте раздела установил для справочного поля "Автор" значение по умолчанию - Текущий пользователь. При сохранении получаю ошибку - Конфликт инструкции INSERT с ограничением FOREIGN KEY "FKMUz8mt4GOdEmSGqDq6UKqFRng". Конфликт произошел в базе данных "ClientPortal_7.6.0_SO", таблица "dbo.Contact", column 'Id'. Выполнение данной инструкции было прервано.
Если очистить поле - эффект тот же.
Если убрать значение по умолчанию - все сохраняется.
Здравствуйте! В разделе "Активности" есть представление "Планирование визитов". На нем расположен список контрагентов, расписание и карта.
Если я добавляю эти объекты в свой раздел,то они располагаются друг под другом. Подскажите, пожалуйста, где можно настроить их позиции так, чтобы они были как на планировании визитов (т.е., в строчку, а не столбиком)?
Скиньте, пожалуйста, скриншот того, как Вы добавляете объекты в свой раздел и как они располагаются друг под другом.
Если я правильно понял, то Вы имеете в виду объекты: реестр, расписание и карта. Если это те объекты, о которых речь, то их позиционирование регламентируется CSS стилями. Подробнее о расположении элементов в строку с помощью CSS можно почитать тут: http://htmlbook.ru/samlayout/blochnaya-verstka/strochno-blochnye-elemen…
И по запросу в Google:
css div расположение элементов в строку
Если я правильно понял, то Вы имеете в виду объекты: реестр, расписание и карта. Если это те объекты, о которых речь, то их позиционирование регламентируется CSS стилями.
Действительно, добавил свой модуль с разметкой и подключил его. Все заработало. Спасибо!
Здравствуйте. Скажите пожалуйста, можно ли убрать из воронки продаж определенные стадии?
Стандартный функционал фильтрации не подходит, т.к. стадия в воронке все-равно присутствует, но со значением 0.
Как отфильтровать воронку,чтобы осталось всего 5 нужных стадий?
Если необходимо минимум вмешательства, а стадии используются не совсем как задумано, то можно их отфильтровать следующим образом: в воронке не отображаются конечные не успешные стадии. То есть, можно всем тем, которые не должны отображаться, установить поле End = 1, а поле Successful = 0.
Если же этот функционал используется, то фильтрацию можно добавить только вмешательством в код. Необходимо замещать модуль OpportunityFunnelDrillDownProvider, полностью копировать его код в новый модуль, и вносить необходимые изменения в метод getFunnelAllowedStagesFilters (для версии 7.6) либо в initOpportunityStage (для версии 7.5).
"Антон Кравченко" написал:а разве это не решается через Справочники - Стадии продаж?
не совсем корректное решение, в случае, если пользователь использует референтный процесс. Предложение решение позволяет регулировать вывод нужных стадий в воронке не нарушая базовую логику работы системы.
Изначально был сделан новый процесс продаж и лишние стадии были удалены, но они снова появились после очередного обновления системы и установки данных, привязанных к пакетам.
"Пащенко Александр Сергеевич" написал:Изначально был сделан новый процесс продаж и лишние стадии были удалены, но они снова появились после очередного обновления системы и установки данных, привязанных к пакетам.
Лишние стадии мешают не только в воронке продаж, но и в самой карточке продажи
"Пащенко Александр Сергеевич" написал:Изначально был сделан новый процесс продаж и лишние стадии были удалены, но они снова появились после очередного обновления системы и установки данных, привязанных к пакетам.
если используется свой доработанный процесс, то вариант с удалением значений из справочника вполне подойдет, так как ненужные стадии не используются.
Прошу подсказать о возможности реализации следующего кейса. Возникла задача создания на вкладке в разделе "Активности" отображения другого обособленного раздела "Маршруты" со всеми возможностями базового функционала (Фильтрация, группирование и т.д.).
Поразмыслив, решили, что это получается отрэндеренный раздел но только по сути на вкладке другого раздела. На данном этапе это не связанные объекты по колонкам, но в перспективе по "Маршрутам" будут создаваться "Активности".
Как мы думаем, это создание дублирующего клиентского модуля BaseSectionV2 с его функционалом, но как избежать нарушений в мэсэджах и ивэнтах стандартного BaseSectionV2.
Буду признателен за совет! Возможно кто-то уже сталкивался с подобного рода задачами.
Спасибо!!!
Если в дальнейшем Вам придется создавать активности по маршрутам, следует создать отдельно раздел маршруты который будет работать с объектом маршрут. Далее добавить кнопку в тот раздел из которого будет выполняться переход в раздел Маршруты (например в ActivitySectionV2). Представления привязаны к объекту. Следует учитывать, что кнопка будет выполнять исключительно функцию перехода, так как будет работать с другим объектом.
Коллеги, сегодня состоялся релиз новой версии bpm’online ITIL service 7.6 — системы для профессионального управления сервисом. Обновленный продукт помогает эффективно управлять всем контуром задач IT-департамента, используя эталонные бизнес-процессы: от обработки обращений до планирования изменений и выпуска новых релизов.
Для быстрого поиска корневой причины инцидента реализована сервисно-ресурсная модель — взаимосвязи конфигурационных единиц и сервисов отображаются в удобном графическом виде. Сотрудник сервисной службы может устранить проблему в считанные минуты, оперативно выявив нерабочий сервис и отследив его источник. В то же время, руководитель сервисной службы с помощью сервисно-ресурсной модели сможет определить, какие сервисы будут затронуты во время внутренних работ, и гибко управлять изменениями в IT-инфраструктуре компании.
Функциональность портала самообслуживания дополнена главной страницей для быстрого доступа пользователей к последним обращениям и популярным статьям базы знаний. Здесь можно зарегистрировать новое обращение и найти ответ на интересующий вопрос.
В обновленном продукте значительно расширен блок аналитики. Дэшборды разделов «Контакты» и «Контрагенты» помогут оценить уровень удовлетворенности клиентов, а итоги раздела «Активности» — определить самых продуктивных сотрудников. Новый виджет — индикатор KPI — поможет контролировать эффективность работы сотрудников: скорость реакции на обращение, количество закрытых обращений, уровень удовлетворенности пользователей и т.п. Система позволяет указать нормативные значения показателя, чтобы не только просматривать его текущее значение, но и анализировать отклонения.
Для гибкого управления исходящими и входящими коммуникациями в продукте стали доступны статические и закрытые очереди. Статическая очередь может быть наполнена руководителем вручную, например, списком тех контактов, от которых нужно получить обратную связь по качеству предоставленного сервиса. А в закрытой очереди общий список записей скрыт для оператора — система отобразит информацию по следующей записи только после взятия ее в работу.
В новой версии платформы bpm’online полностью обновлена интеграция с Facebook, на порядок упрощена работа с email-сообщениями. Видеозвонки добавят интерактивности в общении, а теги и новые фильтры — ускорят поиск данных. Новые виджеты в итогах, мультивалютные поля, визуализация взаимосвязей между компаниями — эти и другие возможности обеспечат комфорт и удовольствие каждому, кто работает в bpm’online. Подробнее >>
Здравствуйте, подскажите пожалуйста, как правильно собрать пакет на версии 7.6. При создании пакетов получаю ошибку
E:\WWW\project76\Terrasoft.WebApp\DesktopBin\WorkspaceConsole>Terrasoft.Tools.Wor
kspaceConsole.exe -userName=Supervisor -userPassword=Supervisor -workspaceName=D
efault -operation=SaveSVNContent -destinationPath=D:\Temp\Repository\ -contentTy
pes=Repository -workingCopyPath=D:\Temp\Source\ -repositoryUri=http://SERVER-iis
:8888/svn/project76/trunk/project76 -sourceControlLogin=Supervisor -sourceControl
Password=myPass
Ошибка: Unable to load one or more of the requested types. Retrieve the LoaderEx
ceptions property for more information.
Работа утилиты закончена.
лог:
Ошибка: Unable to load one or more of the requested types. Retrieve the LoaderExceptions property for more information.
at System.Reflection.RuntimeModule.GetTypes(RuntimeModule module)
at System.Reflection.Assembly.GetTypes()
at Terrasoft.Common.ReflectionUtilities.FindTypeByShortName(Assembly assembly, String name)
at Terrasoft.Core.SchemaManagerItem`1.get_TypeName()
at Terrasoft.Core.Entities.SystemEntitySchemaManager.InitializeSafeSchema(ISchemaManagerItem schemaManagerItem, Assembly assembly)
at Terrasoft.Core.SchemaManagerItem`1.get_SafeInstance()
at Terrasoft.Core.Manager`2.FindInstanceByName(String name)
at Terrasoft.Core.SystemUserConnection.InitializeCurrentUser(String userName, TimeZoneInfo timeZone, String clientIP, String agent, Boolean logSessionStart)
at Terrasoft.Core.AppConnection.InitializeSystemUserConnection(ConfigurationSection schemaManagerProviderConfigurationSection)
at Terrasoft.Core.AppConnection.Initialize(ConfigurationSectionGroup appConfigurationSectionGroup)
at Terrasoft.Tools.WorkspaceConsole.WorkspaceConsoleApplication.Initialize(ConfigurationSectionGroup appConfigurationSectionGroup)
at Terrasoft.Tools.Common.BaseConsoleApplication`2.Run(String[] args)
У нас такая же ошибка возникала, если бинарные файлы были распакованы через проводник Windows, а не через архиватор.
Распакуйте бинарные файлы с помощью действия "Extract to.." WinRAR или 7-zip, подготовьте заново WorkspaceConsole согласно с разрядностью Вашей операционной системы. После этих действий у нас ошибки не возникало.
Проводник Windows при копировании файлов из архива может так и оставить часть данных в сжатом виде.
Отсюда делаем выводы, что лучше всё же пользоваться архиваторами, они знают своё дело :)
О возможности выгрузки всего рабочего пространства из базы данных я знаю, но хотелось бы понять, почему не получается выгрузить из репозитория.
Во втором случае я как-раз получаю указанную ошибку, если указан ключ -packageName
Если данный ключ не указывать, то получаю пустой манифест. В конфигурации 1 пользовательский пакет и пакет Custom.
Также после сбора пакета из БД пытаюсь установить пакет на бандл 7.6.0.996_SalesOmnichannel_Marketing_Softkey_MSSQL_RUS
и возникает следующая ошибка
Ошибка: Unable to load one or more of the requested types. Retrieve the LoaderExceptions property for more information.
at System.Reflection.RuntimeModule.GetTypes(RuntimeModule module)
at System.Reflection.Assembly.GetTypes()
at Terrasoft.Common.ReflectionUtilities.FindTypeByShortName(Assembly assembly, String name)
at Terrasoft.Core.SchemaManagerItem`1.get_TypeName()
at Terrasoft.Core.Entities.SystemEntitySchemaManager.InitializeSafeSchema(ISchemaManagerItem schemaManagerItem, Assembly assembly)
at Terrasoft.Core.SchemaManagerItem`1.get_SafeInstance()
at Terrasoft.Core.Manager`2.FindInstanceByName(String name)
at Terrasoft.Core.SystemUserConnection.InitializeCurrentUser(String userName, TimeZoneInfo timeZone, String clientIP, String agent, Boolean logSessionStart)
at Terrasoft.Core.AppConnection.InitializeSystemUserConnection(ConfigurationSection schemaManagerProviderConfigurationSection)
at Terrasoft.Core.AppConnection.Initialize(ConfigurationSectionGroup appConfigurationSectionGroup)
at Terrasoft.Tools.WorkspaceConsole.WorkspaceConsoleApplication.Initialize(ConfigurationSectionGroup appConfigurationSectionGroup)
at Terrasoft.Tools.Common.BaseConsoleApplication`2.Run(String[] args)
Работа утилиты закончена.
При загрузке пакета ошибка похожа на проблему из первого поста, но распаковка файлов из архива не помогла. Установлена система Win 8.1 + NetFramework 4.6
Александр, предлагаю продолжить наше взаимодействие в рамках обращения в техническую поддержку.
Пожалуйста, направьте на support@terrasoft.ru cодержимое папки "Packages".
Сергей,добрый день! Отписался в техническую поддержку 1 сентября после прочтения Вашего поста. Скажите пожалуйста, есть ли какие-то результаты по данному вопросу?
Сергей,добрый день! Отписался в техническую поддержку 1 сентября после прочтения Вашего поста. Скажите пожалуйста, есть ли какие-то результаты по данному вопросу?
Здравствуйте. Подскажите пожалуйста как изменить\переопределить существующий компонент. И как добавить свой.
На данный момент в модуле в котором использую компонент делаю так:
Ext.define("Terrasoft.controls.UsrTextEdit",{
extend:"Terrasoft.BaseEdit",
alternateClassName:"Terrasoft.UsrTextEdit",
left:"",
top:"",
combineStyles:function(){ var styles =this.callParent(arguments); var left =this.left?this.left:""; var top =this.top?this.top:""; var wrapStyle = styles.wrapStyle; if(left){
wrapStyle.left= left; } if(top){
wrapStyle.top= top; } return styles; },
init:function(){ this.callParent(arguments); this.addEvents( "onmousedown", "onmousemove", "onmouseup" ); },
initDomEvents:function(){ this.callParent(arguments); var el =this.getEl();
el.on({ "onmousedown":{
fn:this.onMouseDown,
scope:this }, "onmousemove":{
fn:this.onMouseMove,
scope:this }, "onmouseup":{
fn:this.onMouseUp,
scope:this } }); },
onMouseDown:function(e){
Console.Log('onMouseDown'); this.fireEvent("onmousedown",this, e); },
onMouseMove:function(e){
Console.Log('onMouseMove'); this.fireEvent("onmousemove",this, e); },
onMouseUp:function(e){
Console.Log('onMouseUp'); this.fireEvent("onmouseup",this, e); } });
Но таким способом не получилось подписаться на новые события, в лог ничего не выводиться, combineStyles отрабатывает нормально.
Правильно организованная работа в bpm’online и максимальное использование всех функциональных возможностей может принести бизнесу значительные преимущества.