Добрый день!

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

Задача состоит в том,что есть два поля : значение за год и значение за месяц. Если заполняется значение поля за год ,то автоматически рассчитывается значение за месяц. Если же заполнили значение за месяц ,заполняется значение за год.

Сейчас вычисляемым столбцом является поле "значение за месяц". Данное поле не редактируется.

Нравится

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

Здравствуйте, Светлана!

Рекомендую посмотреть на реализацию вычисления PrimaryPrice поля в схеме OrderProductPageV2.
В атрибутах указывается изменение каких полей необходимо ожидать (columns: ["Price", "Amount", "DiscountAmount", "TaxAmount", "TotalAmount"]) и какой метод вызывать (methodName: "calculatePrimaryValues").

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

Разобралась,спасибо за ответ!

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

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

Идея заключаеться в том что бы сделать custom section (для sales, marketing и так далее) при переходе на которую будет делатся call на наш сервис и получаться список документов, или если человек не авторизирован, он должен пройти процес регистрации/авторизации на нашем ресурсе. после чего человек выбирает документ и смотрит какие действия он может сделать, скажем удалить, изменить, переименовать, загрузить новый.

Итак, следующие вопросы:

1) Для создания приложения достаточно сделать add package набросать туда элементы сделать экспорт и в панели разработчика закрепить архив на созданом приложении?
2) Можно ли кастомизировать отображение, а точнее сам layout что бы при нажатии на секцию было скажем две колонки левая хранит список документов, правая информацию о документе и действия с ним
Как-то так: http://joxi.ru/GrqgDLRFQKQyL2
3) Достаточно ли для таких целей использовать лишь bpmonline studio с js кодом?
4) Если есть необходимость хранить токены закрепленные за юзером, можно ли хранить их на стороне bpmonline, что бы каждый пользователь имел доступ к своему личному аккаунту нашей системы, если да то как.
5) Есть ли какие-то вебинары по разработке приложений для marketplace (знаю что скоро будет проходить, но возможно есть старые какие-то)
6) https://academy.bpmonline.com/documents/technic-sdkmp/7-9/developing-adv... - здесь в примере указан код из hook.io (последний сниппет), но как я понял код дожен быть в bpm studio который показывает как открыть iframe, это ошибка или я чего-то недопонял.
Заранее благодарю за ответ

Нравится

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

Очень странный вопрос) В моей голове примерно такая схема:
1) Выбираешь свой префикс, добавляешь свой пакет и в нём ведёшь разработку.
2) Разрабатываешь что угодно, как угодно (главное чтобы работало). Мы в разработке и интерфейсы перепиливали, и виджеты сторонние вставляли и разделы новые добавляли. Все доработки ограничены лишь вашим воображением)
3) Коммитишь всё в маркетплейс. С тобой связывается аналитик террасофта, проверяет устанавливается ли пакет с доработками(+справочники, сист. настройки и т.п.) Вроде бы протом надо ещё презенташку продукта защитить, но тут я не уверен.

Конкретно по вашим пунктам:
1) Да
2) Да
3) Да
4) Можно использовать справочник, добавить туда поле(тип - зашифрованная строка), туда складировать пароль.
5) Не слышал. Да и чисто логически - чем разработка дополнений/расширений отличается от обычных добаботок по тз? Заказчик иногда такое хочет, что влезло бы в 2-3 маркетплейс-расширения :smile:
6) Тут вообще другой код. С документацией какая-то фигня происходит)

"Варфоломеев Данила" написал:

Очень странный вопрос) В моей голове примерно такая схема:

1) Выбираешь свой префикс, добавляешь свой пакет и в нём ведёшь разработку.

2) Разрабатываешь что угодно, как угодно (главное чтобы работало). Мы в разработке и интерфейсы перепиливали, и виджеты сторонние вставляли и разделы новые добавляли. Все доработки ограничены лишь вашим воображением)

3) Коммитишь всё в маркетплейс. С тобой связывается аналитик террасофта, проверяет устанавливается ли пакет с доработками(+справочники, сист. настройки и т.п.) Вроде бы протом надо ещё презенташку продукта защитить, но тут я не уверен.

Конкретно по вашим пунктам:

1) Да

2) Да

3) Да

