Всем привет! В версии 7.12 появился новый элемент процесса [Преднастроенная страница]

 

Если перейти на вкладку исходный код, ты мы видим знакомую структуры клиентского модуля. Я попытался в атрибуты элемент с блоком dependencies, и при изменении некоторых полей вызывать метод. Однако, если встать в отладчик, то метод не вызывается. Это недоработка нового модуля или я что-то делаю не так? Кто-то пробовал вешать методы на изменение полей в преднастроенной странице?

Нравится

7 комментариев
Лучший ответ

ради теста добавил - всё работает.

ради теста добавил - всё работает.

Варфоломеев Данила, странно, у меня не заработало...буду пробовать еще. Спасибо, что проверили у себя!

В какой версии системы вы пробовали выполнить кейс? Специально поставил чистую версию 7.12.2 и на ней не срабатывает обработчик,

Вот кусок кода, с первого взгляда все нормально, но вдруг что не так?:

define("UsrClientUnit1", [], function() {

    return {

        entitySchemaName: "",

        attributes: {

                "UsrContact": {

                "dataValueType": this.Terrasoft.DataValueType.LOOKUP,

                dependencies: [

                    {

                        columns: ["UsrAccount"],

                        methodName: "setContact"

                    }

                ]

            },

        },

        modules: /**SCHEMA_MODULES*/{}/**SCHEMA_MODULES*/,

        details: /**SCHEMA_DETAILS*/{}/**SCHEMA_DETAILS*/,

        businessRules: /**SCHEMA_BUSINESS_RULES*/{}/**SCHEMA_BUSINESS_RULES*/,

        methods: {

            setContact: function() {

                debugger;

            },    

        },

 

Можно попробовать поднять демку on demand и проверить на ней. А запятая после тела функции не играет роли? На скриншоте Данилы нет.

Трефилов Павел Сергеевич,

7.12.3

Зверев Александр, завтра подниму 7.12.3, может и правда баг в старой версии (но в облаке пока только 7.12.2)

Зарегал себе демо стенд в облаке, в версии 7.12.3 данной ошибки нет.

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

Изображение удалено.

 

 

О компании

Profit Trans — логистический и таможенный оператор полного цикла, уже более 6 лет работающий на российском рынке контейнерных перевозок.

Услуги, которые предоставляет компания:

  • экспедирование контейнерных грузов;
  • таможенное оформление;
  • таможенное консультирование;
  • оформление грузовых разрешительных документов;
  • профессиональное бухгалтерское сопровождение грузов.

Предпосылки внедрения bpmonline

До приобретения bpm’online сотрудники компании Profit Trans работали в индивидуальных табличных формах, что затрудняло оперативное построение аналитики по работе отдела продаж, а также мониторинг работы менеджеров с клиентами.

Основная задача внедрения bpmonlineувеличить скорость обработки запросов клиентов и автоматизировать расчет стоимости транспортировки грузов. Для этого был выбран продукт bpm’online sales.

 

Выполненные настройки

В рамках внедрения происходила автоматизация процессов работы отдела продаж. Для быстрого и качественного взаимодействия с клиентами был создан лендинг, который позволил получать в bpm’online регистрационные данные клиента с посадочной страницы сайта компании.  После того как клиент создал заявку, менеджер обрабатывает ее и переводит в процесс продажи. В рамках внедрения в карточку продажи добавлены детали и поля, которые позволяют менеджерам быстро, качественно и без использования сторонних источников информации произвести расчет стоимости транспортировки груза по запросу клиента.

 

В карточке товара менеджер имеет возможность указать такие данные:

  • вид транспорта (железнодорожный, авиационный или морской);
  • маршрут;
  • перевозимый вес;
  • габаритные размеры груза;
  • упаковка груза.

 

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

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

 

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

 

Результат

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

Нравится

Поделиться

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

Коллеги, добрый день! 

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

Изображение удалено.

 

Нравится

1 комментарий
Лучший ответ

В MainHeaderSchemaNUI добавить полей, реализовать логику по загрузке значений

В MainHeaderSchemaNUI добавить полей, реализовать логику по загрузке значений

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

Бодрого дня!

Коллеги, подскажите в какой схеме находится стандартные кнопки Выбрать и Добавить в Лиде.

Нужно к ним процесс привязать, а не можем их отыскать в схемах(.

Изображение удалено.

спасибо!)

 

Нравится

2 комментария
Лучший ответ

Используйте F12 и инспектор - помогает)

Кнопки зашиты в BaseProfileSchema, от этой схемы наследуются конкретные страницы (как на скрине - LeadAccountProfileSchema). В них и замещать

Используйте F12 и инспектор - помогает)

Кнопки зашиты в BaseProfileSchema, от этой схемы наследуются конкретные страницы (как на скрине - LeadAccountProfileSchema). В них и замещать

Варфоломеев Данила,

Данила, спасибо!) нашли все)

 

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

