Вопрос

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

Преамбула.

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

Собственно проблема.

При добавлении записи в деталь (нажатии на "+") открывается карточка редактирования этого же раздела и в поле Основное доп соглашение проставляется ссылка на родителя, НО сообщение о заполнении поля не отправляется на деталь и соответственно кнопка добавления записи остаётся видима.

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

У меня такой же вопрос

5 комментариев
Лучший ответ

На onEntityInitialized вызовите функцию которая обрабатывает изменение поля Основное доп соглашение и отправляет сообщение в деталь.

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

На onEntityInitialized вызовите функцию которая обрабатывает изменение поля Основное доп соглашение и отправляет сообщение в деталь.

engineer7,

Добрый день. Сама запись на форме отображается и в БД существует.

Есть карточка детали(то есть та же карточка что и родитель) и есть схема детали, вы передаете на деталь сообщение? на детале ведь та кнопка добавить

Радчук Виталий Владимирович,

Да, именно так.

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

Добрый день.

Подскажите пожалуйста как выбрать из объекта бизнес-процесса "Изменение данных" уникальные поля записей, которые были изменены? 

Есть объект Акции и Партнеры. У акции есть справочное поле с типом акции. Есть бизнес-процесс, который по определённому алгоритму изменяет акции. Изменение акций выполняется  через элемент "Изменить данные".

Как мнем выбрать уникальные типы акции, которые были изменены?

У меня такой же вопрос

4 комментария
Лучший ответ

Можно делать не массовое изменение, а читать еще неизмененные, их изменять, индивидуально делать доп.действия, читать следующие неизмененные и т.п.

Второй вариант - сделать БП, который реагирует на изменение акции

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

Можно делать не массовое изменение, а читать еще неизмененные, их изменять, индивидуально делать доп.действия, читать следующие неизмененные и т.п.

Второй вариант - сделать БП, который реагирует на изменение акции

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

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

Не совсем понял условие, но если интересуют те значения справочника, которые недавно были использованы в записях раздела, то можно в справочник добавить поле типа «дата и время» и писать туда текущее время одновременно с изменением записи в разделе.

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

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

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

Здравствуйте! Была ли у кого-нибудь такая ситуация, когда на детали сортируешь по определённому полю, и происходит не просто сортировка, а изменяется количество записей, т.е. например до того как отсортировать записи на реестре детали, их было 8, а после - 12?

У меня такой же вопрос

6 комментариев
Лучший ответ

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

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

О, тоже не раз замечал клиент такое. В реестре видит одно количество записей, а в Summaries - другое. И только refresh помогает

Если в Summaries  больше то можно думать в сторону фильтрации и о каком реестре речь о Lookup справочнике или реестре раздела? 

В первом случае можно думать о фильтрации во втром права и тд. А свалов не было в консоли броузера?

Скорее всего, случайный сбой и после обновления страницы цифры должны совпасть.

Если же воспроизводится постоянно, нужно в профайлере смотреть SQL-запросы: может, какое-то хитрое условие фильтрации для этой группы в разделе или условия привязки детали к такому приводят.

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

 

 

Григорий Чех,

В консоли ничего не валится, и я дождался загрузки данных после нажатия "показать ещё". Речь идёт о реестре детали "Пакет документов".
На первом скрине при фильтрации по колонке "Документ", есть 2 записи "Договор аренды" у заявителя, всё хорошо.

https://yadi.sk/i/vH19rH6KcGSXOQ
но потом при фильтрации по колонке "Роль", этих записей у заявителя нет, вот может кто-то объяснит что это?
https://yadi.sk/i/AZFQEA194gzTKQ

Смотрите SQL-запросы при открытии детали.

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

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


 

У меня такой же вопрос

8 комментариев
Лучший ответ

Дульский Александр,

В схеме модального окна, замещаете и пробуете с условиями либо делаете собственное модальное окно.
А вообще, самый быстрый вариант, если варианты выше не отработали по какой-то причине и нету принципиальной разницы.
Вы можете изменить сами названия в справочнике чтобы сортировалось правильно и будет так: 01.Январь, 02.Февраль ..12.Декабрь и в вашем окне сразу все правильно отобразится

Попробуйте что-то вроде такого: 

initQuerySorting: function(esq) {
  if (!esq.columns.contains("CreatedOn")) {
    var createdOnColumn = esq.addColumn("CreatedOn");
    createdOnColumn.orderPosition = 1;
    createdOnColumn.orderDirection = this.Terrasoft.OrderDirection.ASC; //DESC
  }
 }

 

