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

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

Как бизнесс-процессу использовать написанный конфигурационный сервис и передать ему входные параметры?
Например, нужно посчитать сумму счетов по контрагенту. В веб-сервисе эта сумма считается, принимая на вход id контрагента. То есть нужно передать бизнес-процессу идентификатор контрагента и запустить сервис.

Нравится

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

Есть такой элемент добавления.

есть таблица А в которую нужно вставить некоторое количество записей из таблицы Б
Нужно в А.Поле1 записать значение (Если Б.Поле1==1 то Параметр1*Б.Поле2 Иначе 0)
-------------------------------------
Также интересует как с помощью БП можно увеличить значение поля в конкретной записи(нипример контакта), например увеличить числовое поле год на 5.

Нравится

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

Виталий,
1. При работе с массивом в элементе добавление данных выполнить дополнительные арифметические действия не получится. Задачу можно решить в 2 этапа.
- Добавлять выборку из таблицы Б в таблицу А.
- Создать второй процесс по стартовому сигналу добавления записи в объекте А. Выполнять интересующие проверки, манипуляции и т.д.
2. Увеличить значение поля в определенной записи:
- элемент читать данные. По заданному условию найти интересующую запись.
- элемент изменить данные.
Если интересующее поле с типом Целое – [Читать данные. Первый элемент коллекции. Название поля] + 5
Если тип поля DateTime - [Читать данные. Первый элемент коллекции. Название поля].AddYears(5)

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

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

я хочу отправить E-mail с помощью елемент "Автоматически отправить E-mail". Я написал этого, но ничего не получилась.
я ничего не вижу в почте.

Нравится

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

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

Проверьте корректно ли настроен почтовый провайдер hotmail.com. Для тестирования отправки, рекомендую использовать почту Gmail - она сохраняет отправленные письма, поэтому можно исключить "потерю" письма при передаче его с bpm'online к почтовому провайдеру.

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

Доброго времени суток, коллеги.
Есть бизнес-процесс примерно такой структуры:
Я правильно понимаю, что при выполнении задачи "Счет на товар" и выполнении элемента "Счет сформирован" БП будет стоять на точке слияния и если при этом отменить задачу "Счет на доставку" и выполнении элемента "БП отменен" этот бизнес-процесс у меня никогда не завершиться?

Нравится

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

Добрый день!

Все правильно понимаете, именно так и отработает данный БП

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

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

Советую удалять в таком порядке:

  1. 1. Напоминания по задачам связанных с БП
  2. 2. Удалить задачи связанных с БП
  3. 3. Удалить БП

Удалять уже поздно: задачи нужны. Можно эти бизнес-процессы как нибудь штатно завершить? Поиграться c tbl_Workflow и tbl_WorkflowItem?

спасет вас что-то вроде этого
update tbl_Task set WorkflowItemID = null where WorkflowItemID in (select ID from tbl_WorkflowItem where WorkflowID = 'ID нужного процесса')

потом delete from tbl_WorkflowItem where WorkflowID = 'ID нужного процесса'
и наконец delete from tbl_Workflow where ID = 'ID нужного процесса'

бэкап перед "играми" не забудьте :smile:

Можете, для этого необходимо в таблице tbl_WorkflowItem заполнить такие поля:

  • [ActualExecuteDate]
  • [StateID] (установить состояние ws_Done)

Для таблицы tbl_Workflow заполнить поле [CompleteDate]

Спасибо.

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

Существует задача создать автоматический бизнес-процесс для создания прайс-листа контрагента, который запускается после создания контрагента.
В моем представлении это БП на одно действие (создание –прайса), а условие можно задать в настройках автоматического запуска.
Я использую действие чтение /запись данных. Здесь возникает первый вопрос – какая разница между «чтение /запись» и «открытие окна»? И в том и в другом случае ми можем сохранить информацию.
Основная проблема – перенос ID контрагента и создание ID новой записи (прайса). Как я догадываюсь, здесь нужно использовать параметры действия и здесь я уже ничего не понимаю.
Описание в руководстве администратора очень скудное, а на форуме не нашла понятного мне пошагового объяснения.

Нравится

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

Наталия,

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

действие [Чтение/запись данных] используется в случае, если необходимо записать
какую-либо информацию в базу данных (без отображения карточки редактирования) или считать информацию из базы данных.

Что касается

"Фащук Наталия Тарасовна" написал:Основная проблема – перенос ID контрагента и создание ID новой записи (прайса).

пример есть здесь

Спасибо. Есть ли решение с помощью MS SQL?

Не понимаю я логики этих действий.
Объясните пожалуйста наглядно на моем примере.
Цель: создать БП с автоматическим запуском. После создания контрагента создание прайс-листа к нему (с деталей).
Буду очень признательна.

Наталия, пример реализации Вашей задачи:

1. Создать БП, состоящий из 3-х элементов:
Начало - элемент [Открытие окна] - Завершение

/system/files/21-01-2015_16-17-25.png

2. Создать в БП строковый параметр, который будет содержать идентификатор создаваемого контрагента:

