Всем доброго времени суток. Версия 7.11

При создании бизнес-процесса в поле даты можно проставить "Текущее значение даты и времени" (см. скриншот).

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

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

Не хотелось бы использовать new Date() для некоторых задач - т.к. в этом случае значение времени берётся с компьютера пользователя, где оно может быть указано неверно.

Нравится

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

я так полагаю это DateTime.Now (или UtcNow. Тут я не уверен. Процентов на 80 - просто Now. Соответственно устанавливается часовой пояс сервера); В базу переносится всё в Utc. На клиенте берётся время конкретной машины.

Для того чтобы вытащить серверное время скорее всего придётся пилить маленький сервис(если это уже не сделано).



PS. тру-стори: когда только знакомился с платформой нашли с клиентом баг. Суть такая — на пк отставали часы и при сохранении записи createdOn было 15.00 (время сервера), потом запись тут же правилась и пересохранялась. ModifiedOn - 14.59(время клиента). Полезли разбираться во взаимосвязях: Время пк/Часовой пояс пк <-> Настройка часового пояса в террасофте <-> время сервера/часовой пояс сервера <-> время базы . Вся эпопея кончилась тем, что саппорт выдал фикс и исправил конфигурацию, но с того времени у нас поговорка:

"Если что-то не работает:

1) проблема в вас

2) проблема со временем

3) проблема в террасофте

4) см. п 1."



И да... лучше не ввязываться в эту помойку со временем)) Я и сейчас не уверен на 100% как там что берётся.

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

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

Если нужно получить в процессе серверное время, Вы можете воспользоваться Datetime.UtcNow.

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

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

Добрый день.

Может кто сталкивался с реализацией или знает как сделать:

есть функциональная руль (Роль 1) или организационная роль (Роль 2). В данные роли входят n-количество сотрудников. Есть БП в котором есть активность которую  необходимо распределить на одного из ответственных, например используя функциональную роль. Вопрос: как это реализовано в коробке, есть ли такое распределение?

Нравится

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

Добрый день!



Это реализовано в базовой сборке при помощи элемента "Изменить права доступа". При помощи него можно настроить у какого объекта меняются права. А также кому добавить/забрать права на чтение/редактирование/удаление.

Евгений Манько пишет:

Добрый день!

Это реализовано в базовой сборке при помощи элемента "Изменить права доступа". При помощи него можно настроить у какого объекта меняются права. А также кому добавить/забрать права на чтение/редактирование/удаление.

Я имею ввиду не это. А очередь на кого назначить свою задача если например 5 сотрудников свободно

Кулак Евгений Витальевич,

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

Евгений Манько,

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

Кулак Евгений Витальевич,

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

В подобной реализации есть несколько слабых мест. Для вычитки пользователей с целью присвоения/удаления признака процесс требуется зациклить до окончания присвоения/удаления признака у всей группы пользователей. Данная операция увеличит нагрузку на сервер, а также увеличит время обработки. Так же в случае старта следующего процесса до конца обработки первого может возникнуть конфликт процессов. Процесс – 1 в тот момент будет удалять временный признак, а процесс – 2 добавлять. Или часть пользователей по процессу – 2 не будут считаны так как процесс – 1 уже проставил временный признак. В связи с этим мы рекомендуем использовать Вам элемент «Задание сценарий» в рамках которого Вы сможете реализовать любую необходимую Вам логику.  

 

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

Добрый день

 

есть необходимость отобрать средства связи контрагента (справочник AccountCommunucation) с отбором по контрагенту.

У меня есть значение ГУИД этого контрагента, но метод GET не отрабатывает при попытке наложить фильтр на поле Account, т.к. оно имеет тип "справочник"

Я пробовал накладывать отбор как на Account так и на AccountId.

например я пробовал следующие конструкции:

AccountCommunicationCollection?$filter=substringof('ИдентификаторBPM', AccountId)

AccountCommunicationCollection?$filter=substringof('ИдентификаторBPM', Account)

AccountCommunicationCollection?$filter=AccountId eq guid 'ИдентификаторBPM'

AccountCommunicationCollection?$filter=Account eq guid 'ИдентификаторBPM'