4) Можно использовать справочник, добавить туда поле(тип - зашифрованная строка), туда складировать пароль.

5) Не слышал. Да и чисто логически - чем разработка дополнений/расширений отличается от обычных добаботок по тз? Заказчик иногда такое хочет, что влезло бы в 2-3 маркетплейс-расширения :smile:

6) Тут вообще другой код. С документацией какая-то фигня происходит)

Спасибо дружище))) А вот по поводу создание своего префикса, я его создаю в developers page а потом захожу на акк bpmonline там в online studio я делаю сождание пакета скажем qweTestPackage и в него набрасываю элементы? И еще там в доке написано что типа потом надо зайти в Section Wizard и добавить свою секцию, и уже там почему-то префикс стоит Usr и его нельзя сменить
http://joxi.ru/Y2L0OXwS9GEvq2, для пакета marketplace оно по другому создаеться?

"Nickstery" написал:префикс стоит Usr

Префиксы меняются в сист. настройке
pic

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

Добрый день, можно ли в общем окне поиска:

сделать возможность поиска по фио/ почте/ телефону, показывать дубли и все что связано с этим лидом/ контактом?

И есть ли какой-то поиск по почте, что бы не скроллить в панели?

Нравится

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

Мария, в новых версиях системы уже реализован глобальный поиск, который работает по всем полям, в том числе и по почте, номеру телефона и т.д. и т.п. Почитать о нем Вы можете в руководстве пользователя https://academy.terrasoft.ua/documents/studio/7-10/globalnyy-poisk

Здравствуйте, Мария!

Начиная с версии 7.10.0 был добавлен функционал глобального поиска по всем полям раздела.
Поиск в системе по письмам будет реализован в будущих версиях приложения.

Спасибо за ответ, а можно ли настроить,чтобы глобальный поиск происходил по почте и по телефону, т.к. сейчас при вводе почты или моб. поиск происходит по фильтру "ФИО" в Контактах или же по колонке "Лид" в Лидах и т.д., и в итоге не выводит никаких результатов?

"Shevchenko Andrey" написал:Начиная с версии 7.10.0 был добавлен функционал глобального поиска по всем полям раздела.
Поиск в системе по письмам будет реализован в будущих версиях приложения.

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

"Алла Савельева" написал:
Shevchenko Andrey пишет:

Начиная с версии 7.10.0 был добавлен функционал глобального поиска по всем полям раздела.

Поиск в системе по письмам будет реализован в будущих версиях приложения.

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

Life is better than you think :-)