/system/files/21-01-2015_16-22-46.png

Заполнение параметра реализовать в теле функции обработки события OnStart начального элемента.
Код:

function Item1OnStart(StartItem) {
    var ParentDiagram = GetDiagramByItem(StartItem);
    var RecordID = WFGetParamValue(ParentDiagram, 'AutoID');
}

3. В моем примере создание прайс-листа для контрагента выполняется посредством элемента [Открытие окна]. Свойства окна:

/system/files/21-01-2015_16-28-04.png

Код окна, которое будет открываться на добавление прайс-листа - wnd_AccountPriceEdit

4. Настроить автоматический запуск БП (через Файл - Настройки - Автоматический запуск процессов).

Во вложении прилагаю БП, который я построила для примера.

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

Не отправляет напоминания о визировании при создании договора.
Началось с того, что у нескольких пользователей при установке визы перестали создаваться напоминания следующему по списку визировавшему.
Теперь такое у всех, кто бы не создал договор, кто бы его не визировал, напоминание о визирование не уходит к следующему пользователю.
Сообщение о том, что напоминание отправлено, не появляется.
В коде программы 100% ничего не изменяли.

Нравится

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

Здравствуйте, Андрей.

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

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

Спасибо,
Это я уже проверял у всех стоит напоминание.
не помогло

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

Анна, спасибо.

Андрей, прошу сообщить используемую Вами версию Terrasoft.

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

Добрый день!
TS 3.4.0.180

Пытаюсь передать параметры диаграммы подпроцесса в основной процесс. Но данные не передаются. Как решить эту проблему? Сервисы прилагаю.

Нравится

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

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

Необходимо в основной диаграмме настроить связь параметра диаграммы с параметром в подпроцессе:

http://i64.fastpic.ru/big/2014/0625/dd/abab82b4af16e17773f739dbf3a6d2dd.png

А затем получать значение параметра в скрипте диаграммы процесса можно, например, так:

function Item3OnAfterComplete(SubProcessItem, ItemDataset) {
	var mypr = SubProcessItem.ParentItems.ParentDiagram.Parameters.ItemsbyName('mypr').Value;
}

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

Здравствуйте, Андрей.

Можно, через ParameterMap.

Пример есть в функции:

function SaveDatasetFields(DiagramItem, Prefix, Dataset) {
	ClearParametersMapByLikeName(DiagramItem, Prefix);
	var Records = Dataset.Attributes('Records');
	for (var i = 0; i < Records.length; i++) {
		var Record = Records[i];
		ParameterMap = DiagramItem.ParametersMap.CreateItem();
		ParameterMap.ItemParameterName = Prefix + '_' + Record.FieldName;
		ParameterMap.Data = Record.FieldName;
		ParameterMap.ItemType = Record.MapType;
 
		if (Record.ParameterName) {
			ParameterMap.DiagramParameterName = Record.ParameterName;
		} else {
			switch (Record.ParamType) {
				case wptString:
				case wptLookup:
				case wptEnum:
					ParameterMap.Value = Record.StringValue;
					break;
				case wptInteger:
					ParameterMap.Value = Record.IntegerValue;
					break;
				case wptFloat:
					ParameterMap.Value = Record.FloatValue;
					break;
				case wptBool:
					ParameterMap.Value = Record.BoolValue;
					break;
				case wptDateTime:
					ParameterMap.Value = Record.DateTimeValue;
					break;
 
			default:
					ParameterMap.Value = Record.Value;
			}
		}
		ParameterMap.IsAdditional = true;
		DiagramItem.ParametersMap.AddItem(ParameterMap);
	}
}

Можно ли для связи параметров использовать эту функцию из scr_workflowutils?

function WFConnectParams

Андрей, да можно.

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

Добрый день!
Подскажите, пожалуйста, почему может не отрабатывать условие в элементе бизнес-процесса "Выбор"?
От этого элемента отходят 2 ветки с кодами NotAccept, Accept. Но ни по одной ветке процесс дальше не идет. В скрипт OnDecision заходит, ResultLinkCodes заполняю.

function Item4OnDecision(DecisionItem, IsComplete, ResultLinkCodes) {
        var LastTaskResultID = WFGetParamValue(DecisionItem.ParentItems.ParentDiagram, 'LastTaskResultID');
        if (LastTaskResultID == tr_OfferNotReceived) {
                ResultLinkCodes.Value = 'NotAccept';
        } else {
            ResultLinkCodes.Value = 'Accept';
        }
}

Нравится

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

Не получается пустить процесс по ветке K1. По ветке K2 процесс идет нормально.

Вопрос снят, стоял ProcessImmediately = false

