Коллеги, подскажите в процессе есть элемент "Обработка таймера", который выполняет следующее "([#Системная переменная.Текущее значение даты и времени#].AddDays(1) - [#Системная переменная.Текущее значение даты и времени#]).TotalSeconds" при этом иногда этот блок по одному процессу отрабатывает, а по другому нет.

В чем может быть проблема?

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

Нравится

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

Добрый день!

А почему туда просто константу нельзя задать ?

У вас коробка или облачное решение ?

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

Добрый день, Евгений!



Подобные проблемы могут возникать если пул приложения засыпает из-за отсуствия Активности на сайте (напремер, в выходные). Для настройки бесперебойной работы на Вашем сайте советуем Вам выполнить следующие действия:

1. Установить для пула приложений IIS, на котором работает приложение, Idle Timeout = 0

2. Настроить автоматический мониторинг Loader'a и приложения с помощью бесплатного сервиса мониторинга https://uptimerobot.com/ (настроить автоматический мониторинг c периодичностью 5-10 минут)



В таком случае, пул будет всегда активен и процессы будут выполнятся и на выходных.

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

У нас наблюдается такая же проблема - "Обработка таймера" не выполняется, т.е. он выполняется бесконечно. Настроил БП так чтобы он запустился в 8:15, я вошел в систему около 8:00, т.е. если я правильно понимаю, пул активен. Несмотря на это "Обработка таймера" не завершается (таймер ждет 60 секунд). К тому же если выполнить его вручную, нажав на кнопку "Выполнить элемент", то он успешно выполняется. В чем может быть проблема?

Руслан, а с Quartz на сервере всё в порядке? Таймер не работает в одном конкретном процессе или везде?

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

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

Хочу добавить. Чтобы запустить планировщик после перезапуска вэб-приложения (или засыпания, как тут писали), нужно зайти именно на страницу логина. То есть пока кто-нибудь не зайдет на страницу логина, планировщик не запустится. Планировщик живет в верхнем квадратике. Если пользователь аутентифицирован до перезапуска вэб-приложения, то можно сразу выйти на страницы .../0/..., но это не запустит планировщик.

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

Добрый день.

Есть Данные, хранящиеся в json-строке

Есть Объект, со структурой полей соответствующей Данным в json.

Есть Модуль с DataGrid, в котором нужно отобразить реестр записей.

Наполняю коллекцию GridData: 

 

prepareDataGridViewModule: function(dataList){
    //Наполнить GridData
    var gridData = this.get("GridData");
    var entityConfig = this.getEntityConfig(this.$MasterEntityName);
    this.Terrasoft.each(dataList, function(item) {
        var itemData = Ext.JSON.decode(item.Data);
        var itemModel = this.Ext.create("Terrasoft.BaseViewModel", {
              columns: entityConfig.columns, //Коллекция полей Объекта
              values: itemData   //Коллекция значений полей
         });
         gridData.add(item.Id, itemModel);
      }, this);
}

В итоге получаю отображение: 

https://yadi.sk/i/XUkp2kMCWWB4KQ



Кто сталкивался?

Как можно наполнить плиточное представление реестра в каждой строке своими динамическими полями?

Нравится

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

Игорь, добрый день!

Вы можете разработать формирование всей информации на уровне базы данных в представление, по которому в конфигурации создан объект. Как работать с JSON в MS SQL, описано в этой статье.

Илья, здравствуйте.

Мне нужно это сделать именно на клиентской части.

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

Игорь, эта логика самостоятельно разработана Вами, поэтому причину такого её поведения можете установить только Вы, например, применив отладку. 

Перефразирую:

В каком виде я должен передать свою коллекцию значений и полей в GridData, чтобы Базовыми средствами отрисовать поля реестра?

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

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

Я и нашёл. в LocalDuplicateSearchPageV2 и его миксине DuplicatesSearchUtilitiesV2, где в методе loadElasticDuplicates в модель реестра передаются поля (columns) и значения (values).

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

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

Ошибок нет. я бы с удовольствием протестировал.

