Здраствуйте! Пробовал добавить кнопку в стадии в соответствии с документацией: https://academy.terrasoft.ru/documents/technic-sdk/7-8/dobavlenie-novogo...

Документация: Для замещающей клиентской схемы необходимо установить в качестве родительского объекта схему SectionActionsDashboard пакета ActionsDashboard. В качестве заголовка также можно указать значение SectionActionsDashboard.

При замещены данной схемы выбираю Родительский объект "BaseActionDashboard" пакета ActionDashboard. Согласно название модуля будет BaseActionsDashboard, а нужно что бы было SectionActionDashboard. При изменении названия модуля на SectionActionDashboard остается название BaseActionDashboard.

Подскажите пожалуйста что делаю не так.

Нравится

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

Добрый день, Дмитрий!
Вы пытаетесь какую схему заместить? В документации указанно, что родителем необходимо выбирать схему SectionActionsDashboard, Вы же выбираете BaseActionDashboard, соответственно система его и выбирает родителем.

Сохраните Ваш код, который Вы прописали в diff, перейдите в конфигурацию, нажмите добавить "Замещающий клиентский модуль" и сразу в поле родительский объект скопируйте название "SectionActionsDashboard". Как только Вы его выбирите, то все будет как надо.

Вот что должно получится:

Подскажите пожалуйста, как сделать свою картинку в формате svg. Которая отображалась корректно. Я добавил свою картинку формата svg, но она отображается только при наведении на нее (прикрепил рисунок).
Сылка на картинку:
http://www.flaticon.com/free-icon/right-arrow_137624#term=next&page=1&p…

Добрый день, Дмитрий!

Ссылка на инструкцию по созданию файла формата svg https://svgontheweb.com/ru/

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

Добрый день!
Вводная: Клиенту не удобно использовать деталь характеристика у Продукта. Хочет все поля заполнять в самой карточке. Характеристики разные в зависимости от типа продукта.
Простое решение: Добавить все поля-характеристики в карточку и скрывать в зависимости от типа.
Вопрос: Но хотелось бы сделать красиво. Есть ли возможность для BPMOnline 7.8 отображать поле и привязывать его к колонке объекта на этапе инициализации карточки редактирования? Ext.JS позволяет это сделать, но попытки реализовать по примерам для него к успеху не привели. Прошу помочь небольшим примером.

Нравится

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

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

Поля можно скрывать бизнес-правилами. Пример:
https://academy.terrasoft.ru/documents/technic-sdk/7-8/pravilo-bindpara…

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

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

Поля можно скрывать бизнес-правилами


Здравствуйте, Илья! Да, через бизнес-правила тоже можно. Но, и скрытие полей кодом, и через правила требует внесения изменений в код, каждый раз, при добавлении нового типа продукта. Необходимо сделать универсально. Т.е. динамически удалять/добавлять поля. А сами имена полей и зависимость от типа получать из справочника. При такой реализации, достаточно будет добавить запись в такой справочник, а код страницы редактирования останется прежним. Именно поэтому, нужен пример создания поля динамически.

Здравствуйте, Эмин.

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

Более простым, но не столь функциональным решением будет использовать стандартные свойства visible элементов и добавлять поля на карточку стандартными

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

Добрый день, уважаемые коллеги!

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

Нравится

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

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

Рис. 1

