Добрый день!

Возник вопрос, как на странице раздела можно изменить значение поля на странице редактирования по нажатии кнопки?

Добавил в совмещенном режиме в раздел "Активности" кнопку "завершить", добавил метод обработчик нажатия, необходимо чтобы при прохождении всех проверок изменялся Статус и результат активности. Все изменения должны быть выполнены на клиенте и отобразиться сразу

 

//Метод-обработчик нажатия кнопки завершить
				doneActivityClick: function(){
					var activeRow = this.get("ActiveRow");
				if (activeRow) {
					var cOwnerId = $("#ActivityPageV2OwnerLookupEdit-link-el").attr('href').split('ViewModule.aspx#CardModuleV2/ContactPageV2/edit/')[1].toUpperCase();
					var esq = this.Ext.create("Terrasoft.EntitySchemaQuery", {
						rootSchemaName: "Activity"
					});
					esq.addColumn("Opportunity.Owner.Id","OpportunityOwnerId");
					esq.addColumn("Opportunity.UsrSaleAgreemAmountPlan", "OpportunityCountAgreem");
					esq.addColumn("Opportunity.UsrSalePriseSum","OpportunityPriseSum");
					esq.addColumn("Opportunity.UsrObjCountPlan","UsrObjCountPlan");
					esq.getEntity(activeRow, function(result) {
										if (!result.success) {
										// обработка/логирование ошибки, например
										this.showInformationDialog("Ошибка запроса данных");
										return;
										}
										var oSumPrise = result.entity.get("OpportunityPriseSum");
										var oOwnerId = result.entity.get("OpportunityOwnerId");
										var oCountAgreem = result.entity.get("OpportunityCountAgreem");
										var oCountObj =result.entity.get("UsrObjCountPlan");
										var mesSumPrise= (oSumPrise<=0)?"Планируемая премия\n":"";
										var mesCountAgreem=(oCountAgreem<=0)?"Планируемое количество договоров\n":"";
										var mesCountOdj= (oCountObj<=0)?"Количество объектов\n":"";
										if (cOwnerId!=oOwnerId.toUpperCase()) {
											this.showInformationDialog("Ответственный по задаче отличается от ответственного по активности");
										}
										else{
											if (oCountAgreem<=0 || oSumPrise<=0|| oCountObj<=0){
												this.showInformationDialog("Заполните поля в продаже:\n"+mesSumPrise+mesCountAgreem+mesCountOdj);
											}
											//завершение задачи
											else{
												var newStatus ={
													displayValue: "Завершена",
													value: "4BDBB88F-58E6-DF11-971B-001D60E938C6"
												};
												var newResult ={
													displayValue: "Реализовано",
													value: "BB360D72-1AD7-4BBC-BADC-AABC0E334A74"
												};
											// как установить в данные поля значения?
												this.set("Status", newStatus);
												this.set("Result", newResult );
												this.set("ButtonEnabled", false);
 
											//сохраняем все изменения
											var cardModuleSandboxId = this.getCardModuleSandboxId();
											var resultMes =	this.sandbox.publish("OnCardAction", "save", [cardModuleSandboxId]);
 
											}
										}
				},this);
 
				}//if(activeRow)
 
				}

 

Нравится

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

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

Используя this.set() отобразить изменения сразу, Вы можете проверить это добавив обработчик кнопки в котором без проверок измените значения полей, в результате при нажатии на кнопку изменения сразу отобразятся. 

Судя из Вашего кода, значения не меняются так как this содержит другую область видимости.

Потому, рекомендую передать внешний скоуп используя bind:

...
esq.getEntity(activeRow, function(result) {
...
				}.bind(this));
...

 

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

В БП-ах есть компонент привязки объекта к БП. Как им грамотно воспользоваться?

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

Как мне организовать эту деталь? Что будет masterColumn, а что detailColumn?

Нравится

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

Алексей, добрый день!