Только не могу понять какой метод обрабатывает передаваемую коллекцию и отрисовывает реестр.

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

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

Было бы здорово иметь возможность в фильтрах элементов БП сравнивать со списком значений, это бы значительно ускорило разработку типовых БП.

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

Здравствуйте, Кирилл!

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

Если Вы будете реализовывать сравнение со списком идентификаторов самостоятельно, обратите внимание на рекомендации в этой теме.

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

Добрый день!

Есть такая задача:

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

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

В элементе изменить данные сис настройки не нашел поле значение по-умолчанию

Нравится

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

Калушка Д. пишет:

Может есть возможность показать как указать id системой настройки в значениях системной настройки?

Id системной настройки можно получить через элемент 'Чтение данных' - в качестве фильтра можно использовать значение поля 'Код' системной настройки:

Добрый день.

Значения системных настроек хранятся в таблице 'SysSettingsValue'.

Можно изменить значение системной настройки либо в элементе задание-сценарий, например, через пользовательский sql-запрос, либо в элементе изменить данные:

 

Вам нужно внести изменения в поле 'DateTimeValue'.

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

Добрый день!

Возникает проблема, как указать системную настройку в значениях системной настройки. Есть Системная настройка (там есть записи, они походе не подходяь как ID), Системная настройка (объект) (пусто, не видно ничего) и Системная настройка в группе

Может есть возможность показать как указать id системой настройки в значениях системной настройки?

Решил. Прочитал через SQL запрос ID значения системной настройки

Калушка Д. пишет:

Может есть возможность показать как указать id системой настройки в значениях системной настройки?

Id системной настройки можно получить через элемент 'Чтение данных' - в качестве фильтра можно использовать значение поля 'Код' системной настройки:

Алла Савельева,

Спасибо

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

Вебител постоянно пытается подключиться. Можно ли как то прекратить эти попытки?

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

Нравится

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

В настройках профиля пользователя отключите.

Профиль -> Настройка параметров Call Centre 

В настройках профиля пользователя отключите.

Профиль -> Настройка параметров Call Centre 

Добрый день, Виталий!



Данный адресс ru1-webitel-switch.bpmonline.com:8082 используется для подключения к встроенному серверу телефонии Webitel Collaboration.

Есть два варианта её отключения:

а) Откройте профиль пользователя, нажмите на кнопку "Настройки параметров Call Centre"и установите галочку на пункт "Отключить интеграцию с Сontact Сentre". Сохраните выполненные настройки. Данные настройки необходимо выполнять для каждого пользователеля.

б) Откройте "Дизайнер системы" - "Системные настройки" - "Библиотека обмена сообщениями по умолчанию" и выберите любую другую телефонию в поле "Значение по умолчанию". Тогда система не будет посылать запросы на ru1-webitel-switch.bpmonline.com:8082

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

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



Я хочу с помощью бп, в формуле (не скрипт таск):

из этого 38 (000) 000-00-00

сделать это 380000000000

Убрать символы и пробелы. Есть ли такая возможность?

Если нет, подскажите как можно. Задача: все номера в системе перевести в такой формат

Нравится

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

Здравствуйте! Создаете новый параметр в который будете вносить отредактируемые данные, затем воспользуйтесь элементом  формула - http://prntscr.com/oy763q. В данном элементе прописываете например

CurrentParamValue.Replace(" ",string.Empty).Replace(")",string.Empty).Replace("(",string.Empty).Replace("-",string.Empty).Replace("+",string.Empty)

 

Здравствуйте! Создаете новый параметр в который будете вносить отредактируемые данные, затем воспользуйтесь элементом  формула - http://prntscr.com/oy763q. В данном элементе прописываете например

CurrentParamValue.Replace(" ",string.Empty).Replace(")",string.Empty).Replace("(",string.Empty).Replace("-",string.Empty).Replace("+",string.Empty)

 

Нигрескул Алексей,

Правильно ли я понял:

создаю параметр "phone", в него записываю исходные номер, потом через формулу, вверху выбираю этот парамтер, а в самой формуле (ниже поле) пишу

