Маю задачу додатково писати в журнал факти відкриття звернень.

Є от такий довідничок: [SysEntityChangeType] - Тип изменения объекта.
Довідничок без візуалізації, описує типи операцій для журналу внесених змін.
В ньому описано три операції:
Добавление
Изменение
Удаление

Запитання: чи можна в цей довідничок добавити нову операцію (наприклад: "Открытие") з тим, щоб фіксувати цю операцію при відкритті звернень ?

Нравится

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

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

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

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

Как можно сделать так чтобы, сервисы фильтровались при выборе контрагента на карточке обращения?
Напр, HRB сервис был виден лишь при выборе контрагента HR. А для других контрагентов не был виден?

Заранее большое спасибо.

С уважением,
Гюнель

Нравится

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

Добрый день, Гюнель!

В системе реализована следующая логика. Для каждого [Сервисного договора] указывается определенный [Пакет сервисов]. Также в карточке сервисного договора указывается [Контакт], [Контрагент] и [Объект обслуживания].

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

Таким образом, когда в Заявке будет указан [Контакт], [Контрагент] и [Конфигурационная единица] для выбора буду доступны только те сервисы, которые входят в пакет сервисов в выбранном [Сервисном договоре].

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

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

Предупреждение
Данный сервис не предоставляется по сервисному договору