При привязке к процессу выполняется добавление записи в объект "Объект в процессе" (SysProcessEntity). При необходимости вывести связанные процессы для раздела нужно

- Создать деталь, указав в качестве объекта Объект в процессе

- Вывести данную деталь на страницу редактирования записи, указав связь Колонка детали.Объект = Колонка объекта.id

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

Можно ли сделать, чтобы тип поля "дробное число" при настройке раздела отображал точность данных до тысячных, а не до сотых?

Нравится

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

Здравствуйте, Артем!

Пока что точность данных можно менять только в объекте в конфигурации (если это базовый объект, то нужно его заместить): ttp://prntscr.com/inxzk8

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

Спасибо огромное, Юлия!

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

Добрый день

Создаю контрагента в BPM из внешней системы

Формирую запрос в джейсоне на этот УРЛ

http://vng/0/ServiceModel/EntityDataService.svc/AccountCollection/

{

    "Name": "ВЕЛЕС ООО",

    "Type": {

        "__metadata": {

            "uri": "AccountTypeCollection(guid'03A75490-53E6-DF11-971B-001D60E938C6')"

        }

    },

    "Region": {

        "__metadata": {

            "uri": "RegionCollection(guid'4F485B54-54E6-DF11-971B-001D60E938C6')"

        }

    },

    "Phone": "8-932-546-3245",

    "UsrENN": "9718001737",

    "UsrKPPStroka": "771801001"

}

Но при этом сервер возвращает, что поля тип контрагента и регион не заполнены и не создает новую запись

Получается, что конструкция для полей Type и Region, которые являются полями со ссылками на справочник, не отрабатывает.

Как необходимо тогда заполнять подобного типа поля??

Нравится

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

Если вы знаете идентификаторы, которые нужно передавать, то так:

{
    "Name": "ВЕЛЕС ООО",
    "TypeId": "03A75490-53E6-DF11-971B-001D60E938C6",
    "RegionId": "4F485B54-54E6-DF11-971B-001D60E938C6",
    "Phone": "8-932-546-3245",
    "UsrENN": "9718001737",
    "UsrKPPStroka": "771801001"
}

 

Спасибо, получилось

оказывается все проще, чем я думал.

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

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

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

На академии по OData есть только это https://academy.terrasoft.ua/documents/technic-sdk/7-11/protokol-odata

Плюс, можно попробовать посмотреть официальную документацию по OData http://www.odata.org/documentation/

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

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

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

Есть базовые роли только чтение?

Почему без ролей есть возможность редактирования информации?

Есть еще видео кроме того которое в академии указано?

Нравится

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

Юрий, добрый день!

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

Вот ссылка, на академию и на видео, где подробно описано как это сделать.

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

Добрый день.

Создана Орг. структура. В качестве родителя указан "Все сотрудники компании".

Фиксирую в данные пакета: Объект SysAdminUnit, Тип установки - Установка , в фильтрах  указываю Название созданных админ.единиц. Данные сохраняются.

При установке пакета на другом экземпляре bpmonline возникает ошибка на схеме данных SysAdminUnit:

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

 

Нравится

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

Игорь, здравствуйте!

Данная ошибка значит, что Вы пытаетесь добавить новую корневую группу, но это не разрешено (только «Все сотрудники компании» и «Все пользователи портала»). Скорее всего, указан неверный ParentId (пустой), но, чтобы сказать точно, нужно смотреть этот файл привязки (или весь пакет) в виде zip или в репозитории.

 За эту логику отвечает триггер [TRSysAdminUnitRoot] таблицы SysAdminUnit.

Maksym Naumovets,

Я добавил две подчинённые админ. единицы в группу "Все сотрудники компании" https://yadi.sk/i/GIvq8kYZ3T5hqN

Коновалов Игорь, добрый вечер.

Не могли бы Вы прислать скриншоты привязок и ParentId ?

 Логика переноса работает таким образом, что сначала происходит создание записей, но parentid = NULL, а потом происходит заполнение этих справочников (parentId) значениями.