Опоздал с ответом =(

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

Здравствуйте,
У нас в системе террасофт что-то слетело. Создаем договор, давим отправить на визирование, он выдает ошибку: Визы не созданы. В справочнике результатов типов визирования нет значения по умолчанию.
От любого пользователя, с любыми правами.
Помогите исправить, объясните как это сделать?
До вчера все исправно уходило по всей иерархии от начальников отделов и до директоров.

Нравится

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

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

Андрей, причина предупреждения - в справочнике [Результаты визирований] не определен результат визирования по умолчанию.
Чтобы исправить ситуацию Вам необходимо:
- Перейти в раздел [Справочники].
- Найти справочник [Результаты визирований].
- Для одного из результатов заполнить поле "По умолчанию".

Спасибо большое!
Правильно Наталия, не было ни одной галочки в пункте по умолчанию.

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

Добрый день!

TS 3.4.0.180

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

Нравится

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

Добрый день Андрей!!!

по умолчанию в конфигурациях Terrasoft CRM, XRM 3.4 таблица tbl_Workflow не "Администрируется по полям", т.е по умолчанию пользователи системы видят все процессы без ограничения. Максимум, что Администрируется это Только раздел "Процессы", т.е кому разрешено видеть данный раздел, а кому запрещено.

пожалуйста через посмотрите в таблице tbl_Workflow случайно не включена опция "Администрируется по записям". если включена я расскажу как в раздел Процессы добавить новую деталь. Если у вас не дорабатывались сервисы, то и поделюсь уже доработанными 2-мя сервисами. Спасибо!!!

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

"Власов Михаил Викторович" написал:пожалуйста через посмотрите в таблице tbl_Workflow случайно не включена опция "Администрируется по записям".
я не понял где это смотреть.

Требуется открыть Террасофт Администратор, в Реестре Модулей открыть: "Workflow --> General --> Main Grid". В открывшейся ветви находим таблицу tbl_Workflow, Открываем ее и смотрим установлена голочка или нет "Администрируется по полям". Если установлена и вам действительна нужна данная деталь, тогда да пожалуйста я вам расскажу как ее добавить. Только прежде всего Андрей вы для себя определитесь действительно ли вам требуется, чтобы каждый сотрудник видел только свои процессы. Если да тогда еще раз повторюсь помогу вам создать в Разделе "Процессы" деталь "Доступ". Но если вам не требуется Чтобы каждый пользователь видел только свои "Процессы", то мой вам совет снимите галочку с "Администрируется по полям" в таблице tbl_Workflow и после сохраните и обновите Таблицу.

Во вложение прилагаю Скриншот таблицы tbl_Workflow где вы сможите найти Опцию "Администрируется по полям"

Провел ряд экспериментов. В сервисе таблицы tbl_Workflow ни одна галочка не установлена, тем не менее я вижу только свои процессы, под Админом вижу все процессы. То есть такая ситуация

"Власов Михаил Викторович" написал:по умолчанию в конфигурациях Terrasoft CRM, XRM 3.4 таблица tbl_Workflow не "Администрируется по полям", т.е по умолчанию пользователи системы видят все процессы без ограничения.

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

"Рябенко Андрей" написал:

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

Отвечая на вопрос "почему пользователи не видят всех бизнес-процессов"?
в скрипте scr_WorkflowWorkspace есть функция

function ApplyWorkflowsWorkspaceFilter() {
...
	ApplyDatasetFilter(BaseWorkspace.GridDataset, 'OwnerID', 
		Connector.CurrentUser.ContactID, !Connector.CurrentUser.IsAdmin);
}

из кода по данной функции видно, что идет наложение фильтра на таблицу tbl_Workflow по полю "OwnerID". В связи с этим каждый пользователь видет только свои Бизнес-процессы, но при этом - это не разграничение прав по пользователям. Это просто фильтрация. Разграничивать по правам если честно я бы не стал и не советую этого делать, так как еще не известно какие в будущем у вас будут задачи с бизнес-процессами и Разграничение для вас создаст только дополнительную трудность.

Но к примеру если у вас стоит задача увидеть Пользователю1 бизнес-процессы пользователя2, я бы решил данную задачу путем добавление в раздел "бизнес-процессы" нового Lookup поля. Если интересно как это реализовать, то как пример реализации можно подсмотреть в разделе "Задачи".

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

Да безпроблем все это сделать можно. Только вот проблема которая у вас возникнет Андрей - это разграничение прав Одного бизнес-процесса на разное количество пользователей. К примеру вы создали бизнес-процесс. Внутри бизнес-процесса разрисовали логику в которой будут взаимодействовать 3 разных отдела и вам заранее будет требоваться разграничить права на отделы, на отдельных пользователей. И к примеру вы доработали этот бизнес-процесс и забыли включить права для новых групп и пользователей и ваша работа бизнес-процесса встала. Поэтому если вас это не пугает что я разрисовал, то я готов для вас поделиться доработанными скриптами.

Мне интересен этот вариант, хотелось бы посмотреть на скрипты. А фильтр в этом случае нужно вообще отключить,

function ApplyWorkflowsWorkspaceFilter() {
...
        ApplyDatasetFilter(BaseWorkspace.GridDataset, 'OwnerID', 
                Connector.CurrentUser.ContactID, !Connector.CurrentUser.IsAdmin);
}

как я понял?

"Рябенко Андрей" написал:А фильтр в этом случае нужно вообще отключить

Чтобы выводились БП не только текущего пользователя - нужно отключить.

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