Вопрос

Добрый день всем снова) Как правильно создать цикл по пересозданию записей в разделе? С помощью бизнес процесса без заданий-сценариев и начальное событие - простое, не по сигналу.

Нравится

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

Пересоздание - это удаление и создание новой записи или изменение старой?)

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

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

Шутники, однако). остается старая, а на ее основе создается новая, в единственном числе.

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

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

не я выбираю как делать(. Сказали - бизнес процессом

Скрипт — тоже элемент процесса, если что.

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

я имел ввиду без кодинга

Можно заказать кодинг у одной из компаний-партнёров Terrasoft.

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

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

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

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

Извините, если вопрос слишком тривиальный. 

Задача.

Есть статусы сделки как список:

- В работе

- Реализованы 

- Не реализованы

Нужно, чтобы они изменялись по завершении бизнес-процессов, то есть два из них "Реализована" и "Не реализована" проставлялись автоматически. 

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

Понимаю, что задачу можно решить и через организацию  "один ко многим" в справочнике.

Однако, предвижу, что это понадобится. 

Спасибо.

 

 

 

 

 

Нравится

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

В БП все очень просто смотрите описание в академии https://academy.terrasoft.ru/documents/technic-bpms/7-14/element-processa-izmenit-dannye также советую поискать видео по работе с БП

В БП все очень просто смотрите описание в академии https://academy.terrasoft.ru/documents/technic-bpms/7-14/element-processa-izmenit-dannye также советую поискать видео по работе с БП

Спасибо

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

Добрый день.

С помощью БП я создаю лид при поступлении звонка, и мне необходимо добавить запись звонка к этому лиду.

Пытаюсь добавить к записи звонка мой созданный лид (настройки элемента ниже),Изображение удалено. 

но вот ничего не добавляется. Идентификатор звонка передает метод и он правильный.

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

Нравится

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

Добрый день.

В теории так, как Вы реализовали, должно работать.

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

Также, если у Вас on-site, то с помощью SQL Server Profiler можно посмотреть, какой запрос идет базу, когда выполняется этот элемент.

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

Судя по данным трассировки БП то лид добавляется, но по факту оказывается что нет:

Семенов Михаил пишет:

Судя по данным трассировки БП то лид добавляется

А разве проблема была в том, что лид не добавлялся - Вы же писали, что в звонке не заполняется поле 'Лид'?

Всё-таки просмотрите профайлером, какой запрос идет в базу.

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

да, я это и имел ввиду - не добавляется лид к звонку) Я просто различаю термины "добавить" и "создать"))

 

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

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

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

Нравится

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

Вариант 1: Сделайте в процессе фильтрацию по частям. Например, по алфавиту от A до F.

И затем меняйте фильтр, удаляя в несколько приёмов.



Вариант 2: Фильтровать в разделе (как в п.1) и удалять штатными методами



Вариант 3: написать SQL

Вариант 1: Сделайте в процессе фильтрацию по частям. Например, по алфавиту от A до F.

И затем меняйте фильтр, удаляя в несколько приёмов.



Вариант 2: Фильтровать в разделе (как в п.1) и удалять штатными методами



Вариант 3: написать SQL

Владимир Соколов,

Фильтр не получится использовать - там все значения одинаковые. А по поводу SQL можно подробнее?

NothingHappen,

https://marketplace.terrasoft.ru/app/sql-executor-bpmonline

Можно писать sql запросы прямо в bpm.

delete top(n) from tableName [where ...]

NothingHappen,

Вам нужно написать sql-запрос на удаление вида:

delete from <название таблицы>
where <условия для выборки нужных записей>

Если у Вас bpm'online on-site, то можно выполнить запрос прямо на сервере баз данных через Microsoft SQL Server Management Studio.

Если on-demand, то можно установить Модуль для выполнения SQL - скриптов "SQL Executor" и выполнить запрос из него.

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

Извините за глупый вопрос, но с sql я не знаком, как узнать адрес данной таблицы и задать условия?

NothingHappen пишет:

Извините за глупый вопрос, но с sql я не знаком, как узнать адрес данной таблицы и задать условия?

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

Обратитесь в службу поддержки Террасофт, чтобы специалисты помогли Вам решить данную проблему.

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

Спасибо.

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

Можно ли подключить кассовые аппараты и сканеры штрихкодов к системе bpm'online?