А для того, чтобы настройки (отображение и сортировка) колонок были сохранены для всех пользователей, необходимо, при сохранении (в режиме настроек колонок, выбрать опцию [Сохранить для всех пользователей]:


Рис. 2

Обратите внимание: в случае, если пользователь системы самостоятельно настроил колонки или сортировку реестра, то изменения, внесенные для всех пользователей, для него не применятся (данные является персональными и хранятся в базе данных). В этом случае необходимо удалить настройки колонок, сохраненные для пользователей, чтобы произошла замена. Самый простой способ это сделать – очистить профиль пользователя (Главное меню - Профиль - Восстановить настройки по умолчанию) (данное действие необходимо проделать под каждым пользователем). Затем же повторить сохранение колонок для всех пользователей (рис. 2).

Детальную информацию по настройке колонок Вы можете получить по ссылке: Настройка колонок реестра.

Огромное спасибо!

"Мотков Илья" написал:В этом случае необходимо удалить настройки колонок, сохраненные для пользователей, чтобы произошла замена

А как удалить только для конкретного раздела или детали?
Кстати, как идея для реализации - иногда надо сбросить только что-то конкретное

Здравствуйте.
Идея к реализации хорошая. На данный момент такое можно сделать только манипуляциями над БД. Удалением конкретных строк в таблице SysProfileData по ключу [Key], и при необходимости по пользователю, колонка ContactId.

К примеру удаление настроек детали виз на странице счетов:
DELETE FROM SysProfileData WHERE [Key] = 'InvoicePageV2VisaDetailV2'

"Максим Шевченко" написал:Удалением конкретных строк в таблице SysProfileData по ключу [Key], и при необходимости по пользователю, колонка ContactId.

Спасибо за информацию, буду знать. Иногда это полезно.

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

Здравствуйте. Зарегистрировал демо-версию приложения. Перешёл по ссылке в письме на свою страницу и вот что увидел.Картинка
Только начинаю разбираться в приложении, потому не понимаю что пошло не так.

Нравится

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

Добрый день, Антон!

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

В случае, если у Вас возникнут вопросы, пожалуйста, обратитесь в службу поддержки support@terrasoft.ru

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

Как обновить приложение с версии 7.8.2 на с 7.8.3

Не могу найти документацию.

Нравится

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

Добрый день, Максим!

Документацию по обновлению системы Вы найдете по ссылке:
https://academy.terrasoft.ru/documents/instrukciya-po-obnovleniyu-bpmon…

За необходимым дистрибутивом Вам необходимо обратиться в службу поддержки:
support@terrasoft.ru

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

Добрый день!

ПРИМЕР:

Есть "ВХОДЯЩЕЕ - НЕОБРАБОТАННОЕ" письмо, адресованное следующим пользователям:

- Пользователь 1
- Пользователь 2

Пользователь 1 делает письмо "ОБРАБОТАННЫМ"
и у Пользователя 1 письмо попадает во "ВХОДЯЩИЕ - ОБРАБОТАННЫЕ"

И что самое важное:
у Пользователя 2 письмо тоже попадает во "ВХОДЯЩИЕ - ОБРАБОТАННЫЕ"

Нам необходимо чтобы так не происходило.

Если один пользователь обработал письмо, то только у него оно должно попасть во "ВХОДЯЩИЕ - ОБРАБОТАННЫЕ".

У остальных оно должно остаться во "ВХОДЯЩИХ - НЕОБРАБОТАННЫХ".

Как это осуществить?

Нравится

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

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

Вы можете реализовать данный функционал следующим образом:
1) добавить поле логическое поле «Обработано» на деталь «Участники активности»;
2) заместить схему «EmailItemSchema» и переопределить метод «setIsNeedProcessFalse», в котором вызывать установку признака true в созданное поле «Обработано» для записи, у которой в поле ActivityParticipant указан контакт текущего пользователя;
3) заместить схему «CommunicationPanelEmailSchema» и переопределить метод «addFilters» где реализовать фильтрацию на основании значения поля «Обработано» детали «Участники активности».

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

Добрый день, подскажите как поставить фильтр на открывающееся окно выбора основного контакта для контрагента? Нашел что подключается для этого островка ContactProfileSchema но как туда прокинуть фильтр не смог разобраться

Нравится

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

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

Вы просто очистили кэш? или пересохранили схему?

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

Добрый день. Как можно стандартными средствами реализовать вывод html блока на странице редактирования карточки.
В HTML блок будет подгружаться исходные данные HTML письма присланное на почту.

Нравится

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

В разделе "активности" сделал что бы для разного типа записей открывались разные страницы.
На странице редактирования которая осталась деталь работает нормально.

А вот на новой странице имеет вот такой вид:

При попытке настроить колонки в консоль вываливается вот такая ошибка и страница зависает.

Где может быть косяк?

Код страницы:

define("Activity1Page", ["BaseFiltersGenerateModule", "ConfigurationEnums", "ConfigurationConstants",
                        "DuplicatesSearchUtilitiesV2"], function(BaseFiltersGenerateModule, Enums, ConfigurationConstants) {
        return {
                entitySchemaName: "Activity",
                details: /**SCHEMA_DETAILS*/{
                        ActivityAddress: {
                                schemaName: "ActivityAddressDetailV2",
                                filter: {
                                        masterColumn: "Id",
                                        detailColumn: "Activity"
                                }
                        }
                }/**SCHEMA_DETAILS*/,
                messages: {
                        "DetailChanged": {
                                mode: this.Terrasoft.MessageMode.PTP,
                                direction: this.Terrasoft.MessageDirectionType.SUBSCRIBE
                        }
                },
                diff: /**SCHEMA_DIFF*/[
                        {
                                "operation": "insert",
                                "parentName": "Header",
                                "propertyName": "items",
                                "name": "CustomerLocation",
                                "values": {
                                        "bindTo": "CustomerLocation",
                                        "layout": {"column": 6, "row": 4, "colSpan": 6},
                                        "enabled": {"bindTo": "isAccountSet"}
                                }
                        },
                        {
                                "operation": "merge",
                                "parentName": "Header",
                                "propertyName": "items",
                                "name": "ShowInScheduler",
                                "values": {
                                        "bindTo": "ShowInScheduler",
                                        "layout": {"column": 0, "row": 4, "colSpan": 6}
                                }
                        },
                        {
                                "operation":"remove",
                                "name":"ProfileContainer"
                        },
                        {
                                "operation":"remove",
                                "name":"Priority"
                        },
                        {
                                "operation":"insert",
                                "name":"Topic",
                                "propertyName": "items",
                                "parentName": "Header",
                                "values": {
                                                "layout": { "column": 12, "row": 3, "colSpan": 12 },
                                                "bindTo": "Topic"
                                }
                        },
                        {
                                "operation": "insert",
                                "parentName": "GeneralInfoTab",
                                "propertyName": "items",
                                "name": "ActivityAddress",
                                "index":0,
                                "values": {
                                        "itemType": Terrasoft.ViewItemType.DETAIL
                                }
                        }
                ]/**SCHEMA_DIFF*/,
                methods: {
                        isAccountSet: function(){
                                if(!this.get("Account")){
                                        this.set("CustomerLocation",false);
                                }
                                return (this.get("Account"))? true : false;
                        },
                        onEntityInitialized: function () {
                                this.callParent(arguments);
                                this.setActivityCategory();
                                this.sandbox.subscribe("DetailChanged", function(){this.setMeetingNotes();},this,["somekey"]);
                        },
                        onDetailChanged: function () {
                                this.callParent(arguments);
                                this.setMeetingNotes();
                        },
                        onSaved: function () {
                                if(this.get("Operation")=="add" && this.get("CustomerLocation")){
                                        this.addCustomerLocation();
                                        this.set("Operation","edit");
                                }
                                this.callParent(arguments);
                        },
                        changeSubject: function(){
                                this.set("Title",(this.get("Account")?this.get("Account").displayValue:"") + " / EVOQIA: " + (this.get("Topic")?this.get("Topic"):""));
                        },
                        setMeetingNotes: function(){
                                var selectQuery = Ext.create("Terrasoft.EntitySchemaQuery", {
                                                rootSchemaName: "ActivityAddress"
                                        });
/*****************************************/
                                 }
                        },
                        addCustomerLocation: function(){
                                var deleteQuery = this.Ext.create("Terrasoft.DeleteQuery", {
                                        rootSchemaName: "ActivityAddress"
                                });
                                /*****************************/
                        },
                        changeAddress: function(){
                                if(this.get("CustomerLocation")){
                                        if(this.get("Operation")=="add"){
                                                this.save({isSilent:true});
                                        }else{
                                                this.addCustomerLocation();
                                        }
                                }else{
                                        var deleteQuery = this.Ext.create("Terrasoft.DeleteQuery", {
                                                rootSchemaName: "ActivityAddress"
                                        });
                                        var entityIdFilter = Terrasoft.createColumnFilterWithParameter(
                                                        this.Terrasoft.ComparisonType.EQUAL, "Activity", this.get("Id"));
                                        deleteQuery.filters.add("entityIdFilter", entityIdFilter);
                                        deleteQuery.execute(function(){this.updateDetails();this.setMeetingNotes();},this);
                                }
                        }
                },
                rules: {},
                attributes: {
                        "Subject":{
                                dataValueType: Terrasoft.DataValueType.ENUM,
                                dependencies: [
                                        {
                                                columns: ["Topic", "Account"],
                                                methodName: "changeSubject"
                                        }
                                ]
                        },
                        "CustomerLocationAddress":{
                                dependencies: [
                                        {
                                                columns: ["CustomerLocation"],
                                                methodName: "changeAddress"
                                        }
                                ]
                        }
                }
        };
});

Нравится

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

Добрый день, Ярослав.

Данная ошибка связана с тем, что для данной детали еще нет настроек колонок (в таблице SysProfileData нет записи по данной детали расположенной на новой карточке) и она пытается подгрузить настройки из tiledConfig схемы детали.

Для исправления необходимо настроить колонки. Запись в таблице появится и tiledConfig не будет отрабатывать.

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

Подскажите пожалуйста как добавить кнопку в шкалу стадии на карточке Продаж. Место добаления указано на рис.1.

Нравится

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

Добрый вечер!

Скриншот очень содержательный:smile:.

Не работает. Возможно кто-то делал подобную задачу. Помогите пожалуйста.

Документация: Для замещающей клиентской схемы необходимо установить в качестве родительского объекта схему SectionActionsDashboard пакета ActionsDashboard. В качестве заголовка также можно указать значение SectionActionsDashboard.

При замещены данной схемы выбираю Родительский объект "BaseActionDashboard" пакета ActionDashboard. Согласно название модуля будет BaseActionsDashboard, а нужно что бы было SectionActionDashboard. При изменении названия модуля на SectionActionDashboard остается название BaseActionDashboard.

Подскажите пожалуйста, что делаю не так.

Прикрепите скриншот на внешнем ресурсе для более четкого отображения

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