Но каждый раз я получаю ошибку при вызове GET

 

 

Нравится

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

Добрый день!

Вы почти пришли к ответу =)

Попробуйте такой запрос:

AccountCommunicationCollection?$filter=Account/Id eq guid'идентификатор'

Большое спасибо, получилось

Показать все комментарии
регистрация раздела
Мастер раздела
Мастер разделов
мастер создания разделов
7.11
sales_enterprise

Добрый день!

Зарегистрировал раздел на портале, у страницы редактирования в мастере раздела отсутствует правая часть, где нужно элементы управления "располагать"

Подскажите, какое поле в INSERT INTO SysModuleEdit (или другом?) за это отвечает? 

Нравится

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

Борис, здравствуйте!

Можете, пожалуйста, предоставить наглядный скриншот, как выглядит страница в Мастере (желательно с открытой консолью). И уточните, пожалуйста, как создавался раздел, нормально ли открываются раздел/карточка?

Одеяненко Юлия,

Выглядит так:

Регистрировал 1. по инструкции регистрация+раздела+на+портале.doc, которую техподдержка выдает и тут на форуме видел и 2. использовал инфо из этого топика https://community.terrasoft.ru/questions/rucnaa-registracia-razdela.

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

 

 

Борис, регистрировала раздел по этим же инструкциям - страница в Мастере отобразилась (Header и TabsContainer). Проблема может быть в некорректном наследовании (я наследовала портальную страницу от BasePageV2). Также рекомендую проверить зависимость пакета, в котором портальные схемы, от пакета Wizards. Возможно, перезапуск сайта решит проблему.

Правильность регистрации схем также могу посоветовать проверить по инструкции в этом посте: https://community.terrasoft.ru/questions/poradok-sozdania-razdela-vrucnuu

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

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

Хотел уточнить есть ли возможность загрузки фото сотрудников в bpm'online sales enterprise при синхронизации с каталогами LDAP?

Нравится

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

Здравствуйте, Роман

На данный момент в механизме синхронизации с LDAP нет возможности синхронизации фото сотрудников с приложением bpmonline.

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

Denys Diachenko, Денис спасибо! 

Может есть другие методы решения этого вопроса или все-таки придётся добавлять фото вручную? 

Роман Никулин,

на данный момент в приложении нет возможности решить такую задачу базовыми средствами приложения и также мы не имеем примеров решения такой задачи. Как обходные решения, могу Вам предложить либо ручное обновление записей либо Вы можете самостоятельно доработать функционал синхронизации с LDAP используя нашу документацию по разработке по ссылке https://academy.terrasoft.ru/documents/technic-sdk/7-11/dokumentaciya-p…

Показать все комментарии
update
Oracle
7.11
bank_customer_journey

Здравствуйте! Пытался обновить верcию bpm'online bank customer jorney, с 7.11.0 до 7.11.1 (Oracle), после обновления попытался скомпилировать приложение, и в результате возник вот такой вот перечень ошибок, в результате чего могли возникнуть эти ошибки?Изображение удалено.

Нравится

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

Александр, здравствуйте!

Пришлите, пожалуйста, логи приложения за время обновления, по умолчанию хранятся по пути:C:\Windows\Temp\BPMonline\Site_Х.

Так же хочу уточнить, не было ли ошибок, при компиляции до обновления ? 

Maksym Naumovets,

До обновления ошибок не было, вот log 

https://yadi.sk/i/wpnUGfK23TKEiq

 

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

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

Попробуйте повторно выполнить обновление.

Maksym Naumovets,

"Utility finished working." разве не говорит о том, что утилита завершила свою работу?

Александр, говорит. Но не говорит что все было выполнено успешно.

Произошла ошибка и утилита завершила работу.

Посмотрел выполненные шаги, нет генерации исходных кодов, компиляции и остальных что я описал.

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

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

В CRM есть возможность в "Средствах связи" добавлять любое количество полей с одним названием. Например можно добавить сколько угодно Email. Может кто-нибудь знает как при создании Контакта добавить несколько Email?

