авторизация
запуск
Технические вопросы
5.x

Наверное, вопрос будет смешной для гуру BPM, но рискну задать его. Итак, вопрос "чайника".
Подскажите, есть ли способ создать ярлык/ссылку/etc. для входа в строго определенную конфигурацию BPM без выбора конфигурации, переключения между полями и долгим вводом логина/пароля?

Нравится

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

Как Вариант, Вы можете сохранить закладку на "Панели закладок" но после того, как уже войдете в систему

Все равно авторизацию требует после попытки повторно открыть закладку. Google Chrome

Попробуйте в настройках Google Chrome сохранить логин и пароль для входа на сайт.

Не предлагается мне сохранение пароля при входе... Галка в хроме предлагать сохранение стоит
Файрфокс аналогично, не предлагает

"Александр Кудряшов" написал:Не предлагается мне сохранение пароля при входе...

У меня тоже пароль не предлагает сохранить, причем не только в хроме

1) зайти на сайт BPMonline
2) ввести логин, пароль
3) дождаться полной загрузки стартовой страницы
4) после этого, сохранить в панели закладок.

"Sergey Karpenko" написал:1) зайти на сайт BPMonline
2) ввести логин, пароль
3) дождаться полной загрузки стартовой страницы
4) после этого, сохранить в панели закладок.

Такой порядок не меняет сути - при повтором открытии страницы из закладок все равно открывается страница логина

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

"Sergey Karpenko" написал:Ребята, как бы там не складывались "танцы с бубном", каждый наш клиент требует безопасности данных в системе и автологин изначально противоречит правилам, вы должны это понимать. Что касается сохранения паролей, вы всегда можете узнать у наших коллег из google или подобных.

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

Показать все комментарии
карточка редактирования
раздел
тип
Технические вопросы
5.x

Добрый день!

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

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

Нравится

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

Кстати, вдогонку...
Гуру, подскажите для bpm-чайника стоит ли связываться и как проще сделать традиционное скрытие/показ контролов на карточке? Или такой метод будет идеологически совсем неправильным?

Александр, добро пожаловать в BPMonline :) На какой это версии? Думаю, стоит подправить базовую логику, чтобы название пункта меню формировалось как название типа + карточка.
Мы скрываем элементы управления используя метод public virtual void SetVisible(bool visible), он управляет видимостью с помощью выполнения скрипта на клиенте. и это быстрее, чем управлять видимостью меняя свойство public virtual bool Hidden, хотя так тоже можно.

Это версия 5.3.0.332
Базовая логика - с непривычки боязно, я буду бороться с этим страхом, обещаю;) настораживает, что это название потом может использоваться для подъема карточки, передаваясь куда-то. Соответственно править надо и его, почва для исследования есть.

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

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

Показать все комментарии
ParentGridPageSchemaId
Технические вопросы
5.x

Є ось такий скрипт:

CurrencyGridPage.CurrencyGridPageEventsProcess.CurrencyRateEditGridPageInitScriptTask

На що в ньому вказує ParentGridPageSchemaId = new Guid("39f129b6-b225-4949-95a6-820d78cf6294"); ?

Текст скрипта:

// Set parameters for parent detail association
ParentGridPageSchemaId = new Guid("39f129b6-b225-4949-95a6-820d78cf6294");
ParentEntitySchemaId = new Guid("2d36aca6-5b8c-4122-9648-baf3b7f8256d");
DetailGridPageSchemaId = new Guid("529e3b57-a4d0-404e-ba32-04682da85192");
DetailEntitySchemaId = new Guid("e14c6037-56bb-4724-95b6-3dc29d7f6b4f");
DetailAssociationColumnUId = new Guid("84ce4c1c-f001-4109-86fa-c9b36e8fd5d7");
IsEntityDetail = true;
return true;
На що вказує ParentGridPageSchemaId = new Guid("39f129b6-b225-4949-95a6-820d78cf6294");

Нравится

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

В даному випадку це схема BaseLookupGridPage, від якої наслідується створюване вікно.

Дякую! Вдалося скористатися схемою :)

Показать все комментарии
Деталь
Технические вопросы
5.x

Как добавить деталь на карточку (a не на раздел)? Напр. добавить раздел проблема на страницу редактирования инцидент (Incident.EditPage)?

С уважением,
Гюнель Рустамова

Нравится

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

При открытии окна редактирования, на событие OnPrepare добавьте вызов функции IncludeDetailEdit.

Пример:

IncludeDetailEdit(wndContact, 'ds_Contact', 'ID', ContactID)