Решение:

- убедиться, что переносятся только две роли (без корневых!)

- отключить триггер TRSysAdminUnitRoot на  таблице SysAdminUnit.

- выполнить установку

- убедиться, что эти записи в SysAdminUnit имеют заполненную колонку parentid

- включить триггер TRSysAdminUnitRoot

Сергей Кy6риш,

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

Есть еще варианты?

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

Коновалов Игорь, как-то решили проблему? У меня сейчас такая же ошибка.

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

Возможно ли, что это связано с тем, что организационные роли созданы с типом "Организация"?

Ошибка установки данных AddSysAdminUnitAsRole в пакете TsCIBLoanApplication. UId f0b6ed44-e5a0-4a37-9f59-1bc7968fedb9: ORA-20000: Невозможно добавить корневую единицу администрирования. Корневая единица администрирования уже существует
[17:42:15][Step 8/11] ORA-06512: at "BPMONLINE.TRSysAdminUnitRoot", line 18
[17:42:15][Step 8/11] ORA-04088: error during execution of trigger 'BPMONLINE.TRSysAdminUnitRoot'
[17:42:15][Step 8/11] 
[17:42:15][Step 8/11] INSERT INTO "BPMONLINE"."SysAdminUnit"("Id", "CreatedOn", "CreatedById", "ModifiedOn", "ModifiedById", "Name", "Description", "SysAdminUnitTypeValue", "IsDirectoryEntry", "TimeZoneId", "UserPassword", "Active", "SynchronizeWithLDAP", "LDAPEntry", "LDAPEntryId", "LDAPEntryDN", "LoggedIn", "LoginAttemptCount", "SourceControlLogin", "SourceControlPassword", "PasswordExpireDate", "ConnectionType", "UnblockTime", "ForceChangePassword", "ScannerName", "WebCamUrl", "SessionTimeout")
[17:42:15][Step 8/11] 	VALUES('{3ACFA10A-8964-45DF-8840-42F4FD27B7A6}', TO_TIMESTAMP('2019-05-27 17:41:33.798', 'YYYY-MM-DD HH24:MI:SS.FF3'), '{410006E1-CA4E-4502-A9EC-E54D922D2C00}', TO_TIMESTAMP('2019-05-27 17:41:33.798', 'YYYY-MM-DD HH24:MI:SS.FF3'), '{410006E1-CA4E-4502-A9EC-E54D922D2C00}', 'Участник комитета', '', 0, 0, 'UTC', '', 1, 0, '', '', '', 0, 0, '', NULL, NULL, 0, NULL, 0, '', '', 0)

 

Судя по тексту, вставка записи с указанными значениями в таблицу SysAdminUnit конфликтует с триггером на ней. Откройте триггер TRSysAdminUnitRoot и посмотрите его 18 строку.

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

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

Есть кто на клауде? У всех прод недоступен сегодня в разгар рабочего дня или это наша индивидуальная проблема?

Уже 2 часа лежит, при этом ТП не говорит ни что случилось, ни когда починят. Обращение со статусом Critical.

Нравится

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

Работает. Проверил у нескольких клиентов. 

Но возможно, используются разные дата-центры. 

Владимир,

нам тоже починили. Ждём от тех.поддержки информации что это было.

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

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

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

Добрый день.

Возникла необходимость добавления пользовательского макроса в шаблон email и заполнять его значением параметра БП.



Прошу подсказать кейс реализации подобной задачи.

Нравится

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

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

Принцип реализации есть на SDK - https://academy.terrasoft.ru/documents/technic-sdk/7-11/dobavlenie-obra….

Спасибо! Второй день ищу информацию на академии.

А как быть с заполнением макросов из БП при использовании элемента "Отправить email"?

Коновалов Игорь, здравствуйте!



Не совсем понятен вопрос, Вы хотите вычитать значение параметра процесса в рамках исходного кода кастомного макроса?

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