phone.Replace(" ",string.Empty).Replace(")",string.Empty).Replace("(",string.Empty).Replace("-",string.Empty).Replace("+",string.Empty)

?

 

да, и вносите в новый параметр. Например "phone" - текущий телефон, "phoneNew" - отредактированный.

Нигрескул Алексей,

Спасибо, попробую!

Вот примерная реализация http://prntscr.com/oy7fkl, http://prntscr.com/oy7g0m

Калушка Д.,

Сделал, работает, спасибо.

выглядит так:

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

Доброго времени суток , Возможно ли в БП одним элементом "Читать данные" c режимом читать коллекцию записей отбирая одно поле к примеру "Id"  и  в другом элементе  сравнить  Id с коллекцией Id ранее полученных ? Имеется ли вообще какой ниб тип сравнивания с коллекцией значений ?

Нравится

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

Сравнения с коллекцией с помощью встроенных элементов, насколько я знаю, не существует. Вместе с тем, вы можете:

1. Передать коллекцию в скрипт-таск (задание-сценарий) и сделать поиск вашего id там.

2. Искать ваш id циклом - т.е. не читать коллекцию записей сразу, а каждую запись по очереди. После прочтения каждой записи изменяете какое-нибудь подходящее для этого поле (я часто грешу и ставлю текущую дату в поле "Дата изменения", а в условиях выборки ставлю сортировку по дате изменения по возрастанию) - таким образом перебираете всю выборку и находите искомую запись по id.

3. Если речь идет об id в одном и том же объекте, и вам нужно просто обнаружить факт наличия id в выборке, то вам может быть достаточно посчитать количество записей, соответствующих этому id или просто проверить результат выборки по искомому id на Guid.Empty.

Сравнения с коллекцией с помощью встроенных элементов, насколько я знаю, не существует. Вместе с тем, вы можете:

1. Передать коллекцию в скрипт-таск (задание-сценарий) и сделать поиск вашего id там.

2. Искать ваш id циклом - т.е. не читать коллекцию записей сразу, а каждую запись по очереди. После прочтения каждой записи изменяете какое-нибудь подходящее для этого поле (я часто грешу и ставлю текущую дату в поле "Дата изменения", а в условиях выборки ставлю сортировку по дате изменения по возрастанию) - таким образом перебираете всю выборку и находите искомую запись по id.

3. Если речь идет об id в одном и том же объекте, и вам нужно просто обнаружить факт наличия id в выборке, то вам может быть достаточно посчитать количество записей, соответствующих этому id или просто проверить результат выборки по искомому id на Guid.Empty.

А почему бы просто в элементе чтения данных не отфильтровать дополнительно записи по значению поля, равному интересующему Id? Так не будет необходимости загружать лишние данные и сразу будет видно, есть результаты или выборка пустая.

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

Ксензов Егор,

1-ый метод подходит но не такой удобный как хотелось бы).

2-ой метод я вообще молчу, ну скажем так для больших данных врядли подойдет.

3-ий метод не совсем понял как именно предлагаете , ( мой пример , к примеру одним запросом я получаю список контактов которые входят в опр деталь , и для этих N контактов хочу изменить права доступа на опр объект)

 

Зверев Александр,

 

мне нужно select * where id_Contact  in (select id_Contact from Detail where Date > '02022019')  Это я сейчас утрируя написал естественно , средствами БП можно это сделать ?

В скрипте БП можно использовать класс Select (или Update, Delete). Все они умеют вызывать подзапросы с In:

var existsInBonusesDeduction = new Select(userConnection)
 .Column(Func.Count("Id"))
 .From("BonusesDeduction")
 .Where("ChargeTransactionId")
  .In(new Select(userConnection)
    .Column("Id")
    .From("Transaction")
    .Where("PurchaseId")
     .IsEqual(Column.Parameter(purchaseId))
    .And("TypeId")
     .IsEqual(Column.Parameter(TransactionConsts.RecordTypeUId))
    .And("StatusId")
     .IsEqual(Column.Parameter(TransactionConsts.CompletedStatusUId))
  ) as Select;