где wndContact - компонент WindowContainer который содержит окно
'ds_Contact' - датасет подключаемого окна из wndContact
'ID' - поле по которому произойдет фильтрация в датасете ds_Contact
ContactID - значение (ID контакта)

/**
 * Подключение детали в окно редактирования
 * @param WindowContainer - окно контейнер с реестром который необходимо подключить
 * @param DatasetUSI - датасет подключаемоего окна
 * @param FilterField - поле для фильтрации детали
 * @param RecordID - ID для фильтрации данных
 */  
function IncludeDetailEdit(WindowContainer, DatasetUSI, FilterField, RecordID) {
	var Script = Services.GetNewItemByUSI('scr_WorkspaceUtils');
	Script.ScriptControl.Run('RefreshCommonDetail',
		null, WindowContainer, FilterField, FilterField, 
		DatasetUSI, null, null, null, null, RecordID);
}

Спосиба за ответ. Но я не смогла у BPMOnline "ххх.EditPage" найти событие OnPrepare. Не могли бы вы подробна, описать процедуру.

Заранее спасибо.
С уважением.

Гюнель, смотрите раздел "Рабочие места".

я только что понял, что это для BPM вопрос, а мой пример для десктопного приложения.

Gunel, регистрация детали осуществляется в разделе [Рабочие места].
Чтобы добавить деталь придерживайтесь следующего алгоритма:
1. Перейдите в раздел [Рабочие места].
2. Выберите необходимое рабочее место, нужный раздел.
3. Перейдите на деталь [Детали], добавьте [Новую деталь]. В открывшейся карточке регистрации детали введите название детали, укажите страницу реестра детали, укажите объект, данные из которого должны отображаться на детали.


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

Тогда вместо п.3 из комментария Натальи перейдите на деталь "Карточки редактирования", нажмите кнопку "Изменить", перейдите на деталь "Детали" и там уже добавляйте новую.

Показать все комментарии
скопировать
схема
Технические вопросы
5.x

Добрый день,
Как можно создать другую копию схемы процесса.
Например, есть процесс Test1, надо создать почти точно такjй же процесс Test2

Нравится

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

А простое копирование сервиса диаграммы Вы не пробовали? потом в скопированом сервисе убираем или добавляем нужные элементы...
или у Вас БПМ-онлайн? или немного другая задача?

П.С. сорри, с утра туплю:smile: уже сама увидела, что BPM-online..

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

Обычную схему напрямую скопировать нельзя, единственный доступный способ на текущий момент - выгрузить схему в файл, подправить в нем название и идентификатор, и загрузить снова. Настоятельно рекомендуется пробовать это делать на тестовой базе данных.

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

Аналогично копируется и схема страницы: выгужаем в md-файл. В начале файла можно увидеть старые значения Id, Name и Caption.