Но проблема в том что, контакт может игнорировать данное предупреждение, и создат новое обращения. А это у нас не приемлема((
Можно ли сделать так чтобы, при появлении данного предупреждения, контакт не смог сохранит (создат) обращения?

Заранее большое спасибо.

С уважением,
Гюнель

Добрый день, Гюнель!

Для того чтобы контакт не смог сохранит (создат) обращение нужно переопределить метод AreConditionsCorrect обьекта BaseServiceRequestInBPMonlineEditPage

а именно заменить код метода на:

base.AreConditionsCorrect(Row);
var serviceId = (Guid)Page.ServiceEdit.Value;
var serviceAgreementId = (Guid)Page.ServiceAgreementEdit.Value;
var availableServices = GetAvailableServicesNew(serviceAgreementId);
 
var serviceNotInAgreement = true;
foreach (var recordData in availableServices) {
	if (recordData.Id == serviceId) {
		serviceNotInAgreement = false;
		break;
	}			
}
if (serviceNotInAgreement) {
			Page.BaseMessagePanel.AddMessage(Warning, ServiceNotInServiceAgreementMessage, MessageType.Warning);
		}
return !serviceNotInAgreement;

Сохранить и опубликовать.

Добрый день, Григорий

Заработала. Большое спасибо

С уважением,
Гюнель

Добрый день,

Как можно сделать тоже самое и для портал пользователей?

Заранее большое спасибо.

С уважением,
Гюнель

Получилась. Поменяла метод AreConditionsCorrect обьекта PortalServiceRequestEditPage.

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

Если у Вас возникла ошибка при создании или при формировании печатной формы в разделе, например, "Контрагенты":

Action: ThrowEvent
ControlId: PageContainer_AccountsModulePage_Grid_PrintReportMenuItem_2ad39a6e48f144e381e8ce24560cb529
SubmitAjaxEventConfig: {"config":{"viewStateMode":"include","extraParams":{"viewStateMode":"include","formProxyArg":"htmlForm","signalName":"CreateMSWordReportMessage","ajaxEventTargetControlID":"PageContainer_AccountsModulePage_Grid_PrintButton","tag":"2ad39a6e48f144e381e8ce24560cb529"}}}

То необходимо проверьте, пожалуйста, присутствует ли системная настройка "SaveWordReportAsRecordAttachment". Если нет, то необходимо ее добавить (Рис. 1).

Рис. 1

Нравится

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

В сутність [Активность] добавив нове поле.
Значення цього поля формується в процесі створення активності (з типом задача на внесення інформації).

Створенням активності займається бізнес-процес, який запускається від роллю [Супервізор по контенту].
Відповідальним для активності призначається просто [контент-менеджер].

В реєстрі активностей видно, що поле має значення відмінне від нуля:

Якщо карточку активності відкрити під відповідальним контент-менеджером, то значення в карточці відображається таке ж як і в реєстрі.
Якщо карточку активності відкрити під [Супервізором по контенту], то значення показується нульове.

В доступі до об"єктів внесено наступні налаштування:

Для прогляду:
Контент-отдел -> Супервизоры по контенту
Супервизоры по контенту -> Контент-отдел
Контент-отдел -> Контент-отдел

Для зміни:
Супервизоры по контенту -> Контент-отдел
Супервизоры по контенту -> Супервизоры по контенту
Контент-отдел -> Контент-отдел

Для контент-менеджера супервізор виступає в ролі керівника.

При відкритті форми зі скрипта [PageLoadCompleteScriptTask] виводиться значення взяте наступним способом:
var complexityFactor = Page.DataSource.ActiveRow.GetTypedColumnValue("ComplexityFactor");

Виводиться завжди значення відмінне від нуля.

В скриптах форми значення пол не розраховується, але використовується для розрахунку значення іншого поля.

Запитання: звідки береться той нуль ?

Нравится

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

Если в поле NULL, или значение было каким либо образом считано как NULL (нет прав к примеру и т.п.) то "числовой" контрол отобразит значение "0" + разрядность ",00", если это дробное число.

То значить справа все-таки в правах.
Доведеться знову тестувати схему прав.

Дякую.

По [SQL Server Profiler] бачу, що значення вибирається правильне, тож на рівні доступу до даних в БД немає проблеми з правами доступу

Игорь, т.е. под "проблемным" пользователем вы выводите считанное значение в панель сообщений (и получаете 3) и в то же время в контроле видите 0?

а если сделать

if(a > 0) {
 Page.MyControl.SetValue(a);
}

?

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

Стосовно прив"язки:
[ComplexityFactorEdit]

[ComplexityFactor]

Форма:

Щодо адміністрування - сама сутність [Активности] по полях не адмініструється, тільки по записах та по операціях

І ще, в базі:

А якщо взяти значення ось таким чином:
var complexityFactor1 = Page.ComplexityFactorEdit.Value

то буде ось такий результат: -79228162514264337593543950335
і він !=null

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

Не допомагає.

Для "непроблемного" користувача

var complexityFactor1 = Page.ComplexityFactorEdit.Value

complexityFactor1 також: -79228162514264337593543950335

То що ж тоді Page.ComplexityFactorEdit.Value за величину презентує ?

Знайшов дещо цікаве:

public virtual void SetValue(decimal value)
{
	if (!value.Equals(-79228162514264337593543950335m))
	{
		base.SetValue(value);
	}
	else
	{
		base.SetValue(null);
	}
}

Це значення і презентує NULL.

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

PageContainer_DataSource.activeRow.columns

В цьому об"єкті ComplexityFactor=2.9

А ще цікаво:

(Guid) Page.AuthorEdit.Value

вказує на одну особу,

а Page.DataSource.ActiveRow.GetTypedColumnValue("AuthorId")

на іншу

---------------------------------------------------------------------------------------------------
з цим розібрався ...

Здравствуйте, Игорь!
Довольно странные вещи Вы описываете. Думаю, дальнейшее обчуждение без возможности посмотреть на проблему "вживую" бесполезно. Поэтому рекомендую обратиться в службу тех. поддержки и предоставить бэкап БД или доступ к среде для воспроизведения ошибки.

"Ігор Андрусенко" написал:
з цим розібрався ...

С чем именно? И в чем было дело?

Ось з цим:

А ще цікаво:
 
(Guid) Page.AuthorEdit.Value
 
вказує на одну особу,
 
а Page.DataSource.ActiveRow.GetTypedColumnValue("AuthorId")
 
на іншу

В скрипті [PageLoadCompleteScriptTaskExecute] є запуск метода [ChangeTextInFields], в якому явно прописувалася особа з сутності [ChangeRequest]:

Page.AuthorEdit.SetValueAndText(
	authorId, 
	TSConfiguration.CommonUtilities.GetLookupDisplayValue(UserConnection, "Contact", authorId)
);

Закоментував цю частину коду і автор почав відображатися коректно.
(Я зупинявся на етапі відкриття форми, не зберігаючи її, тому різниця між завантаженим і прописаним значенням відслідковувалася)

А стосовно значення [ComplexityFactor] зараз намагаюся провести відладку в IE зробити. Ще не зрозумів, де краще точки останова зробити.

Кстати, а в других браузерах такое же поведение?

"Андрей Каспаревич" написал:Игорь, попробуйте в источнике данных в свойствах поля поставить галку "Всегда загружать данные".

Я тоді проставив флажок на набір даних.
"Ігор Андрусенко" написал:Не допомагає.

А проставлення флажка на "Всегда загружать данные" на самому полі вилікувало ситуацію. Перепрошую за неуважність.

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

Взявся розбиратися з написанням web-сервісів.
З початковою операцією сервісу [http://bpmonline-dev.local/ServiceModel/AuthService.svc/Login] питань не виникло.
Авторизуюсь, витягую coocies. Все добре.

Але є запитання з подальшою технологією роботи.

[http://localhost/ServiceModel/AuthService.svc/Help] видає варіанти використання сервісу:
Uri Method Description
GetSolutions
POST
Service at http://localhost/ServiceModel/AuthService.svc/GetSolutions

GetSolutionsData
POST
Service at http://localhost/ServiceModel/AuthService.svc/GetSolutionsData

Login
POST
Service at http://localhost/ServiceModel/AuthService.svc/Login

GET
Service at http://localhost/ServiceModel/AuthService.svc/Login?UserName={USERNAME}&UserPassword={USERPASSWORD}&SolutionName={SOLUTIONNAME}&TimeZoneOffset={TIMEZONEOFFSET}

Я так зрозумів, що для формування http-звернення до сервера потрібно визначити номер рішення (solution) яке має бути підставлене в рядок звернення:
http://localhost/номер рішення>/ServiceModel/ProcessEngineService.svc/назва створеного сервісу>Execute

Питання: як визначити номер рішення ?
(якщо можна - з прикладом).

Нравится

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

Ну от, потрібну інформацію видає сервіс
http://localhost/ServiceModel/AuthService.svc/GetSolutionsData:
[{"Key":"TSBpm","Value":0},{"Key":"TSBpm.1","Value":1},{"Key":"TSBpm.2","Value":2},{"Key":"TSBpm.3","Value":3}]

Добый день, Игорь!
Обычно в продуктивной среде используется только 1 рабочее решение (конфигурация), и его номер - 0. Другие конфигурации могут использоваться для разработки и их номера соответсвуют полю [Number] таблицы [SysSolution], а на IIS должно быть добавлено соответсвующее приложение для каждой конфигурации, как видно на скрине:

Ну, загалом справився.
Написав програмку, в яку вхідними параметрами передаю web-ресурс, назву служби, назву рішення та ще кілька параметрів для проформи.

Спочатку проводжу аутентифікацію за допомогою служби:
http://localhost/ServiceModel/AuthService.svc/Login

Потім читаю список рішень в JSON-форматі за допомогою тієї ж служби:
http://localhost/ServiceModel/AuthService.svc/GetSolutionsData

в цьому списку шукаю рішення за назвою, визначаю номер рішення.

Далі, маючи web-ресурс, назву служби з вхідних параметрів та номер рішення, формую звернення до цієї служби:
http://localhost/<№ рішення>/ServiceModel/ProcessEngineService.svc//Execute

Писав для зовнішнього запуску служби завантаження email-ів, яка раніше запускалася windows-планувальником за допомогою утилітки ProcessExecutor54.exe.

Я в ImapClient вніс зміни на предмет фіксації типу вкладеного в email-файлу, і служба завантаження email-ів в інтерфейсі BPMonline працювала нормально, а при зовнішньому запуску типи файлів не фіксувались (наче ProcessExecutor54.exe десь знаходила старий варіант служби).

Тому вирішив написати свій стартер для web-служб BPMonline.
Написав.
Працює зараз в тестовому режимі.
Поки що все [ok].

Якщо комусь цікаво - можу поділитися .NET утиліткою BPMonlineServise.exe

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

Здравствуйте.
Создала действие на детали, по нажатию на которое вызваю страницу, содержащую контейнер отчета.
Не пойму как передать в этот контейнер какой именно отчет нужно открыть и как передать туда данные из реестра?Подскажите, пожалуйста.

Нравится

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

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

С уважением,
Группа компаний Terrasoft

Есть 2 способа добавить отчет на деталь в 5.4:

1) Добавить в раздел в разделе «Рабочие места», тогда отчеты будут видны в разделе, а также на деталях, в каких используется страница реестра этого раздела
2) Можно показать PrintButton, добавить в нее нужные пункты и их обработку. Пример запуска отчета можно посмотреть на базовой странице реестра (BaseGridPage), см. подпроцесс «Открытие окна печати реестра»

Запуск страницы отчета выполняется действием «Открыть страницу печати», которому кроме стандартных параметров, нужно передать UId схемы отчета и схемы сущности детали, см. сценарий «ScriptTaskSetReportOptions»

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

Добрый день

Хочу создать отчет (выбрать все названия учетных записей по Контакту и подсчитать, сколько у определенного Конакта этих учетных записей)

// в объекте Контакт есть вкладка Учетные записи.

Для этого в дизайнере: выбрала данные , к-ые меня интересуют:

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

Нравится

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

с чем может быть связана эта ошибка?

Такая ошибка возникает если сломаны метаданные отчета. Т.е. готовый отчет был изменен, причем некорректно, затем сохранен. Нужно разбираться с конкретным отчётом, чтобы починить эту проблему.
На данный момент попробуйте сгенерировать метаданные и исходный код для схемы этого отчета и нажать «Компилировать измененное» в разделе «Конфигурация».
Если после этого ошибка не пропадет, попробуйте создать отчет заново.
При создании нового отчета – такая ошибка возникнуть не может. Быстрее и лучше всего, если отчет был «пробным» - удалить его, и создать новый.

дОБРЫЙ ДЕНЬ. Это был абсолютно новый отчет.

На данный момент попробуйте сгенерировать метаданные и исходный код для схемы этого отчета и нажать «Компилировать измененное» в разделе «Конфигурация».

- а это где взять?

На данный момент попробуйте сгенерировать метаданные и исходный код для схемы этого отчета и нажать «Компилировать измененное» в разделе «Конфигурация».

- а это где взять?

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

"TatianaM" написал:
«На данный момент попробуйте сгенерировать метаданные и исходный код для схемы этого отчета и нажать «Компилировать измененное» в разделе «Конфигурация»».

Извините, пожалуйста, данная рекомендация корректна для версий 7.х.

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

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

Нравится

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

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

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

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

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

Після оновлення GoogleChrome до версії 42.0.2311.90 m проявився незручний момент:

якщо максимізувати вікно карточки редагування якоїсь сутності і так його закрити, то далі при відкритті будь-якої карточки цієї сутності система намагатиметься відкрити вікно в максимальному розмірі, після чого розмір вікна змінюється в мінімальний.

Чи можна це якось полікувати ?

Нравится

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

42ая сборка еще и Silverlight отключает по-умолчанию - http://www.community.terrasoft.ru/blogs/12102

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

Здравствуйте.
Решение будет предоставлено, ориентировочно, до 30.04.2015.

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

Уточните, пожалуйста, полное название и версию Вашего продукта (например, bpm'online CRM 5.4.0.1800).

Доброго дня!

Схоже, що 5.4.0.2455

Игорь, просьба уточнить также название продукта. Если не знаете название продукта, можете указать название Вашей компании в личном сообщении или в письме со ссылкой на данный пост на адрес support.team@bpmonline.com

BPMoline Service Desk

Игорь, данная проблема решена в последних версиях приложения (которые собраны после 30.04), просьба обратиться в техническую поддержку по адресу электронной почты support.team@bpmonline.com и запросить предоставление новой сборки приложения с исправлениями.

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

Добрый день.

Подскажите как startDate задать, чтобы показывалась не только текущая дата, но и даты ранее текущей?
Т.е. чтобы фильтровался список активностей не только за текущий и следующий день, а за все дни, до следующего от текущего дня?

DateTime startDate = UserConnection.CurrentUser.GetCurrentDateTime().Date;
DateTime endDate = startDate.AddDays(2).AddSeconds(-1);
var dateFilters = currentStructure.CreateFiltersGroup("Date", LogicalOperationStrict.Or);
dateFilters.Add(currentStructure.CreateFilterWithParameters(dataSource.Schema,FilterComparisonType.Between, "StartDate", startDate, endDate));
dateFilters.Add(currentStructure.CreateFilterWithParameters(dataSource.Schema,FilterComparisonType.Between, "DueDate", startDate, endDate));

Нравится

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

Добрый день, Антонина!
Не совсем понятны условия: "за текущий и следующий день" и "до следующего от текущего дня" звучит как одно и то же. Механизмы работы с датой см в документации:
https://msdn.microsoft.com/en-us/library/system.datetime%28v=vs.110%29…

"Андрей Каспаревич" написал:Не совсем понятны условия: "за текущий и следующий день" и "до следующего от текущего дня"

Например, сегодня 16 апреля....мне необходимо, чтобы в фильтр попадали все активности, дата начала у которых по 17 апреля.

С условием понятно. Теперь расскажите, куда этот фильтр должен попасть, и что у Вас не получилось.

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

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

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