Можно ли в 7.9 отобразить интерфейс подобно 3.Х? Т.е. слева группы , правая верхняя часть - грид записей (допустим Контрагентов или Контактов) , посередине вывод всех деталей, правая нижняя часть - гриды деталей.

Нравится

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

Здравствуйте, Дмитрий!

В 7.Х при работе с записями отображаются:
1) Разделы. В разделах отображается грид с записями, а также по действию "Показать группы" отображены группы.
2) Страницы редактирования записей раздела. На них отображены детали.

Возможность вывести детали в реестр раздела не предусмотрена.

A в демо версии можно настраивать конфигурацию посредством Java Script ?

В триале — можно.

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

Здравствуйте.
Возникла проблема при добавлении на страницу мобильного приложения, например Контрагента, действия с созданием новой активности. В недрах кода MobileAccountModuleConfig пакета Mobile нашёл нечто похожее с использованием функции Terrasoft.sdk.Actions.add, но её описания нигде не нашёл. Быть может кто обладает им... В частности, есть атрибут actionClassName, что он означает, и как с ним работать. Был бы благодарен за пример...
Дополнительно, за что отвечает переменная UseMobileUIV2?

Нравится

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

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

Terrasoft.sdk.Actions.add – это метод, который позволяет добавить действие в раздел (рис. 1-2). Примеры реализаций прикрепил к комментарию.


naznachitvstrechu.doc
polzovatelskoedeystvie.doc

UseMobileUIV2 – это системная настройка, которая необходима если выходите использовать новую платформу V2.

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

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

Добрый день!

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

Нравится

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

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

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

Подробно с системными операциями можно ознакомиться по ссылке.

"Демьяник Алексей" написал:

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

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

Подробно с системными операциями можно ознакомиться по ссылке.

Спасибо большое!

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

1) Хочу разработать модуль для bpmonline. Модуль не сложный, нужно ли мне разворачивать MSSQL локально, Visual Studio и т.д. или я смогу обойтись разделом "конфигурация"?

2) Не понимаю как писать "серверный код", создаю я в конфигурации объект "Исходный код", а дальше что? Где взять примеры? Например мне нужно сделать insert запрос к БД, нашел примеры тут на форуме на c# как работать с БД, но не нашел пример какой нужно создать класс, как его вызывать, где?

Нравится

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

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

1) Вы можете создавать схемы непосредственно в конфигурации приложения. Однако отладку серверной логики возможно произвести только подключившись к потоку IIS, используя Visual Studio.

2) Работа с CRUD операциями описана по ссылке:
https://academy.terrasoft.ru/documents/technic-sdk/7-9/crud-operacii-na…

Пример работы с данными вы можете найти в схеме AdministrationService.

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

Доброго времени суток.

Интересует следующий вопрос: к примеру, на страницу нужно подключить какой-либо jQuery плагин. Если точнее, речь идёт вот об этом сервисе https://dadata.ru/suggestions/usage/#address но это сейчас не важно.

Суть вот в чём: допустим, необходимо привязать действие к какому-либо элементу (например, полю) по id в DOM. Но страница генерится динамически, соответственно, подключать привязку нужно после того, как она загружена. Есть ли какой-либо метод, отслеживающий полное завершение инициализации, то есть момент, когда уже все элементы на странице загружены и доступны (поля, кнопки и т.д.) ? init, onEntityInitialized в этом случае, насколько я замечал, не подходят.

Версия 7.9, если что.

Нравится

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

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

Отловить момент полной загрузки карточки невозможно. Данное поведение связано с тем, что, начиная с версии 7.8, часть элементов карточки загружается асинхронно (табы, детали) отдельно от самой карточки. В целом, наиболее подходящим методом будет замещение метода onEntityInitialized и добавления логики после вызова this.callParent(arguments); В данный момент основные элементы страницы (edit-ты итд) уже загружены и доступны через document.getElementById

Илья, спасибо! Уже сам более-менее отследил, что onEntityInitialized всё же работает :)

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