Здравствуйте. Есть рaздел в нем есть несколько карточек(страниц)редактирования(каждая из которых отрабатывает зависимости от значения поля - справочника ). В верху всех карточек присутствует выпадающее меню Отчеты, куда попадают печатные формы которые закреплены за этим разделом и для все карточек они(печатные формы) такие же. Можно ли настроить отображения этих отчетов(их кнопок) в зависимости от текущей страницы редактирования? 

bpm 7.11

Нравится

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

Андрей, здравствуйте!

На данный момент нет похоже функционала, который фильтровал либо накладывал условия при работе с печатными формами (в том числе и кнопка "Печать").

Похожий запрос рассматривался в соседнем топике - https://community.terrasoft.ru/questions/filtr-pecatnyh-form

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

Всем привет. Присутствует отчет(печатная форма) который по логике отображается в карточке раздела. Всего есть несколько карточек(страниц). Есть ли возможность скрыть контрол отчета в зависимости от открытой страницы в разделе.

Нравится

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

Андрей, здравствуйте!

На данный момент нет похоже функционала, который фильтровал либо накладывал условия при работе с печатными формами (в том числе и кнопка "Печать").

Похожий запрос рассматривался в соседнем топике - https://community.terrasoft.ru/questions/filtr-pecatnyh-form

Кнопка "Печать" формируется если есть записи в коллекции. 

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

Коллеги, добрый день.

Заказчик хочет через мастер раздела создавать новые вкладки. И в зависимости от значения поля, например, "Состояние" - отображать или скрывать вкладки.

Хочу реализовать это через справочник. Можно ли название новой вкладки, созданной Пользователем через мастер раздела - автоматически размещать в справочник?

Спасибо.

Нравится

8 комментариев
Лучший ответ

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

+ Мастер названия вкладок ну никак не сохранит в справочник.

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

+ Мастер названия вкладок ну никак не сохранит в справочник.

Данила, спасибо. Вроде как Заказчик не ставил задачу по удалению вкладок. Достаточно скрыть :)) Мониторила форум. Нашла всего одну тему и ту от какого-то махрового года(2014).

Может пойти от обратного. Изменить в мастере раздела карточку с названием новой вкладки. Заменить там текстовое поле на справочник? Это возможно?

Вот тема. Ну вот нельзя просто у вкладки visible проставить)

ну всё же. Можно или нет создание через мастер раздела новой вкладки, эту вкладку  как-то к справочнику привязать?

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

Александр, "...можно найти то место..." Не подскажите, где искать?

Предполагаю, что какой-то из схем со словами SectionDesigner или SectionWizard в названии. Сходу не нашёл.

Коллеги, всем спасибо

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

Добрый час суток! Имеется деталь,в таблице есть 1 запись при загрузке детали - все ок отображается. Когда добавляется новая запись в таблицу,нужно,чтобы это (вторая) запись тоже появилась(первая остается). Подскажите как это можно сделать? пока привязался к 

    this.getView().fireEvent("startrefresh", this); Но работает оно не совсем так,как нужно(не затрагивается все методы,при просто заходе на детали и много чего теряется). Переопределять все это дело довольно таки долго. Подскажите пожалуйста,какая альтернатива этому? Деталь своя. Пока пробую искать подобный функционал на стандартной детали,но пока не нахожу события,которое необходимо.(динамически добавлять запись ). Спасибо!

Нравится

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

me.fireAction('refresh', [me], 'doRefresh'); вот это тоже не совсем помогло... оно добавило новую запись(которая появилась в базе),но предыдущая информация введенная(на старой,самой первой записи) не подтягивается,генерируется просто новая такая запись по шаблону и добавляется та,которая добавилась в базу. они оба "чистые"(при том что в базе информация хранится).

Никита, здравствуйте!

А чем Вам не нравится свайп вниз? Я правильно понял, что Вы хотите автообновление детали при добавлении новой записи?

Вильшанский Дмитрий пишет:

Никита, здравствуйте!

А чем Вам не нравится свайп вниз? Я правильно понял, что Вы хотите автообновление детали при добавлении новой записи?

 Добрый! Дело в том,что мне нужно чтобы при нажатии на клавишу добавлялась запись в бд,и сразу же появлялась на странице,добавлять то она добавляется но свайпить вниз не хочется,я попробовал "взять" функционал оттуда,но он не емулируется.. А вообще да,автообновление детали при добавлении новой записи. Деталь кодом добавлял свою,не стандартная(+GridPage+ PreviewPage так же

)

Вильшанский Дмитрий,А есть другая альтернатива ?

Никита Гальченко,

В базовой версии уже реализовано обновление записи при базовых действиях (например, сохранение или удаление).

Для примера можете посмотреть как реализовано при сохранении (нужный "кусок" кода выделил): 

 