Вот что я передаю:

            $arr = [

                'RootSchemaName' => "Contact",

                'OperationType' => "Insert",

                'ColumnValues' => [

                    'Items' => [

                        'Name' => [

                            'ExpressionType' => 'Parameter',

                            'Parameter' => [

                                'DataValueType' => 'Text',

                                'Value' => $Name

                            ]

                        ],

                        'UsrMainMail' => [

                            'ExpressionType' => 'Parameter',

                            'Parameter' => [

                                'DataValueType' => 'Text',

                                'Value' => $UsrMainMail

                            ]

                        ],

                        'Gender' => [

                            'ExpressionType' => 'Parameter',

                            'Parameter' => [

                                'DataValueType' => 'Guid',

                                'Value' => $Gender

                            ]

                        ],

                        'Skype' => [

                            'ExpressionType' => 'Parameter',

                            'Parameter' => [

                                'DataValueType' => 'Text',

                                'Value' => $Skype

                            ]

                        ],        

                        'MobilePhone' => [

                            'ExpressionType' => 'Parameter',

                            'Parameter' => [

                                'DataValueType' => 'Text',

                                'Value' => $MobilePhone

                            ]

                        ],        

                        'Phone' => [

                            'ExpressionType' => 'Parameter',

                            'Parameter' => [

                                'DataValueType' => 'Text',

                                'Value' => $Phone

                            ]

                        ],

                        'Email' => [

                            'ExpressionType' => 'Parameter',

                            'Parameter' => [

                                'DataValueType' => 'Text',

                                'Value' => $Email

                            ]                        

                        ],                    

                    ]

                ]

            ];        

Нравится

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

mlmvn

Деталь "Средства связи" на странице контакта = Объект "Средство связи контакта" = Таблица "ContactCommunication".

После вставки контакта, Вы можете добавить любое количество связанных средств связи контакта в сущность ContactCommunication, указывая связь с контактом.

Толмачев Дмитрий Юрьевич,

Спасибо!!

 

Показать все комментарии
Деталь
регистрация детали
регистрация
7.11
sales_enterprise

Приветы, подскажите плиз, делаю деталь по инструкции - https://academy.terrasoft.ru/documents/technic-sdk/7-11/sozdanie-detali…

 

И потом в настройках она видна, но пишет что не зарегистрирована, что и как делать?

Как в https://academy.terrasoft.ru/documents/technic-sdk/7-11/sozdanie-detali… (пункт пять) или как-то иначе?

Нравится

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

"Как в https://academy.terrasoft.ru/documents/technic-sdk/7-11/sozdanie-detali… (пункт пять) или как-то иначе?" - именно.

Ну и глобально. "Нужна ли регистрация новой детали" - если вы в состоянии добавить деталь из кода и потом никто её не будет модифицировать(т.е. не потребуется функционал дизайнера деталей), то нет. регистрацию можно обойти стороной.

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

Спасибо.

Сегодня месяц как я узнал про существование Террасофт

Платформа обладает огромным количеством неисправимых преимуществ.

 

Подскажи:

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

https://prnt.sc/iq2cml - ошибка

https://prnt.sc/iq2cym - вроде как ее быть не должно

 

 

 

QArt пишет:

ошибка

Да вроде всё правильно... запрос случайно не в master уходит? или 100% к определённой базе?

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

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

https://prnt.sc/iqj91v опечатки или что-то не так сделал по образу из академии. 

Какой общий подход к исправлению подобных ошибок?