{
  "Id": "feab5118-585f-4729-8920-587088a5b4d4",
  "ManagerName": "PageSchemaManager",
  "StateInSolution": 0,
  "Name": "ContractEditPage",
  "Caption": "Страница карточки договора",
  "ParentId": "85086f2a-99e3-4268-860c-d26f53ec85dc",
  "MetaData": "{\r
\n  \"MetaData\"": {\r

Спасибо,
Только что протестировал, все хорошо работает.

И вопросы на засыпку
1. Получается также можно скопировать и страницы?
2. После создания копии проблем с оригиналом не будет? Например с уникальными гуидами элементов процесса

Пардон Саша,
Ваше сообщение увидел чуть позже

И последний вопрос:

Как правильно перенести разработки на тестовую базу?

Как у нас сейчас реализована архитектура:
1. База разработки
2. Тестовая база
3. Боевая

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

Как правильно перенести изменения не затрагивая работающих пользователей???

"AlikBory" написал:
2. После создания копии проблем с оригиналом не будет? Например с уникальными гуидами элементов процесса

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

Менять в копии процесса GUID-ы элементов не обязательно, т.к. в текущей реализации важна их уникальность в пределах одной схемы процесса. Два разных процесса могут иметь элементы с одинаковыми Id. Учитывая высокую вероятность наделать ошибок при тотальной замене GUID-ов по всей схеме, я бы настоятельно не рекомендовал это делать :smile:

"AlikBory" написал:

Как правильно перенести разработки на тестовую базу?

Как правильно перенести изменения не затрагивая работающих пользователей???


Штатным режимом переноса изменений как раз является "экспорт-импорт-публикация". При такой операции новые версии схем подхватываются системой незаметно для других пользователей.
В таблице "SysSchemaInSolution" хранятся все версии всех схем. В результате имеется возможность откатить некорректные изменения.
Если количество старых версий схем в "SysSchemaInSolution" для Вас критично, старые версии можно чистить из этой таблицы. Номер версии хранится в колонке Version, чем больше число - тем новее версия. Главное - чтобы для каждой конфигурации оставалась хотя бы одна запись для каждой схемы.

Показать все комментарии
Технические вопросы
5.x

Приветствую,

на странице редактирования КЕ есть деталь "Заметки". На странице раздела КЕ, при выделении какой-либо КЕ, детали "Заметки" нет. Как ее можно добавить в отображение?

Нравится

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

В разделе "Рабочие места" находите ваш раздел КЕ, переходите на деталь "Детали", добавляете новую. Что указывать в полях карточки добавления, можно посмотреть тут же на детали "Карточки редактирования". Открыть на изменение карточку, в которой Вы видите желаемую деталь и на детали "Детали" этой карточки должна быть по идее деталь "Заметки".

Спасибо Ольга. Но, к сожалению, так сделать не получилось. С списке связанных деталей "Заметки" у КЕ - нет.

Кирилл, посмотрела в коде. "Заметки" отображаются в карточке редактирования, если есть соответствующая колонка. Вероятно, это из-за того, что деталь специфическая и не ложится в общую схему регистрации. Она отображает не данные отдельного объекта, а колонки из этого же объекта. В схеме InitializeDetails определяется отображение детали в карточках. Как сейчас быстрее и безболезненно добавить деталь в раздел, не подскажу, нужно пробовать.

Показать все комментарии
Технические вопросы
5.x

Добрый день.
В настройках BPMOnline CRM + SD есть значения по умолчанию. Например, значение статуса запроса на обслуживания.
Сделал настройку DefaultUrgencyOfServiceCall - значение срочности запроса на обслуживание и сделал значение "Средняя" из справочника "Срочность обслуживания". Как теперь эту настройку привязать к необходимому полю "Срочность" в карточки запроса на обслуживание?
Спасибо.

Нравится

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

В карточке запроса на обслуживание (wnd_...Edit), есть событие OnPrepare (это событие окна) в нем напишите следующее

function wnd_YourWindowNameEditOnPrepare(Window) {
...
edtYourControl.Value = GetSystemParameterValueEx('DefaultUrgencyOfServiceCall');
}

GetSystemParameterValueEx - Взять с сис. настроек параметр DefaultUrgencyOfServiceCall. Функция определена в scr_Utils

Спасибо, но у меня нет события OnPrepare.
Вы не путаете с Terrasoft 3.x? У меня BPMOnline.

Кажется, АльфаКрыса немного переволновалась :wink:

Самый простой способ (в общем случае) - открыть объект и установить значение по умолчанию для колонки. Но для запроса на обслуживание не подходит, потому что у него и инцидента один объект

Поэтому открываем процес страницы редактирования запроса на обслуживание. Ищем событие PageLoadComplete и после вызова базового (синего конверта) добавляем свой скрипт:

if (IsNew || IsCopy) {
    var defaultStatusId = (Guid)Terrasoft.Core.Configuration.SysSettings.GetValue(UserConnection, "DefaultUrgencyOfServiceCall");
    Page.DataSource.ActiveRow.SetColumnValue("DisplayStatusId", defaultStatusId);
}

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

Надеюсь, логика понятна. Если есть ещё вопросы - спрашивайте

Спасибо.
Вот как я делал:
- открыл процесс страницы редактирования запроса на обслуживания;
- нашел событие PageLoadComplete (синий конверт)
- добавил после него элемент "задание-сценарий" и списал туда скрипт, который вы привели.
- сохранил и опубликовал. При компиляции выдал ошибку:
Terrasoft.WebApp.ServiceCallEditPageEventsProcess.ScriptTask3Execute(Terrasoft.Core.Process.ProcessExecutingContext)': not all code paths return a value

Потом, я изменил в вашем скрипте StatusId на UrgencyId, т.к. мне нужна срочно по умолчанию. Но все равно таже ошибка при компиляции.
Я что-то делаю не так?

Сергей, а поясните еще подробнее, пожалуйста:

"Чуприк Сергій Іванович" написал:
Самый простой способ (в общем случае) - откыть объект и установить значение по умолчанию.

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

Ошибка значит то, что скрипт - это функция типа bool, поэтому она должна возвращать true или false. В 99% случаев скрипт должен возвращать true, чтобы механизм работал дальше. Если возвратить false, тогда выполнение текущей ветки прекратится.

Если же срочность одинаковая (берется один Id с одной таблицы, а не просто "Средняя", но таблицы разные), тогда можно открыть объект (ServiceRequest), найти там колонку Срочность. В свойствах найти "Значение по умолчанию". Выбрать установить из настройки и выбрать вашу настройку. После этого опубликовать объект

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

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

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

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

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

Показать все комментарии
Автонумерация
Технические вопросы
5.x

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

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

С уважением,

Гюнель Рустамова

Нравится

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

Gunel, демо-версия позволяет вносить изменения в конфигурацию так же, как и полная. Вероятно, причина ошибки заключается во внесенных Вами изменениях.
Проверьте, все ли действия выполнены корректно (на примере создания автонумерации счета):
1. Добавлены две системные настройки, которые будут определять текущий номер и маску генерации номера. В качестве примера Вы можете использовать настройки «Маска номера счета» и «Текущий номер счета».
2. В процессе страницы карточки редактирования после элемента ScriptPageLoadCompleteBase реализована генерация номера, аналогично тому, как это реализовано для счетов (в качестве образца используйте процесс страницы карточки счета)
	 http://www.community.terrasoft.ru/system/files/1_99.png
3. В скрипт после события PageLoadCompleteBase добавлен код
	 http://www.community.terrasoft.ru/system/files/2_57.png

NumberGenerator.EntitySchema = Page.DataSource.Schema;
return true;

	 http://www.community.terrasoft.ru/system/files/3_28.png

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

1. Я сделала
2. На "Странице карточки счета" к сожалению, нет таких элементов. Не могли бы пожалуйста описать по подробней создание скрипта "NumberGenerator".

С уважением,
Гюнель Рустамова

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

Чтобы создать нумерацию, выполните такие действия:
- После промежуточного генерирующего сообщения PageLoadComplete добавьте элемент «Действие процесса», заполните его свойства подобным образом:

http://www.community.terrasoft.ru/system/files/11_2.png
- Следующим элементом добавьте «Скрипт», с таким содержимым:

if (IsNew) {
	Page.DataSource.ActiveRow.SetColumnValue("Code", NumberGenerator.ResultCode);
}
return true;

Вместо "Code" следует указать название поля, для которого создается нумерация.
- Не забудьте про 3 шаг предыдущего комментария (http://www.community.terrasoft.ru/forum/topic/8603#comment-36183).

Спосиба за ответ. Вы мне очень помогли.

С уважением,
Гюнель Рустамова

Показать все комментарии
сервисный договор
Технические вопросы
5.x

На Web-Portal-е во время добавление нового запроса, нужна, выбрать сервис и сервисный договор. На разделе "Инструменты" убрала "сервисный договор по умолчанию". Когда на Web-Portal-е открываю карточку "обращения" не могу выбрать "сервисный договор". Справочник "сервисный договор" пустой. Как разрешит эту проблему?

Нравится

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

Гюнель, приветствую!

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

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

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

С уважением,
Белецкий Арсений
Группа компаний Terrasoft

Спасибо за ответь. Да я именно так и сделала. Но ппредпаложим у нашей компании несколько "сервисов", а значит и "сервисного договора". Во время создание запроса на web-portal-e работник должен выбрать нужней ему "сервис" и взоимосвязынный им "сервисного договора". Поэтому в разделе [Системные настройки] в настройке [Сервисный договор по умолчанию] убрала значение.
Что бы выбрать "сервисный договор" из справочника. Но почему то, справочник показывает пустым.

Гюнель, дело в том, что Сервис зависит от Сервисного договора.

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

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

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

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

С уважением,
Белецкий Арсений
Группа компаний Terrasoft

Спасибо за ответь. Вы мне очень помогли.

С уважением,
Гюнель Рустамова

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

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

Есть раздел "Объекты залога" с основным реестром "Объекты залога" с деталью "Торг". В реестре детали "Торг" добавлена кнопка "Установить даты" при нажатии которой открывается созданная страница "Установить даты".(связка таблиц Объекты залога-Торг: "Id"-"CollateralSubjectId")

Вопрос, как при нажатии на кнопку "Установить даты" и открытии страницы "Установить даты" в реестре "Торг" получить "Id" выделенной записи основного реестра "Объекты залога"?

Нравится

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

"Id" выделенной записи основного реестра на детали хранится в переменной SelectedNodePrimaryColumnValue. Для использования на созданной странице, необходимо передать её в качестве параметра.

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