completeDataSaving: function(operation) {

   this.callParent(arguments);

   var pageHistoryItem = this.getPageHistoryItem();

   var pageConfig = pageHistoryItem.getRawConfig();

   var record = this.record;

   var operationConfig = this.createPageOperationConfig(operation);

   var useOptimisticEditing = this.useOptimisticEditing();

   if (useOptimisticEditing) {

      Terrasoft.PageNavigator.refreshPreviousPages(operationConfig, pageHistoryItem);

   } else {

      Terrasoft.PageNavigator.markPreviousPagesAsDirty(operationConfig);

   }


   var shouldOpenPreviewPageOnSave = this.shouldOpenPreviewPageOnSave();

   if (shouldOpenPreviewPageOnSave) {

      Terrasoft.util.openPreviewPage(this.self.Model, {recordId: record.getId(), isStartRecord: true,

         direction: "right", operationConfig: operationConfig});

   } else {

      Terrasoft.Router.back();

   }

   if (pageConfig) {

      Ext.callback(pageConfig.onDataSaved, this, [record]);

   }

},

Вильшанский Дмитрий,

Спасибо большое! Буду разбираться!

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

Не могу нигде найти, каким образом возможно получить top N в запросе на JavaScript.

Везде только примеры на С#.

Нравится

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

Добрый день,подскажите пожалуйста,а в мобильном приложении есть функция автозаполнения поля ? Если да,то как это можно организовать ? Чтобы при создании новой записи в разделе,поле автоматически заполнялось значением,что то вроде счетчика записей. Например у меня в разделе есть 10 записей - запись 1,запись 2,запись 3 ... 10. При создании новой чтобы поле Название сразу заполнялось как запись 11. Подскажите примерный ход действий(на данный момент беру запросом с базы,сортируя и беру следующее число,но такой подход не очень хороший). Может быть есть более правильный вариант ? Спасибо!

Нравится

4 комментария
Лучший ответ

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

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

Terrasoft.sdk.Model.setModelEventHandler("ActivitySKU", 
    Terrasoft.ModelEvents[Terrasoft.ModelEventKinds.Before].update,
    function(config) {
        var record = config.scope.eventConfig.records[0];
        record.set("UsrIsChecked", true);
        Ext.callback(config.success, config.scope);
});

Или с помощью Custom бизнес правила:

Terrasoft.sdk.Model.addBusinessRule("ModelName", {
    name: "RuleName",
    ruleType: Terrasoft.RuleTypes.Custom,
    events: [Terrasoft.BusinessRuleEvents.Load, Terrasoft.BusinessRuleEvents.ValueChanged],
    executeFn: function(record, rule, column, customData, callbackConfig) {
        record.set("UsrColumn", "some value");
        Ext.callback(callbackConfig.success, callbackConfig.scope);
    }
})

Третий вариант - в кастомной странице повесить на загруженную запись дополнительный обработчик на изменение записи:

onLoadRecord: function(loadedRecord) {
    this.callParent(arguments);
    loadedRecord.on("columnchanged", this.onRecordColumnChanged, this);
},

Но я ещё столкнулся проблемой, что при изменении значения в записи не обновляется значение в соотвествующем поле на странице, приходилось доставать контрол и вручную в нём дублировать значение.

var control = Ext.getCmp("control_id");
control.setValue("some value");

 

Такое есть смысл на стороне сервера. Есть специальное действие в БП для получения номера по порядку.

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

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

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

Terrasoft.sdk.Model.setModelEventHandler("ActivitySKU", 
    Terrasoft.ModelEvents[Terrasoft.ModelEventKinds.Before].update,
    function(config) {
        var record = config.scope.eventConfig.records[0];
        record.set("UsrIsChecked", true);
        Ext.callback(config.success, config.scope);
});

Или с помощью Custom бизнес правила:

Terrasoft.sdk.Model.addBusinessRule("ModelName", {
    name: "RuleName",
    ruleType: Terrasoft.RuleTypes.Custom,
    events: [Terrasoft.BusinessRuleEvents.Load, Terrasoft.BusinessRuleEvents.ValueChanged],
    executeFn: function(record, rule, column, customData, callbackConfig) {
        record.set("UsrColumn", "some value");
        Ext.callback(callbackConfig.success, callbackConfig.scope);
    }
})

Третий вариант - в кастомной странице повесить на загруженную запись дополнительный обработчик на изменение записи:

onLoadRecord: function(loadedRecord) {
    this.callParent(arguments);
    loadedRecord.on("columnchanged", this.onRecordColumnChanged, this);
},

Но я ещё столкнулся проблемой, что при изменении значения в записи не обновляется значение в соотвествующем поле на странице, приходилось доставать контрол и вручную в нём дублировать значение.

var control = Ext.getCmp("control_id");
control.setValue("some value");

 

Спасибо!

 

Бершеда Д. Н. пишет:

Но я ещё столкнулся проблемой, что при изменении значения в записи не обновляется значение в соотвествующем поле на странице, приходилось доставать контрол и вручную в нём дублировать значение.

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

 

Данная проблема, скорее всего, решается передачей в метод .set третьего параметра true.

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