Ну то есть, если я например, создам модуль вида:

define("UsrPlugin", ["jQuery"], function() {
	//Текст плагина из js файла, вроде этого https://cdn.jsdelivr.net/jquery.suggestions/16.10/js/jquery.suggestions.min.js
});

и добавлю jQuery в dependecies модуля, смогу ли я подключить потом этот модуль, и добавлять скрипт к нужному полю по id?

Денис, если правильно понял, то клиентские библиотеки подключаются как обычные JS модули, созданием в конфигурации схемы модуля на языке javascript. С описанием там логики через define, и использованием в других схемах через require. Пример в конфигурации, схема jQuery.

Также поищите в топиках:
- http://www.community.terrasoft.ru/forum/topic/20454
- http://www.community.terrasoft.ru/forum/topic/22101

Илья, спасибо.

Пока сделали немного по другому.

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

Добрый день!
Мы выбираем CRM-систему, на базе которой будем реализовывать свой функционал.
Сейчас есть 2 вопроса:
1. Можете поделиться произвольным выгруженным пакетом с помощью WorkspaceConsole? Нас интересует структура архива, а выгрузить с демо-версии к сожалению возможности нет.
2. Подскажите, при создании нового объекта в системе создается ли реальный C# класс уровня ORM (слоя доступа к данным)?
Разделы документации по работе с данными видели, но интересует именно наличие ORM-объекта.
Спасибо!

Нравится

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

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

Отвечу на Ваши вопросы по порядку:

  1. 1. Не понятно зачем Вам структура, ведь ее изменять нельзя. Результат получение ресурсов схем при помощи WorkspaceConsole командой:

    Terrasoft.Tools.WorkspaceConsole.exe -workspaceName=Default -operation=SaveDBContent -contentTypes=Resources -destinationPath=D:\Resources -fileName=Resources.xml -cultureName=ru-RU -logPath=C:\TEMP

    Результат находится в файле Resources.zip

  2. 2. Ответ простой - да. Посмотреть класс для объекта можете в конфигурации. Для этого на объекте нажмите правую кнопку мыши и выполните команду Исходный код -> Открыть

resources.zip

Спасибо за помощь!

По работе с пакетами еще возникли вопросы:
1. В документации рекомендуется следующая команда для переноса пакетов из одного приложения в другое:

[Путь к WorkspaceConsole]\Terrasoft.Tools.WorkspaceConsole.exe -operation=SaveDBContent -contentTypes=Repository -workspaceName=[Название рабочего пространства] -destinationPath=[Путь к локальному каталогу]

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

2. Не совсем понятно, как создается новая версия пакета, уже ранее зафиксированного в хранилище.
Обычная доработка схем внутри пакета и заливка этих изменений, насколько понимаю, НЕ создает автоматически новый branch? Как создается новый branch?

Спасибо!

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

Не понятно зачем Вам знать структуру выгруженного пакета, если его нельзя изменять вручную.
Пример выгрузки пакета Base

Как создается новый branch? - создается при фиксации изменений в SVN. Стандартный механизм работы с SVN.

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

Мне необходимо сохранить определенную строку в системе, чтобы она была доступна всем пользователям. Как это лучше сделать?

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

Нравится

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

Добрый вечер.

Вам стоит смотреть в сторону проверки при помощи esq наличия в бд в таблице SysSettings нужного Вам значения. Если значения нет - создавать его insert-ом. Если же оно есть - изменять значение при помощи примерно следующего кода:

var config = {
	sysSettingsValues: {},
	isPersonal: false
};
 
config.sysSettingsValues['test'] = 'DONE';
 
 
Terrasoft.SysSettings.postSysSettingsValues(config, function(result){
	/some code
}, this);

"Мотков Илья" написал:

Добрый вечер.

Вам стоит смотреть в сторону проверки при помощи esq наличия в бд в таблице SysSettings нужного Вам значения. Если значения нет - создавать его insert-ом. Если же оно есть - изменять значение при помощи примерно следующего кода:

var config = {

        sysSettingsValues: {},

        isPersonal: false

};



