Всем доброго времени суток. Версия 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'идентификатор'

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

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

Добрый день!

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

Подскажите, какое поле в 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…

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

Здравствуйте! Пытался обновить вер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, указывая связь с контактом.

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

Спасибо!!

 

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

Приветы, подскажите плиз, делаю деталь по инструкции - 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-сервису по аналогии с сервисом оценок обращений?

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

Нравится

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, необходим будет доступ к БД и к приложению

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