Коллеги, какие то еще действия кроме как настройки, указанные в ссылке на академию, нужно выполнить, чтобы поиск заработал. 7.10.1... поиск не работает(((

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

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

"Мотков Илья" написал:

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

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

Если же Вы используете приложение On-Site Вам необходимо выполнить конфигурирование дополнительного программного обеспечения для использования функционала глобального поиска, по инструкции которую я прикрепил ниже.

Прикрепленный файлРазмер

instrukciyaponastroykeglobalnogopoiskadlyaklientovon-site.doc
44.9 кб


Спасибо большое!! Странно, что этого нет в документации на систему.

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

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

В разделе "Аналитика" у Контрагентов используем элемент "Виджет". Для него создали специальный модуль, в котором просто заменяем html код Виджета своим собственным (создаём кнопку с определённым событием на onclick). Проблема заключается в следующем: таких Виджетов должно быть очень много и все с разным кодом на кнопку.
Есть ли возможность использовать только один созданный конфигурационный модуль, просто передавая в Виджет определённые параметры используя "Параметры модуля", которые задаются при добавлении Виджета, и после этого как-то использовать параметры в самом коде модуля? Или придётся создавать большое количество модулей, меняя внутри код?

Нравится

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

Здравствуйте, это можно сделать, посмотрите в продукте маркетинг, в дэшбордах настройки виджета Campaign average conversion, что на закладке Email totals там в параметрах передан к примеру:
"dividerColumnName": "PercentWeight",
а потом в самом модуле виджета PercentageIndicatorModule считан через var dividerColumn = this.get("dividerColumnName");

Здравствуйте
Скорее всего вам поможет статья https://academy.terrasoft.ru/documents/technic-sdk/7-10/dobavlenie-polz….
Там рассматривается отображение разных значений курса валют, причем тип валюты передается как раз через параметры модуля.
В принципе этот пример можно адаптировать под вашу проблему

Спасибо!
Ваши ответы очень помогли.

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

При добавлении в схему ActionDashboard
как часть ее функциональности - это "островки" активностей

Каким образом настраивается фильтрация активностей туда попадающих, без какой либо дополнительной настройки - показываются все активности в системе.
Само собой такое поведение нежелательно, требуется показывать активности или связанные с текущей сущностью и текущим пользователем или еще по какой либо другой связи.
На Академии не удалось найти информации по этому поводу, обращаемся к помощи коллективного разума сообщества :)
PS: Само собой можно и отладить это дело, но трудоемкость сего процесса может оказаться бессмысленной, если кто-то может дать совет, как минимум в каком направлении смотреть.
Есть предположение что, все "захардкожено" на деталь "Связи" в активностях.

Нравится

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

Здравствуете!
В модуле ActionsDashboardModule есть блок dashboardConfig, в котором настраивается связь активностей с объектом страницы.
Советую ознакомиться со статьей https://academy.terrasoft.ru/documents/technic-sdk/7-9/dobavlenie-instr…, в которой описано за что отвечает каждая строчка ActionsDashboardModule.
Возможно, в вашем случае, указаны не корректные значения для masterColumnName и referenceColumnName.

"Севостьянов Илья Сергеевич" написал:
Мотков Илья пишет:

в которой описано за что отвечает каждая строчка ActionsDashboardModule.

Возможно, в вашем случае, указаны не корректные значения для masterColumnName и referenceColumnName.

Сегодня сам разобрался - не успел в эту тему отписать :)

Да все именно так, для текущей схемы нужно определить секцию modules и в ней специальный конфигурационный блок для ActionDashboardModule

modules: {
    "ActionsDashboardModule": {
        "config": {
            "isSchemaConfigInitialized": true,
            "schemaName": "SectionActionsDashboard",
            "useHistoryState": false,
            "parameters": {
            "viewModelConfig": {
                    "entitySchemaName": "Activity",
                    "dashboardConfig": {
                        "Activity": {
                                "masterColumnName": "Id",
                                "referenceColumnName": "Project"
                        }
                    }
                }
            }
        }
    }
},

где "masterColumnName" - это наименование колонки для связи в текущей схеме,

а "referenceColumnName" - это имя колонки для связи в Активностях.

PS: небольшой оффтоп, а как добавлять на карточку ActionDashboard без "колбасы" (виджета смены стадий, чтобы были только "островки" ?

Добрый день, Илья!

Этот вопрос уже поднимался, решение можно увидеть здесь:
http://www.community.terrasoft.ru/forum/topic/25256#comment-67597

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

Добрый день.

Подскажите, пожалуйста, возможно ли отменить БП, при старте другого БП. Оба БП идут по одной и той же записи.

Просто если стартует второй, то первый не нужен.

Запихать все в один БП невозможно, так как изменение, которое может запустить второй, не предсказуемо.

Нравится

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

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

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

Алла, слишком сложно)

Добавьте в процесс логическое поле "Запущен второй процесс". Это будет техническое поле. По умолчанию значение этого поля - false.

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

В логике второго процесса добавить элемент "Изменить данные", который будет в поле "Запущен второй процесс" устанавливать значение true.

Спасибо большое. Буду пробывать. Жаль, я в этом не мастер )

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

Добрый день!

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

Сейчас показывается, что у страницы нет параметров:

http://shot.qip.ru/00SkLf-415RJco7V2/

Заранее спасибо за совет.

Нравится

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

Насколько я помню в схеме страницы, справа (где localizableStrings), есть пункт Parameters. Накидайте туда переменных, сохраните страницу и попробуйте заново добавить её в бп

Здравствуйте! Инструкция по использованию элемента и созданию страницы: https://academy.terrasoft.ru/documents/technic-sdk/7-10/sozdanie-detali…

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

Добрый день, есть основной бизнес-процесс для создания уведомления и активности, который запускает на выполнение определенный подпроцесс в зависимости от дня недели. Подпроцесс по определенному событию успешно завершается, а основной процесс остается висеть в журнале со статусом “выполняется”, из-за этого возникают проблемы с удалением записей.
Подскажите пожалуйста, как завершить из подпроцесса основной бизнес-процесс?