Нравится

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

А почему нет?

Но я бы рекомендовал написать например свой сервис (службу OS) который будет обслуживать ваше оборудование и дергать bpm через вэб сервисы или любым другим способом.

А почему нет?

Но я бы рекомендовал написать например свой сервис (службу OS) который будет обслуживать ваше оборудование и дергать bpm через вэб сервисы или любым другим способом.

В маркете есть модуль «Storekeeper for bpm’online», поддерживающий работу со сканером штрихкода и «Виртуальная касса для работы с процессингом покупок».

Не уверен по архитектуре современных партнёрских версий bpm'online для лояльности, но во времена Loyalty 5.3 кассы подключались к своему ПО, например, «СуперМаг УКМ», которое уже по сети взаимодействовало со стандартными или доработанными веб-сервисами bpm'online.

А сканер штрих-кода в простейшем случае просто имитирует ввод цифр из кода с клавиатуры с последующим нажатием клавиши Enter.

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

При попытки установить приложение из Marketplace выдаёт такую ошибку и Лог файл 0 байт.

С чего начать ?

Версии и т.д. всё верное и не на одном приложение не ставится. Изображение удалено.

Нравится

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

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

Без отладки тяжело предположить причину ошибки, посмотрите требования кроме версии часто указано для какого продукта расширение (Например Service Desc)

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

Но самым эффективным способом локализации проблемы является отладка.

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

Без отладки тяжело предположить причину ошибки, посмотрите требования кроме версии часто указано для какого продукта расширение (Например Service Desc)

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

Но самым эффективным способом локализации проблемы является отладка.

А что написано у Вас в логе установки?

Причины могут быть разные: например, в имени пакета есть лишние символы (2), или, если сайт поднят у Вас, используется старая версия .NET и необходимо установить .NET Framework 4.7.2.

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

Не могу понять в чем проблема , все делаю по инструкции https://academy.terrasoft.ru/documents/technic-sdk/7-14/primenenie-filtracii-k-spravochnym-polyam?_ga=2.187658344.1798117710.1565074747-1746837617.1550722519

Есть таблица Rashodnik и в этой таблице есть поле сотрудник  UsrSotrudnik, необходимо чтобы по сотруднику был фильтр . Делаю так

"UsrSotrudnik": {
       .....
       "lookupListConfig": {
          "filters": {
               var filterGroup = Ext.create("Terrasoft.FilterGroup");
               filterGroup.add("Job",
                                Terrasoft.createColumnFilterWithParameter(
                                    Terrasoft.ComparisonType.EQUAL,
                                    "[UsrRashodnik:UsrSotrudnik].FullJobTitle",
                                    "Кассир"));
               return filterGroup;
           }
       }
}

выходит пустой список почему то, в чем может быть причина?

Нравится

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

Не пробовали через бизнес правила в графическом интерфейсе? Там тоже есть фильтрация полей по условию

Александр Тыра,

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

А не напутали ли с условием? Точно ли поле FullJobTitle у Вас в таблице UsrRashodnik? Для сравнения, в справке по приведенной ссылке для поля Owner фильтруют справочник контактов, проверяют на истинность поле Active в связанном с контактом SysAdminUnit:

filterGroup.add("IsActive",
    Terrasoft.createColumnFilterWithParameter(
    Terrasoft.ComparisonType.EQUAL,
    "[SysAdminUnit:Contact].Active",
    true));

Если сайт развёрнут на Ваших серверах, посмотреть получаемый запрос в базу можно в SQL-профайлере.

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

Добрый день!

Подскажите есть ли какая-то интеграция с классификатором адресов (КЛАДР) или каким-то более современным?

 

Спасибо. 

Нравится

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

Посмотрите это расширение (DaData connector for bpmonline) и это

Такэе обратите внимание на этот пост  и этот

Посмотрите это расширение (DaData connector for bpmonline) и это

Такэе обратите внимание на этот пост  и этот

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

Коллеги, добрый вечер!

Подскажите идеи пжлст для реализации следующей задачи:

в разделе Excel отчеты есть отчет. Его нужно отправлять каждый день по расписанию на определенный email.

 

Спасибо!)

Нравится

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

Елена К пишет:

А немного поправив, это вы что примерно имеете ввиду

