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

Имеется следующая проблема: Возникают различные ошибки при установке пакетов скачанных с marketplace. Устанавливаю стандартным способом, через интерфейс установки приложений в BPM. Например, установка валится на проверке зависимостей устанавливаемого пакета от пакетов в БД, или при выполнении sql скриптов установки справочных значений,  и т.д..

Вопрос: каким образом можно разобрать(распаковать) скачанный с marketplace пакет(приложение) на составляющие,  что-то поправить в нем и собрать обратно для загрузки на свой стенд BPM? Может есть инструкция(на академии не нашел) ?

Спасибо!

Нравится

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

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

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

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

Про marketplace понятно, что лучше обратиться к разработчику пакета. Но вопрос у меня в другом. Если например, стандартным способом выгрузить пакет из из системы, то он выгружается в архиве zip, а в нем архив gz, а в нем один файл. Вот вопрос - можно ли этот файл как-то открыть в VisualStudio например для редактирования?

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

Вот нашел, утилиту bpmcli

https://github.com/Advance-Technologies-Foundation/bpmcli  - может она умеет распаковывать пакеты?

Там упоминается команда:

Convert existing package to project

Convert package with name MyApp and MyIntegration, located in directory C:\Pkg

bpmcli convert -p C:\Pkg -n MyApp,MyIntegration

Convert all packages in directory C:\Pkg

bpmcli convert -p C:\Pkg

Её код — в файле PackageConverter.cs 

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

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

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

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

Хотим создать бизнес-процесс, который будет читать данные по обращению и формировать (POST, xml, json, http) запрос к сторонней системе, у которой api открытые. Знаю, что в 7.13 есть отдельный блок в бизнес-процессе, у нас же версия 7.11 – как мы в ней можем подобное реализовать?

Нравится

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

И в 7,11 есть элемент скрип таск в котором вы можете писать код на c# и отправлять (POST, xml, json, http) запрос к сторонней системе

Пример тут

И в 7,11 есть элемент скрип таск в котором вы можете писать код на c# и отправлять (POST, xml, json, http) запрос к сторонней системе

Пример тут

Очень рекомендую задуматься над обновлением текущей версии bpm'online до последней 7.13.3.

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

Добрый день!

Имеется следующий кейс: в запись раздела "Изменения" в деталь "Конфигурационные единицы" добавлена КЕ. Как с помощью бизнес-процесса добавить данную КЕ из изменений в деталь "Конфигурационные единицы" записи раздела "Релизы" (то есть автоматически передать значения)?

Нравится

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

Создать бизнес-процесс, который будет запускаться по факту изменения записи в детали 'Конфигурационные единицы', потом добавить элемент 'Читать данные' указать id записи из стартового сигнала и вычитать id KE, потом добавить элемент 'Добавить данные' в деталь 'Конфигурационные единицы' раздела 'Релизы'.

Создать бизнес-процесс, который будет запускаться по факту изменения записи в детали 'Конфигурационные единицы', потом добавить элемент 'Читать данные' указать id записи из стартового сигнала и вычитать id KE, потом добавить элемент 'Добавить данные' в деталь 'Конфигурационные единицы' раздела 'Релизы'.

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

На странице [Адрес приложения]/0/Nui/ViewModule.aspx#BaseSchemaModuleV2/FeaturesPage доступна возможность управления функциональностью. Но не понятно кому какая функциональность доступна. При наведении просто пишет что функциональность доступна для группы пользователей. но нельзя понять для какой.

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

Если же добавить функциональность, то в таблице AdminUnitFeatureState она прописывается только для меня. Ка назначить функциональность скажем на Орг роль? 

Нравится

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

Так в той же самой таблице(AdminUnitFeatureState) есть поле SysAdminUnitId. В него и заносится пользователь/роль. Если из интерфейса вносится пользователь, то Id ролей скорее всего придется руками добавлять

Вот это как раз не интересно. Выходит руками в БД надо прописать ID роли. А если я хочу дать только двум пользователям, то видимо мне надо добавлять еще запись в AdminUnitFeatureState

Фичи предназначены для временного включения-выключения не до конца разработанной новой логики, подробная настройка их состояния по группам не реализована. Каждый пользователь может включить или выключить себе или же пользоваться значением, выбранным по умолчанию для группы «Все сотрудники компании» или «Все пользователи портала». Через базу можно указать и другие группы или пользователей.