config.sysSettingsValues['test'] = 'DONE';





Terrasoft.SysSettings.postSysSettingsValues(config, function(result){

        /some code

}, this);


Спасибо за ваш ответ. Как изменять/считывать понятно из системных настроек понятно. Больше нет никакой возможности хранить глобальные параметры кроме системных настроек?

У меня следующая задача, например в bpmonline есть интеграция с mandrill. Так вот для подключения этого сервиса мы вводим apiKey, который сохранится в системных настройках. Вот я аналогичную интеграцию делаю с другим сервисом и встал такой же вопрос, как лучше/проще всего хранить apiKey?

"ta4" написал:как лучше/проще всего хранить apiKey

В любом случае в БД. Следовательно либо системная настройка, либо, создайте свой объект и храните там, плюс своего объекта = можете настроить ему права доступа.

"Максим Шевченко" написал:
ta4 пишет:

как лучше/проще всего хранить apiKey

В любом случае в БД. Следовательно либо системная настройка, либо, создайте свой объект и храните там, плюс своего объекта = можете настроить ему права доступа.


Спасибо за ответ Максим.
А есть какой-нибудь пример, как добавить системную настройку программно? (через конфигурацию)

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

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

Коллеги, добрый вечер!

В панели разделов при сворачивании панели появляется некрасивая полоса прокрутки. Так как кнопки главного меню, запуска процесса и добавления новой записи перемещаются в вертикальное положение, то не все разделы влезают на экран. Хотелось в таком случае как то изменить полосу, либо визуально ее скрыть, а то выглядит не лаконично и наезжает на иконки разделов. Изменить масштаб экрана через Ctrl не вариант, так как надо это решить массово для любого пк.

Скрин полосы во вложении. Может кто сталкивался с таким кейсом.

Нравится

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

Здравствуйте, Дмитрий!

Дизайн, указанной функциональности, присутствовал в более ранних версиях продуктов.
Он был изменен в последующих релизах. Вариантом решения задачи, в Вашем случае, является обновление приложения на более новую версию.
Запросить информацию/инструкции о обновлении приложения, Вы можете обратившись в службу поддержки support@terrasoft.ru.

Илья, добрый день!

У нас версия 7.9 сейчас.

Дмитрий, отображение скролл-бара зависит от браузера и его версии. На последних версиях браузеров GoogleChrome, Mozilla, Edge, указанный скрол-бар, в приложении версии 7.9 выглядит как показано на скриншотах.

Подскажите, пожалуйста, название Вашей OS, название браузера и его версию.

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

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

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

Нравится

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

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

Задачу можно решить с помощью бизнес-процесса. Дизайн процесса будет выглядеть следующим образом:
1. Стартовый сигнал по добавлению записи в объект Лид.
2. Читать данные в лиде, где Id = Пункт 1. Id
3. Читать данные в контакте, где Id = Пункт 2. Ответственный. Подразумевается, что ответственный в лиде и есть менеджер, которому необходимо отправить уведомление.
4. Отправить письмо, в поле Кому указать Пункт 3. Email.
5. Добавить активность, в активности указать Лид = Пункт 2. Id
6. Элемент “Исключающее ИЛИ по событиям”. От этого элемента выходит два потока:
- первый поток ведет к элементу “Таймер”. В таймере указать 60 минут. После таймера добавить элемент “Изменить данные” в активности, где Id = Пункт 5. Id созданной записи, установить нужное состояние активности (в данном случае Просрочена)
- второй поток ведет к элементу “Обработка сигнала”. Элемент будет ожидать изменение состояния активности, где Id = Пункт 5. Id созданной записи, с фильтром Состояние = Выполнена.

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