Нравится

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

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

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

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

Передо мной стоит задача фильтрации, регулировка видимости и обязательности полей в миникарточке лида.
решаю данную проблему бизнес-правилами, но возник ряд проблем/вопросов
1) Например, настройка обязательности не работает - поле обязательно всегда

                                "ICLSegment": {
                                        "ICLSegmentReq": {
                                                "ruleType": BusinessRuleModule.enums.RuleType.BINDPARAMETER,
                                                "property": BusinessRuleModule.enums.Property.REQUIRED,
                                                "conditions": [{
                                                        "leftExpression": {
                                                                "type": BusinessRuleModule.enums.ValueType.ATTRIBUTE,
                                                                "attribute": "LeadType"
                                                        },
                                                        "comparisonType": Terrasoft.ComparisonType.IN,
                                                        "rightExpressions": [
                                                                {
                                                                        "type": BusinessRuleModule.enums.ValueType.ATTRIBUTE,
                                                                        "attribute": "flexibleEuroId"
                                                                },
                                                                {
                                                                        "type": BusinessRuleModule.enums.ValueType.ATTRIBUTE,
                                                                        "attribute": "flexibleSNGId"
                                                                }
                                                        ]
                                                }]
                                        }
}

вероятно, неправильно использую IN фильтр, к сожалению нигде не нашла примеров его использования.
А когда делаю два правила с "comparisonType": Terrasoft.ComparisonType.EQUAL с разными названиями и со сравнением с разными атрибутами(flexibleEuroId/ flexibleSNGId) отрабатывает только второе( последнее добавленное получается)

2) При настройке видимости поля они не сдвигаются автоматически, то есть при скрытии поля остальные
поля, что были ниже, не подтягиваются и там остается пустое место. есть какие-либо методы это
исправить?
3) как задать обязательность поля в миникарточке, чтобы она была обязательна всегда, независимо от
бизнес правил?

Версия 7.10.0.1742

Нравится

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

1) Сравнения Terrasoft.ComparisonType.IN нет. Войдите в bpm, откройте консоль и введите Terrasoft.ComparisonType и вам выведет все возможные варианты
pic
2) У них указан layout. Скорее всего если подтереть у всех полей layout-ы и упорядочить их через index, что-то может получиться. Но не факт.
3) IsRequired: true в values поля. Либо в аттрибуте. Либо через бизнес-правило.

"Варфоломеев Данила" написал:Сравнения Terrasoft.ComparisonType.IN нет

а как тогда задавать условия для обязательности такого типа:
если значение поля LeadType равно type1 или type2 или type3, то поле обязательное для заполнения. может как-то через несколько conditions, соединенных с OR, но я такого тоже что-то не нашла

"Zaitova Liubov" написал:через несколько conditions, соединенных с OR

Именно.

logical: Terrasoft.LogicalOperatorType.OR,
conditions: [{cond.1}, {cond.2},....]

"Zaitova Liubov" написал:тоже что-то не нашла

Потому что sdk террасофта по правилам почему-то не дописано. Настоятельно советую эту запись в блоге

Рекомендую ознакомиться с постом по ссылке: http://www.community.terrasoft.ru/forum/topic/12633#comment-68765

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

"Варфоломеев Данила" написал: У них указан layout. Скорее всего если подтереть у всех полей layout-ы и упорядочить их через index, что-то может получиться. Но не факт.

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

	{
	"operation": "insert",
	"name": "AdditionFieldsContainer",
	"parentName": "MiniPage",
	"propertyName": "items",
	"values": {
		"itemType": this.Terrasoft.ViewItemType.CONTAINER,
		"layout": {"column": 0, "row": 12, "colSpan": 24},
		"items":
			[
				{
					"name": "ICLSegment",
					"values": {
							"isMiniPageModelItem": true,
							"visible": {"bindTo": "isNotViewMode"}
						},
						"index": 0
					},
					{
						"name": "ICLPodSegment",
						"values": {
							"isMiniPageModelItem": true,
							"visible": {"bindTo": "isNotViewMode"}
								},
						"index": 1
						} ,
						{
						      "name": "ICLAddSegment1",
							"values": {
								"isMiniPageModelItem": true,
								"visible": {"bindTo": "isNotViewMode"}
							},
							"index": 2
						}
                                    ]
                           }
}