Как вариант, можете попробовать через Конфигурацию установить колонку сортировки http://prntscr.com/kx2u2z для вашего объекта Справочник.

На сколько я помню - должно сработать.

Литвинко Павел,

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

Сидоров Александр Валерьевич,

Я пробовал ранее, но к сожалению не работает

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

attributes: {
	"Status": {
		"lookupListConfig": {
			columns: ["Name","UsrMonthNumber"]
			orders: [{columnPath: "UsrMonthNumber"}]
			}
		}
},

 

Григорий Чех,

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

Тогда уточните как вы открываете модальное окно?

Дульский Александр,

В схеме модального окна, замещаете и пробуете с условиями либо делаете собственное модальное окно.
А вообще, самый быстрый вариант, если варианты выше не отработали по какой-то причине и нету принципиальной разницы.
Вы можете изменить сами названия в справочнике чтобы сортировалось правильно и будет так: 01.Январь, 02.Февраль ..12.Декабрь и в вашем окне сразу все правильно отобразится

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

Прошу откликнуться, у кого был опыт по направлению интеграции bpmonline и Яндекс.Метрика/ Google Analytics

Конкретные задачи:

1.       Изображение удалено.CRM       ->       Google Analytics: (важно это сделать до запуска) передавать по Measurement Protocol все данные о статусе заявки, + передавать статусы отказа по заявке. Получим отчет по всей воронке, от кликов с различных источников до выдачи карты. Отказы нужны, что бы понимать качество источников, с которых приходит трафик.

2.       Изображение удалено.Google Analytics        ->        CRM: передавать данные о кликах и источниках трафика из GA в CRM. Это позволит все данные о воронке хранить на нашей стороне, плюс визуализировать отчеты по воронке внутренними инструментами от Террасофт (возможно для визиаулизации и не понадобиться Power BI)

3.       Изображение удалено.CRM        ->       Яндекс.Метрика: передавать все данные о статусе заявки, + передавать статусы отказа по заявке. Получим отчет по всей воронке, от кликов с различных источников до выдачи карты. Отказы нужны, что бы понимать качество источников, с которых приходит трафик. Необходимо для оптимизации контекстной рекламы на Яндексе.

5.       Отдельно нам надо трекать в CRM действия наших клиентов, заходят они в интернет банк или мобильный банк, какие операции и где выполняют.

У меня такой же вопрос

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

Делал загрузку данных с Яндекс.Метрика и самое сложное - это правильно составить запрос + обработать данные. 

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

А в чем проблема со стороны сервера на C# делать запросы к этим сервисам. Делал в свое время к Гугл-аналитике по АПИ, прекрасно работало. Понятно, что сама Гугл-аналитика в ВРМ передавать ничего не будет.

А получалось связывать клики с конкретным клиентом, который заведен в CRM? Как определяли?

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

Здравствуйте! Такая ситуация когда выполняется вызов метода получения UserConnection
через БП, то возникает ошибка, если на прямую из клиента через сервис, но всё нормально, ошибок нет. В чем здесь дело?


 

У меня такой же вопрос

2 комментария
Лучший ответ

Добрый день, Александр.

Получение экземпляра UserConnection из объекта HttpContext (контекст запроса) возможно только в рамках веб-запроса к сервису. При вызове метода сервиса вручную (например, если создать экземпляр класса сервиса и вызвать нужный метод) нет контекста запроса, поэтому, при получении вы получаете ошибку.

При написании веб сервисов хорошая практика - не писать код обработки непосредственно в методах сервиса, а писать её в рамках некоторого вспомогательного класса. В класс следует добавить конструктор, который принимает объект UserConnection.

При вызове из метода сервиса, вы можете создать экземпляр данного вспомогательного класса и передать в конструктор экземпляр UserConnection, получив его из объекта HttpContext (как вы делаете в примере), а затем вызвать нужный метод вспомогательного класса.

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

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

var userConnection = Get<UserConnection>("UserConnection");
​var userConnection = context.UserConnection;

В рамках процессов объектов можно воспользоваться одноименным свойством - UserConnection.

Добрый день, Александр.

Получение экземпляра UserConnection из объекта HttpContext (контекст запроса) возможно только в рамках веб-запроса к сервису. При вызове метода сервиса вручную (например, если создать экземпляр класса сервиса и вызвать нужный метод) нет контекста запроса, поэтому, при получении вы получаете ошибку.

При написании веб сервисов хорошая практика - не писать код обработки непосредственно в методах сервиса, а писать её в рамках некоторого вспомогательного класса. В класс следует добавить конструктор, который принимает объект UserConnection.