Описанная задача может быть решена созданием бизнес-процесса. Логика процесса:
1) Стартовый сигнал по событию добавления записи в объект "Лид"
2) Элемент "Добавить данные" для создания записи в объекте "Активность". Необходимо заполнить поля:
Тип
Категория
Ответственный
Заголовок
Дата начала
Дата завершения
Лид
3) Элемент "Добавить данные" для создания уведомления. Необходимо заполнить следующие поля:
NotificationType: [#Справочник.Тип уведомлений.Reminding#]
Время: [#Системная переменная.Текущее значение даты и времени#]
Кому: [#Ответственный#]
Объект: [#Справочник.Объект раздела (представление).Активность#]
Уникальный идентификатор заголовка: [#Создать активность.Id созданной записи#]
4) Конец процесса.

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

Большое спасибо за помощь. :smile:
Еще такой вопрос: если создавать активность и по активности выводить уведомление в панель - все отлично работает. Но если я вывожу уведомление по созданию нового контакта без активности, то уведомление как бы приходит, но в таком виде: 30 и звоночек не появляется.
ContactNotficationProvider в схемах присутствует. В чем может быть проблема?

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

А провайдер зарегистрирован? Подобная тема обсуждалась здесь.

Добрый вечер, спасибо за отклик.
ContactNotificationProvider шел изначально в сборке
, его тоже необходимо дополнительно регистрировать?
Не подскажите какими средствами осуществлять запуск sql скриптов в bpmonline 7.9, чтобы осуществить регистрацию?

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

Для выполнения sql запросов в системе Вы можете воспользоваться партнерским решением https://marketplace.terrasoft.ru/app/49

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

Добрый день!
Пользуемся Вашим продуктом (Sales) второй год, разрабатываем собственные схемы бизнес-процессов под нужды предприятия. Назрела проблема с отработкой бизнес-процессов пользователями, а именно в их желании вернуться на предыдущий этап (активность) в связи с тем, что завершили ее "случайно", либо ситуация требует корректировки бизнес-процесса "задним числом".
Можете поделиться какими-нибудь наработанными решениями по данному вопросу?
Нами было проработано два варианта решения задачи.
1. С помощью стадий, как в процессе «Управление лидом».
Выявленные минусы:
- отсутствие наглядности схемы бизнес-процесса, если процесс нелинейный
- при большом количестве стадий процесс становится трудоемким в разработке (стандартный процесс содержит 15-17 стадий-активностей)
2. Реализация возвратов на предыдущий этап с помощью соответствующего результата в Активности.
Выявленные минусы:
- утяжеление схемы бизнес-процесса из-за дополнительных связей
- необходимость дополнительных условий в случае, если процесс имеет несколько веток, в итоге соединяющихся в один результирующий элемент
- отсутствие возможности вернуться на любую стадию процесса
В идеале хотелось бы по сигналу запускать бизнес-процесс, который бы менял активный элемент в конкретном экземпляре уже запущенного бизнес-процесса. Однако возможно ли реализовать такой подход, чтобы при этом приложение работало стабильно?
P.S. прошу прощения, если подобный вопрос уже был. Если так, прошу указать на него ответ. Заранее спасибо.

Нравится

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

Катерина, здравствуйте!

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

Рекомендую углубится в первый предложенный вариант – “ 1. С помощью стадий, как в процессе «Управление лидом»”.
“стандартный процесс содержит 15-17 стадий-активностей” – разделить на несколько логических блоков. Каждый блок привязать к определенной стадии. Каждый блок в результате будет состоять условно из 3-4 активностей.
Далее реализовать один из подходов:
Вариант 1. С помощью модели: Один родительский процесс и множество подпроцессов. (пример – базовый процесс управления лидом).
Вариант 2. С помощью модели: Стартовый сигнал по изменению стадии – в конце БП изменять стадию на следующую.
Вариант 3. С помощью DCM/Кейс менеджмента (вариант доступен начиная с версии 7.9)

Такая модель, которая привязана к стадиям, позволяет:
1. Легко переключаться между стадиями. В результате не придётся проходить все этапы от создания записи до перевода в конечное состояние. Можно повторно продолжить с интересующего места, достаточно выбрать предыдущую стадию в дашборде или изменить вручную.
2. Легче отслеживать на каком этапе произошел сбой при выполнении.

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