А если Вы разрабатываете какую-то логику и хотите определять её доступность, лучше будет создать не фичу, а право на операцию, и проверять в коде его.

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

Добрый день!



Интересует возможность печати всего раздела. Возможно ли сделать такой шаблон? Грубо говоря, хочется выгрузить реестр в виде печатного шаблона Word со всеми макросами, которые есть в системе.



Задача: 

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

Нравится

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

Для реализации Вашего отчета в MS Word Вам нужно реализовать sql-представление с полями 'Клиент' и 'Суммой по клиенту' (в цифровом значении). На основании этого представления создать EntitySchema и уже её использовать в отчете.

Чтобы ничего не дорабатывать для вывода суммы прописью, в отчете MS Word Вы можете использовать преднастроенный макрос базовой версии [#NumberRU#].

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

Потом при формировании шаблона в MS Word нужно добавить на страницу шаблона данную колонку с макросом в виде Сумма[#NumberRU#]

P.S. Также по этой ссылке Вы можете ознакомиться, какие ещё есть стандартные макросы в базовой версии.

Добрый день!

А что значит фраза

но как тогда в Excel превратить цифры в прописные буквы?

Имеется ввиду сумма прописью? Если да, то тут вариантов море. Кто-то берет готовые библиотеки и с их помощью конвертирует, кто-то пишет свои, даже попадался вариант конвертации в sql-процедуре)

Для реализации Вашего отчета в MS Word Вам нужно реализовать sql-представление с полями 'Клиент' и 'Суммой по клиенту' (в цифровом значении). На основании этого представления создать EntitySchema и уже её использовать в отчете.

Чтобы ничего не дорабатывать для вывода суммы прописью, в отчете MS Word Вы можете использовать преднастроенный макрос базовой версии [#NumberRU#].

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

Потом при формировании шаблона в MS Word нужно добавить на страницу шаблона данную колонку с макросом в виде Сумма[#NumberRU#]

P.S. Также по этой ссылке Вы можете ознакомиться, какие ещё есть стандартные макросы в базовой версии.

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

Настроил свой БП на обращения. В нем есть отправка письма.

Для отправки письма используется мультиязычный шаблон. Для формирования письча делаю читать данные схемы Case, потом Действие процесса Обработать шаблон письма с макросами (где указан мой шаблон), затем добавляю данные в раздел Активности и далее отправляю письмо скриптом:

var activityId = Get<Guid>("AddDataID");
if (UserConnection.GetIsFeatureEnabled("UseAsyncEmailSender")) {
	AsyncEmailSender emailSender = new AsyncEmailSender(UserConnection);
	emailSender.SendAsync(activityId);
} else {
	var emailClientFactory = ClassFactory.Get<EmailClientFactory>(new ConstructorArgument("userConnection", UserConnection));
	var activityEmailSender = new ActivityEmailSender(emailClientFactory, UserConnection);
	activityEmailSender.Send(activityId);
}
return true;

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

Пример такой настройки взят и стандартного БП Отправка письма при смене статуса обращения.

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

Нравится

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

EmailSender скорее всего берет тело сообщения из активности, а там уже лежит текст сообщения на каком то языке.

Почему бы не воспользоваться стандартным блоком "Отправить Email"?

Письмо должно быть привязано в хронологию обращения. К тому делал через отправку стандартным блоком Отправить Email и постоянно какие то ошибки. Не дружу я с ним )

К тому же все стандартные процессы по отправке писем не используют блок Отправить Email, а отправляют скриптами

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

Как то так

cultureId = UserConnection.CurrentUser.SysCultureId;

//cultureId бери из настроек пользователя те тот язык на котором хочешь чтобы было письмо пользователя

esq.SetLocalizationCultureId(cultureId);

Ну или более глобально как то так

userConnection.CurrentUser.SysCultureName = "en-US";

 

В итоге выяснилось путем тестов. Элемент БП Выполнить действие -  - Обработать шаблон письма с макросами не учитывает мультиязычные шаблоны.  Делал подмену шаблона из таблицы EmailTemplate на EmailTemplateLang. 

var mailTemplateID = Get&lt;Guid&gt;("MailTemplateID");
var usrLangId = Get&lt;Guid&gt;("UserLanguageID")==Guid.Empty
    ? new Guid("6EBC31FA-EE6C-48E9-81BF-8003AC03B019")
    : Get&lt;Guid&gt;("UserLanguageID");
var newMailTemplate = new EmailTemplateStore(UserConnection);
Set&lt;Guid&gt;("MailTemplateID", newMailTemplate.GetTemplate(mailTemplateID, usrLangId).PrimaryColumnValue);
return true;

И подавал на вход Элементу Обработать шаблон письма с макросами - результате пустое письмо. Поэтому перешел на другую отправку писем:

var contactEmail = Get&lt;string&gt;("ContactEmail");
var senderEmail = Get&lt;string&gt;("SenderEmail");
var caseId = Get&lt;Guid&gt;("RecordId");
var templateId = Get&lt;Guid&gt;("MailTemplateID");
var emailTemplateMacrosManager = new EmailWithMacrosManager(UserConnection);
emailTemplateMacrosManager.SendEmailFromTo(caseId, templateId, senderEmail, contactEmail);
return true;

Хорошо что раздел обращения. Полагаю в другом разделе такая отправка не заработает (

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

Есть задача выслать напоминание через 3 рабочих часа. Т.к. использоваться будет много, то хочу сделать по примеру темплейта https://marketplace.terrasoft.ru/template/raschet-rabochih-dney-v-bizne…. Только получается надо к дате/времени события прибавить рабочие минуты с учетом календаря. Если событие произойдет 7 марта в 16:00 (рабочий день до 17:00), то напоминание должно прийти 11 марта в 11:00 (рабочий день с 9:00). Все праздники и сокращенные дни занесены в Типовой календарь.

Как работать с выходными днями понял, а вот с рабочим временем не очень то понимаю.

Нравится

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

В продуктах ServiceDesk есть рабочий календарь (график работы) и расчет рабочих дат через веб-сервисы,(посмотрите TermCalculationService и сделайте что вам нужно по аналогии)

Так же есть бесплатные расширения для БП позволяющие работать с рабочими днями (можете сделать свой вариант по аналогии если существующий функционал вас не устроит)

В продуктах ServiceDesk есть рабочий календарь (график работы) и расчет рабочих дат через веб-сервисы,(посмотрите TermCalculationService и сделайте что вам нужно по аналогии)

Так же есть бесплатные расширения для БП позволяющие работать с рабочими днями (можете сделать свой вариант по аналогии если существующий функционал вас не устроит)

Решил задачу с использованием класса TermCalculatorActions

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

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

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

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

Что не так сделал и как же мне перенести этот шаблон письма?

Нравится

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

SysEmailTemplateLcz посмотрите

Поправьте — Тип установки: "Установка".

Поправил. Помогло на 50%. Перенесся только английский вариант письма. А вот на Русском языке нет. Где посмотреть что не так?

SysEmailTemplateLcz посмотрите

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

Спасибо. Наводка помогла. Добавил в данные объект "Таблица локализации для шаблонов" - EmailTemplateLang

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

Добрый день.

Стоит задача: назначать дату начала активности на ближайший день недели указанный в поле Контрагента "День недели" или "День недели 2". Например, у Контрагента в поле "День недели" указан понедельник, а в "День недели 2" - пятница, тогда все новые активности связанные с этим контрагентом должны назначаться на ближайший будущий понедельник или пятницу, в зависимости от того, какая дата ближе..

 

Нравится

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

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

Получаете текущий день недели и сравниваете с ДН1 и ДН2, дальше назначаете дату активности соответствующим днем.

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

Получаете текущий день недели и сравниваете с ДН1 и ДН2, дальше назначаете дату активности соответствующим днем.

Как раз не могу понять как найти дату соответствующую ДН1 или ДН2. Видел функцию ДеньНедели() но он возвращает номер дня

Смотрите номер текущего дня, номера обоих дней контрагента, находите разницу вперёд до ближайшего из двух, если не 0, то добавляете столько дней к сегодняшней дате посредством myDate.AddDays(offset), полученную дату пишете в параметр и используете для создания активности.

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

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

Настройка не кешируется.

Аналогичная настройка Статус системного договора - заполнение работает.

Все из коробки.

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

Куда копать?Изображение удалено.

Нравится

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

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

scr_section_administering_tab_objects.png

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

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

Права на изменение объекта и поля и т.д. есть у пользователя. И заполнение из других настроек работает.

Вы же написали что прав нет:

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

Значит, нужно добавить. 

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

Как добавить права, на конкретную настройку? Видимо, только их не хватает.

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

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

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

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

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