Возможные реализации: 

1. Формировать по ходу процесса тело письма, и вставлять с помощью формулы в это тело параметр, условно: 

 BodyText = String.Format("Parameter value {0} in my body",[#MyParameter#])

2. Либо же Вы можете с помощью элемента чтение данных получить тело шаблона (объект = Шаблон email сообщения), записать значение в параметр процесса и аналогично первому пункту записать необходимое значение в тело (например, с помощью Replace).

3. Если подстановка значений выполняется из одного объекта, можно просто создать в шаблонах собственный с указанием объекта источника данных, а в процессе просто указать в элементе Отправить email id нужной записи.

4. Самый простой способ - отправлять письмо в режиме произвольное письмо, и подставлять в тело нужный параметр - http://prntscr.com/ipagjy

Если же вопрос больше как реализовать сложную логику в кастомном макросе - можно ознакомиться с реализацией базового, например, SymptomsGenerator пакета CaseService.

Спасибо, за варианты.

Но передо мной стоит задача в шаблон письма вывести по условию 3 таблицы из деталей р.Продажи. Шаблон самого письма строго типизирован.

Игорь, здравствуйте!

Вы можете формировать тело письма, содержащее таблицы, в формате html  по процессу, подставляя необходимые параметры процесса. После чего сформированное тело передавать в параметр [Тело письма] элемента Отправить email (в расширенных свойствах элемента).

Логвин Андрей Витальевич,

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

Есть ли возможность работать с пользовательскими макросами шаблона email в БП?




 

Коновалов Игорь,

Есть возможность заполнять макрос с помощью элемента процесса "Обработать шаблон письма с макросами", указав запись, из которой брать значения, uid объекта записи и id шаблона. Подробнее по работе данного элемента можно посмотреть в самом действии в конфигурации. Других вариантов обрабатывать кастомный макрос в БП нет, необходимо реализовать обработку в рамках задания-сценария.

 

 

Логвин Андрей Витальевич пишет:

Есть возможность заполнять макрос с помощью элемента процесса "Обработать шаблон письма с макросами",

а где вы нашли такой User task? 

Владимир, а где Вы искали? Создаёте новое действие в БП и выбираете с этим названием.

Зверев Александр пишет:

Владимир, а где Вы искали? Создаёте новое действие в БП и выбираете с этим названием.

Уже нашёл. Он есть в Service, но его нет в остальных продуктах.

Придётся копи-пастить 

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

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

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

Добрый день!

На данный момент реализуем БП, который самостоятельно поздравляет сотрудника компании с днём рождения посредством e-mail, а так же поздравляет человека, который проработал в компании 5, 10, 15, 20 и т.д. лет.

Нам известно, что ВРМ анализирует даты в детали «Знаменательные события» и передаёт оповещение о ней в боковую панель.

Как можно сделать аналогичный механизм внутри БП?

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

Получается, нам нужно провести сравнение дат внутри БП, чтобы человеку, который родился 01.03.1990 пришло поздравление 01.03.2018

Нравится

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

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

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

Для таких целей в БП целесообразней использовать элемент Задание - сценарий. Примеры работы с объектами в скрипте можно найти на Академии, нужный Вам объект - ContactAnniversary .

В рамках же скрипта можно выполнять и отправку письма для коллекции контактов, пример отправки по созданному id активности письма можно найти в базовом процессе "Отправка email сообщения контакту обращения" пакета Case.

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

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

Добрый день. Следую инструкции https://academy.terrasoft.ru/documents/technic-sdk/7-11/dobavlenie-instrumentalnoy-paneli-deystviy При добавлении панели действий на страницу получаю ошибку 

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

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

Нравится

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

А зачем создавать себе сложности? Создайте кейс для раздела и ActionDashboard будет добавлен автоматически.

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

Как рекомендовал Александр, самым оптимальным вариантом будет создать кейс для раздела.

Спасибо за совет. 

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