"Zaitova Liubov" написал:но, к сожалению, ничего не изменилось. все так же остается пустое место

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

"Максим Шевченко" написал:Невозможно, обычный контейнер не может оставлять пустых мест. Скорее всего вы либо не почистили кеш, либо пробелы остались в вашем другом грид-лайауте. Проинспектите в f12 эти пустые места и поймите к чему они имеют отношение.

кэш чистила. просмотрела через f12. пустые места выделяются под контейнер поля. во вложении скан. красным выделен мой конейнер, в котором 8 мои полей. под каждое поле выделяется свой контейнер. внутри контейнера 2 подконтейнера - для заголовка и для контрола. видимость для двух внутренних прописывается при работе бизнес-правила, а для внешнего нет. когда я в режиме отладки добавила display:none для LeadMiniPageICLPodSegmentContainer(внешний контейнер поля) , то пустое место пропало.
вот это я обнаружила, только вот не могу из этого никакие выводы сделать - как мне нужно было описывать деталь, чтобы этого не было.

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

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

diff: {
...
"isRequired":  {bindTo: "TargetAttribute"},
...
},

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

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

PS: Я так понимаю механика "привязки" в текущей имплементации - существенно отличается от таковой в классическом Ext.JS (по крайней мере 4-ой редакции). Если кто-то мог бы в двух словах, объяснить принцип работы "bindTo" в текущей имплементации.

Нравится

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

Добрый день.

Свойство bindTo может как ссылаться на имя булевого атрибута, так и на имя метода из секции methods. Для корректной работы метод должен в итоге возвращать true или false.

Также поскольку в bpm'online используется библиотека backbonejs, Вы можете воспользоваться его обработчиком событий on.

К примеру:

this.on("change:fieldName", function(){
	//some logic
	this.set("requiewdAttributeName", true);
});

"Мотков Илья" написал: так и на имя метода из секции methods. Для корректной работы метод должен в итоге возвращать true или false.

вот в этой теме я уже затрагивал проблему биндинга свойства непосредственно на метод, он вызывается на исполнение по 6-10 раз.

"Мотков Илья" написал:Также поскольку в bpm'online используется библиотека backbonejs, Вы можете воспользоваться его обработчиком событий on.

Это опять-же не позволит мне присвоить значение в свойство view (enabled/isRequired/visible)
Это позволит среагировать на изменение атрибута модели, и в лучшем случае установить другой атрибут на который забинжено свойство.
Или все таки есть возможность установить свойство isRequired или visible - вручную, уже после объявления и построения view-model, например через имя поля (атрибута модели) на которое биндится "вьюха"?
хотя это поведение однозначно реализуется, так как на изменение атрибута забинженого например на enabled, реагирует некий обработчик - который собственно инициирует как изменение свойства модели - так и соответствующую мутацию view, что приводит к тому что поле становится недоступным.
отладкой поймать не удается - слишком много побочных вызовов в all-combined.js

"Севостьянов Илья Сергеевич" написал:но иметь возможность описать метод предварительной обработки, результат вычислений которого уже в конечном итоге и установить в свойство.

Можете забиндится и на метод, который в результате выполнения логики вернет true или false, но учтите что вся логика должна быть синхронна. Если же часть логики будет асинхронна, то вам необходимо делать bind на атрибут. А уже в подписках вроде этой:

this.on("change:fieldName", function(){
        //some logic
        this.set("requiewdAttributeName", true);
}, this);

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

"Севостьянов Илья Сергеевич" написал:Или все таки есть возможность установить свойство isRequired или visible - вручную, уже после объявления и построения view-model, например через имя поля (атрибута модели) на которое биндится "вьюха"?

Нет, данная связь уходит в сам контрол, и у вас нет способа на него влияеть после создания.

"Максим Шевченко" написал:Можете забиндится и на метод

ну так этот метод вызывается по 6-10 раз при загрузке model-view,
Способа повторно инициировать значение свойства через вызов этого метода, по требованию - я так понимаю - нет ?

"Севостьянов Илья Сергеевич" написал:так понимаю - нет ?

Нет.

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