При вызове из метода сервиса, вы можете создать экземпляр данного вспомогательного класса и передать в конструктор экземпляр UserConnection, получив его из объекта HttpContext (как вы делаете в примере), а затем вызвать нужный метод вспомогательного класса.

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

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

var userConnection = Get<UserConnection>("UserConnection");
​var userConnection = context.UserConnection;

В рамках процессов объектов можно воспользоваться одноименным свойством - UserConnection.

Семенов Александр Евгеньевич,

Спасибо большое за ответ, разобрался всё работает)

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

Здравствуйте! Подскажите пожалуйста, есть ли возможность сделать в bpm используя класс Insert, запрос такого вида:

Insert into "имя сторонней базы"."имя таблицы этой базы" (...) values (...);

т.е. сделать инсерт в другую стороннюю базу, или прочитать от туда таблицу. Если да, то как сделать.

У меня такой же вопрос

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

Скорее всего нет. Особенно, если система в облаке)

Хотя я бы потестил на локальной версии. Пользователю, под которым BPM лезет в бд, выдал права на другую базу, и запрос бы оформил через CustomQuery

Можно создать view с запросом на выборку, триггерами вместо вставки, изменения и удаления в стороннюю базу. Затем создать привязанную к ней схему с такими же колонками и проставленным признаком «представление» и работать с ней так же, как с обычной.

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

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

Здравствуйте! Может кто-нибудь подскажет как решать проблему, с отображением данных уведомлений.

Сами уведомления приходят, всё хорошо, но они не отображаются "красными кружками", в боковой панели, на "Центр уведомлений". Версия 7.11

У меня такой же вопрос

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

Механизм уведомлений будет работать корректно при правильно настроенных сокетах. С порядком настройки сокетов можно ознакомиться здесь. Также следует обратить внимание на тот факт, что обязательно должен быть активирован компонент "WebSocket Protocol". Ниже прикреплен скриншот для наглядности:

Мотков Илья,

Cпасибо за ответ, сделал как написано, в консоли отобразилась надпись 

WebSocket-connection opened for url:ws://demo.bpmonline.com/0/Nui/ViewModule.aspx.ashx
а так же типа такого периодически сыпется

Уведомления всё равно не появляются, т.е. сами уведомления приходят, но оповещений на уведомления так и не появляются.
Эти уведомления ведь могут работать и на пользовательские разделы?

Насколько понимаю Ваш сайт размещен локально. В данном случае Вам следует обратить внимание на следующие факторы:
1. Должна использоваться только регламентированная Terrasoft операционная система (только Windows в качестве сервера для разворачивания и для клиентской ПК. Также для клентского ПК еще может использоваться MAC OS но только в браузере Safari);
2. Должен использоваться только регламентированный Terrasoft браузер (Chrome, Mozilla последней актуальной версии, Safari под MAC OS);
3. Должны быть открыты и корректно настроены веб-сокеты, ссылка выше.

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

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

devexpress подключение библиотеки для использования в отчете.

Подскажите как подключить?

Пробовал в Дизайнере отчетов bpm в свойстве подключаемые модули указать название свое dll и добавить ее в папку BIN в системе и потом вызвать в коде скрипта. Но библиотеку дизайнер отчетов не видит.

У меня такой же вопрос

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

Тоже сталкивался с подобной проблемой, и не удалось решить, скорее всего, что никак. Пришлось создавать свой велосипед на костылях в скрипте Dev Express, а потом и вовсе пришлось выбросить его на помойку и запилить свой недошаблонизатор, т.к. клиент захотел редактируемый документ, а Dev Express оказался не способен выдать что-то пригодное для редактирования.

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

Выполнил загрузку пакета по инструкции: 

https://academy.terrasoft.ru/documents/technic-sdk/7-12/zagruzka-paketo…

Командой: 

C:\bpmonline7.9.2\Terrasoft.WebApp\DesktopBin\WorkspaceConsole\Terrasoft.Tools.WorkspaceConsole.exe -packageName=userPackage -workspaceName=Default -operation=InstallFromRepository -sourcePath=C:\SavedPackages -destinationPath=C:\TempPackages -skipConstraints=false -skipValidateActions=true -regenerateSchemaSources=true -updateDBStructure=true -updateSystemDBStructure=true -installPackageSqlScript=true -installPackageData=false -continueIfError=true -logPath=C:\Log

Где параметр "-packageName=userPackage" заменил на собственное название пакета.

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

У меня такой же вопрос

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

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

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