Пока не могу сказать точно. Эта задача у нас в проекте тоже стоит, но пока не запущена в анализ и разработку. Я просто описал направление решения. Возможно, в сентябре смогу рассказать детально

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

Насколько я понимаю раздел Excel отчеты это не базовый функционал?

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

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

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

Григорий Чех,

Григорий, это приложение https://marketplace.terrasoft.ru/app/excel-reports-builder-bpmonline, выпущенное Terrasoft. При запуске  созданного в  разделе "Excel отчеты" отчета происходит скачивание файла Excel. У нас вопрос как через БП сгенерировать cамо вложение, а там дальше мы с ним уже разберемся). Спасибо!

 

Елена К,

Мы, например, используем другое дополнение -

https://marketplace.terrasoft.ua/app/reports-generator-bpmonline

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

Кроме того, в том же дополнении есть процесс запуска генерации отчета по расписанию ("Запуск формирования отчета по правилу"). Немного поправив его, можно файл не сохранять на диске сервера (как в оригинале), а прикреплять к письму, например

Владимир Соколов,

Владимир, да , это приложение тоже стоит, просто меньше используется, чем первое.  А немного поправив, это вы что примерно имеете ввиду?). 

Елена К пишет:

А немного поправив, это вы что примерно имеете ввиду

Пока не могу сказать точно. Эта задача у нас в проекте тоже стоит, но пока не запущена в анализ и разработку. Я просто описал направление решения. Возможно, в сентябре смогу рассказать детально

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

Елена К,

Судя по принскрину приведенному Владимиру,вы можете например создать активность с типом исходящее письмо и отчет не записывать на диск а прикреплять к этой активности и отправлять ее (Как отправлять письмо с вложениями неоднократно в этом форуме обсуждалось)

Коллеги, спасибо! будем пробовать.Как получиться, поделимся).

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

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

Ну и пример для лучшего понимания.

 

Нравится

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

Описание методов класса ENTITY привелены тут

Обратите внимание на:

virtual object Clone() - Создает клон текущего экземпляра Entity.

 

Примеры использования:

var newEntity = entity.Clone();

var newEntity = entity.Clone() as Terrasoft.Configuration.Document;

Описание методов класса ENTITY привелены тут

Обратите внимание на:

virtual object Clone() - Создает клон текущего экземпляра Entity.

 

Примеры использования:

var newEntity = entity.Clone();

var newEntity = entity.Clone() as Terrasoft.Configuration.Document;

Григорий Чех,

Спасибо, об этом методе знаю, думала, что есть ещё какие-то варианты.

Приведенный пример Entity newEntity = entity.Clone() не рабочий.

Чтобы потом работать с newEntity нужно применить явное приведение, примерно так:

Entity newEntity = (Entity)entity.Clone()

В коде встречаются и по такому варианту, похожему на предложенный Григорием:

var newGoodsEntity = goodsEntity.Clone() as Terrasoft.Core.Entities.Entity;
newGoodsEntity.SetDefColumnValues();
newGoodsEntity.SetColumnValue("Id", Guid.NewGuid());
newGoodsEntity.SetColumnValue("ChangeRequestId", newChangeRequestId);
newGoodsEntity.Save();

или вот:

row = dataSource.Rows[0].Clone() as Terrasoft.Core.Entities.Entity;
Guid currentUserContactId = Page.UserConnection.CurrentUser.ContactId;
EntityPrimaryColumnValue = Guid.NewGuid();
Page.DataSource.CacheItemName = Page.SchemaName + "_" + EntityPrimaryColumnValue.ToString();
row.SetColumnValue(primaryColumnName, EntityPrimaryColumnValue);
row.SetColumnValue("CreatedOn", DateTime.Now);
row.SetColumnValue("CreatedById", currentUserContactId);
row.SetColumnValue("ModifiedOn", DateTime.Now);
row.SetColumnValue("ModifiedById", currentUserContactId);
var columnNames = new List<string>();
foreach (var column in row.Schema.Columns) {
	if (column.HasDefValue && (column.IsLookupType || column.IsMultiLookupType) && !columnNames.Contains(column.Name)) {
		columnNames.Add(column.Name);
	}
}
row.LoadLookupDisplayValues(columnNames);
dataSource.Insert(row);

 

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

Имела ввиду, первый пример без приведения.

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