var existsInBonusesDeductionResult = existsInBonusesDeduction.ExecuteScalar<int>(dbExecutor);

 

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

Коллеги, приветствую! 

Мы подготовили и выложили видео по настройке и основному кейсу использования нашего коннектора с онлайн чатом Jivosite. Этот сервис позволяет организовать коммуникации с пользователем через основные каналы: чат на сайте, мессенждеры, соц. сети. Ну а коннектор поможет транслировать всю информацию в bpm'online. 

https://youtu.be/VYb-Y7noZvU

Нравится

Поделиться

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

Доброго дня. 

Есть задача - почистить контакты от дубликатов в системе. 

Насколько известно, есть типовые механизмы поиска контактов. 

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

Да постепенно, по мере обработки дублей, могут появится и еще записи. Как бы «подгрузятся», однако это далеко не всегда так и список может «закончиться», когда были обработаны явно не все 2734 записей. 

 

Далее система просит поискать снова. 

Запускается поиск типовой поиск дублей. Находит 2734  записей снова. 

Однако ранее было же обработано (слияние или не считать дублями) сколько-то записей, хоть на одну, но должно найтись меньше. 

 

Но не ровно то же количество.

И притом в первых рядах уже «обработанные записи».

 

В связи с чем вопрос: 

Как бы создать бизнес-процесс сбора и вывода дубликатов контактов, который будет работать несколько иначе. 

 

Просто совпадение по ФИО и имени Контрагента. 

А далее, уже решать, что сливать воедино, а что нет.

 

Я представляю этот бизнес-процесс так:

Сначала чтение данных, следом чтение данных в собранной коллекции. 

Но вот куда потом и как это выводить для обработки руками - не представляю.

 

Нравится

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

Bogdan Zozulya пишет:

У меня и впомине нет такой кнопки - добавить правило, в том месте, где повествует об этом инструкция.

Для того, чтобы появилась кнопка [Добавить правило], нужно выполнить определенные настройки сайта.

Обратитесь в службу поддержки bpm'online - они сами выполнят данную настройку, если у Вас версия on-demand, либо предоставят инструкцию по настройке, если Вы используете приложение on-site.

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

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

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

По поводу правил поиска дублей, посмотрите эту статью.

Возможно, Вашу задачу можно решить с помощью приложения Automatic duplicates merge. Вы можете связаться с разработчиками данного приложения и уточнить у них, как оно работает.

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

Добавить комментарий

Алла Савельева,

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

 

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

Bogdan Zozulya пишет:

У меня и впомине нет такой кнопки - добавить правило, в том месте, где повествует об этом инструкция.

Для того, чтобы появилась кнопка [Добавить правило], нужно выполнить определенные настройки сайта.

Обратитесь в службу поддержки bpm'online - они сами выполнят данную настройку, если у Вас версия on-demand, либо предоставят инструкцию по настройке, если Вы используете приложение on-site.

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

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

Доброго дня. Виникає проблема з роботою плагіна "bpm’online для MS Word" .  Для розуміння проблеми , описую детально свої кроки. Встановив плагін та всі додаткові програми , у MS Word з'явилася вкладка bpm’online, перейшовши на неї, підключився до свого серверу. Далі вибрав потрібну мені друковану форму зі списку. І після цих дій нічого не відбувається, тобто не 'являється шаблон форми та поля, які можна додати в шаблон. Можливо, в когось була подібна проблема. Буду вдячний за консультацію.

Нравится

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

Справа може бути у схемі SysModuleReportMSWordEditPage з пакету Aspose. Якщо сайт знаходится «у хмарі», пошкоджену схему вже мали оновити справною, проте її не компілювали, щоб не завадити користувачам сайту. Для усунення причин негаразду слід:

  • виконати перегенерацію вихідного коду схеми SysModuleReportMSWordEditPage (пакет Aspose);
  • виконати компиляцію системи.

Якщо і після цього шаблон не буде відкриватись, раджу звернутись до служби технічної підтримки, щоб вони під'єдналися до Вашого сайту і проаналізували, що скоїлося.

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