Можешь подсказать как "правильнее" вести разработку? (где надо писать не на js, а нас c# и как сие потом из js вызывать) Нужно ли EntityShemaQuery пытаться писать на c# и если да то как их потом пробрасывать в js? Проект wcf? Как и куда его добавлять, есть рыба? :)

Помоги крестьянину добраться до города.

QArt,

Здравствуйте, что касается вопросов разработки то Вы сможете найти достаточно богатое описание вместе с примерами на сайте Академии Террасофт по ссылке https://academy.terrasoft.ru/documents/technic-sdk/7-11/dokumentaciya-p…

 

Что касается ошибки, то вероятнее всего это возникает из-за не полностью сгенерированного статического контента.

Для решения попробуйте зайти в конфигурацию приложения и выполнить следующие действия:

1. Обновление структуры БД

2. Генерация исходного кода

3. Полная компиляция приложения

 

После выполнения данных действий выполнить повторное тестирование Вашего кода.

Denys Diachenko,

Спасибо!

Показать все комментарии
анонимная аутентификация
web-сервисы
7.11
sales

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

Имел ли кто дело с реализацией анонимной аутентификации внешних запросов, например, к написанному Вами web-сервису по аналогии с сервисом оценок обращений?

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

Нравится

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

Добрый день, Михаил.

Этот функционал разработан для продукта Service, соответственно требует наличия этого продукта в Вашей системе. Инструкция по настройке веб-сервисов, доступных без авторизации:

 

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

  • в WebApp\ServiceModel зарегистрировать веб-сервис, в котором будет указан путь к конфигурационному веб-сервису. Например, <Название сервиса>.svc, с содержимым:
<%@ ServiceHost Language="C#" Debug="true" Service="Terrasoft.Configuration.<Название сервиса>" %>
  • в WebApp\Web.config добавить:
<location path="ServiceModel/<Название сервиса>.svc">
  <system.web>
    <authorization>
      <allow users="*" />
    </authorization>
    </system.web>
</location>
  • в WebApp\Web.config секции appSettings изменить значение ключа AllowedLocations. В значение добавить:
ServiceModel/<Название сервиса>.svc
  • в конфигурации реализовать веб-сервис. Например:
namespace Terrasoft.Configuration 
{
         using System;
         using System.Runtime.Serialization;
         using System.ServiceModel;
         using System.ServiceModel.Activation;
         using System.ServiceModel.Web;
         using System.Web;
         using Terrasoft.Core;
         using Terrasoft.Web.Common;

 
         [ServiceContract]
         [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]
         public class ConfigurationService : BaseService
         {

 
                 private SystemUserConnection _systemUserConnection;
                 private SystemUserConnection SystemUserConnection {
                          get {
                                   return _systemUserConnection ?? (_systemUserConnection = (SystemUserConnection)AppConnection.SystemUserConnection);
                          }
                 }

 
                 [OperationContract]
                 [WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)]
                 public void Post() {
                 }

 
                 [OperationContract]
                 [WebGet(RequestFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)]
                 public void Get() {
                 }
         }
}
  • в WebApp\ServiceModel\http|https\services.config добавить:
<service name="Terrasoft.Configuration.<Название сервиса>">
  <endpoint name="<Название сервиса>EndPoint"
    address="" 
    binding="webHttpBinding"
    behaviorConfiguration="RestServiceBehavior"
    bindingNamespace="http://Terrasoft.WebApp.ServiceModel"
    contract="Terrasoft.Configuration.<Название сервиса>" />
</service>

Сервис будет доступен по адресу WebApp/<Номер конфигурации>/ServiceModel/<Название веб-сервиса>.svc/<Название веб-метода>

Т.к. пользователь не авторизирован, то UserConnection не будет проинициализирован (Session["UserConnection"] == null).

 

Добрый день! 

Настроил анонимный веб-сервис по инструкции. С авторизованным пользователем отрабатывает, а без авторизации сервер возвращает 302. Кто нибудь сталкивался с такой проблемой?

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

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

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

 

Ну и наоборот, в БП элементе вызова веб-сервиса есть лимит на длину названия в поле Code в методе вызова внешнего веб-сервиса, со слишком длинным сохранить нельзя.

 

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

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

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

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

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

Нравится

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

Алексей, здравствуйте!

Возможно, проблема в том, что после внесения изменений в приложении не обновлялось подключение к БД. Также убедитесь, что значения в полях таки сохранились (например, закрыть и открыть страницу справочника).

Если у Вас значения полей в приложении и в БД все же отличаются, напишите о проблеме на support@terrasoft.ru для более детального анализа (необходим будет доступ к БД и к приложению).

Одеяненко Юлия, я сервер перезагрузил - оно так и осталось!

Алексей, в таком случае необходим более детальный анализ кейса. Напишите о проблеме на support@terrasoft.ru, необходим будет доступ к БД и к приложению

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