Здравствуйте!
Подскажите пожалуйста как автоматизировать распределение Лидов между менеджерами. Допустим из одного Лендинга попадают клиенты, которыми занимаются три менеджера. Как мне равномерно распределять этих клиентов между менеджерами (в бизнес процессе)? Спасибо!

Нравится

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

Здравствуйте, Николай!

Для соответствующего распределения между менеджерами Вы можете реализовать алгоритм, используя "Задание-сценарий".

Реализацию алгоритма можно придумать самостоятельно или найти примеры в сети.

Я бы попробовал сделать следующим образом - перед распределением проверять количество лидов на каждом из трех менеджеров и назначать на того, у кого меньше:) При равном количестве алгоритм будет назначать первого попавшегося.

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

Добрый день.

Есть Портал самообслуживания, доступный по адресу http://[server]/SSPLogin.aspx. В нем есть ссылка "Зарегистрироваться" для регистрации нового пользователя, с адресом http://[server]//0/Nui/UserManagement.aspx?action=register. По идее, на этой странице я должен увидеть кучу разных полей, необходимых для регистрации нового пользователя. Вместо этого - получаю пустую страницу. При просмотре "исходника" в браузере:




<br /> <br />

   







       

   

   
   

   


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

Нравится

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

Добрый день, Евгений!
Да, данный функционал присутствует и он неоднократно был протестирован.
Для корректной настройки его, необходимо выполнить все шаги в прикрепленной инструкции(во вложении).
Настроить страницу - недостаточно, необходимо еще редактировать config.

Сделал вот такие шаги:

1. В <configuration><appSettings> проверить наличие или добавить, если отсутствует:

<!-- LicPackageName = Ваша лицензия и в зависимости от продукта она разная  -->
<add key="SspUserRegistrationLicPackage" value ="{LicPackageName}" />
<!-- User1 и Password1 = имя и пароль пользователя, от чьего имени будет выполняться переход на страницу регистрации на портале. Этот пользователь должен быть максимально ограничен в правах и ему будет автоматически закрыт доступ на другие страницы системы.  -->
<add key="UserManagementSauName" value ="{User1}" />
<add key="UserManagementSauPassword" value ="{Password1}" />

2. В <configuration> в разделе пакета/приложения найти <auth> и в параметр "providerNames" добавить значение (Если уже что-то есть, то через запятую) "SSPUserPassword". Получиться, например:

<auth providerNames="InternalUserPassword,SSPUserPassword" autoLoginProviderNames="" defLanguage="ru-RU"defWorkspaceName="Default" useIPRestriction="false" loginTimeout="30000">

3. В <configuration><location><authentication mode="Forms"> заменить <forms loginUrl="~/NuiLogin.aspx" ... /> на:

<forms loginUrl="~/SSPLogin.aspx" protection="All" timeout="60" name=".ASPXAUTH" path="/" requireSSL="false" slidingExpiration="true" defaultUrl="ViewPage.aspx?Id=4e342d5e-bd89-4b79-98e2-22e433122403" cookieless="UseDeviceProfile" enableCrossAppRedirects="true" />

4. В <configuration><system.webServer><defaultDocument><files> заменить <add value="NuiLogin.aspx" /> на <add value="SSPLogin.aspx" />

Все заработало. А теперь задачка усложняется:
1. может быть несколько вариантов регистрации, скажем так даже различные группы Пользователей. Можно ли такое сделать?
2. в карточке регистрации мне нужно изменить набор полей. Например, убрать Имя/Фамилия и добавить номер телефона. Это в конфигураторе можно сделать?

Евгений,
1. Нет. Страница предназначена для регистрации пользователей портала, а пользователю портала недоступны группы.
2.Если под конфигуратором имеет ввиду мастер разделов, то нет, нельзя, это aspx страница.

Александр,
немного поковыряв конфигуратор, нашел пакет SSP 7.7.0. В нем есть нечто похожее на работу страницы регистрации. И регистрация, там сделана как ВэбСервис C# UserManagementService, а JavaScript UserManagementModule и Registration выступают, как коннекторы.

Я могу попробовать реализовать альтернативный сервис, который заместит текущий?

Евгений, не уверен насчет заместить, но вызвать свой вы точно сможете в Registration вызов происходит в:
сallServiceMethod('Register', registerCallback, userManagementToken, this);
при этом сallServiceMethod определен здесь же как:
var callServiceMethod = function(name, callback, data, scope) {
Terrasoft.AjaxProvider.request({
url: Terrasoft.workspaceBaseUrl + '/rest/UserManagementService/' + name,
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
method: 'POST',
jsonData: data,
callback: function(request, success, response) {
var responseObject = {};
if (success) {
responseObject = Terrasoft.decode(response.responseText);
}
callback.call(this, success, responseObject);
},
scope: scope
});
};
то есть вы можете вместо текущего сервиса, вызвать свой при желании

Александр, спасибо.
Буду копать.

Еще один вопрос, а если строку

url: Terrasoft.workspaceBaseUrl + '/rest/UserManagementService/' + name

я подменю на

url: Terrasoft.workspaceBaseUrl + '/rest/MyManagementService/' + name

и соответственно напишу свой сервис, то так тоже по идее должно сработать?

Да,
MyManagementService - сервис
name - метод сервиса

Александр, что-то не получается.
Я сделал замещающую схему Registration (SSP 7.7.0), в ней описал нужную логику, а вместо нее упорно подтягивается старая. Что я делаю не так?

То же самое и для UserManagementModule (SSP 7.7.0).

Евгений, я изначально сомневаюсь в реализуемости задуманного, но тем менее обратите внимание что Registration это модуль, а не схема страницы, замежать нужно как модуль, вызов модуля происходит здесь в UserManagementModule:
switch (Terrasoft.action) {
case 'register':
sandbox.loadModule('Registration', {
renderTo: renderTo,
id: sandbox.id + '-Registration',
keepAlive: true
});
break;
}
Попробуйте перезапустить пулл, почистить все кешивозможно, что-то где-то кешируется, возможно где-то в вебконфиге указывается напрямую айди схемы

Александр, да были проблемы с кэшем. Это все устранилось.
Сделал переопределение модуля UserManagementModule. Он сработал.
Но, при попытке загрузить созданный (не переопределенный!) модуль RegistrationV2 оно выдает такое:

core.js:674 WebSocket connection to 'ws://136.243.12.186:2011/0/Nui/UserManagement.aspx?action=register' failed: Error in connection establishment: net::ERR_CONNECTION_TIMED_OUT

Замещенный модуль UserManagementModule:

define('UserManagementModule', ['ext-base', 'terrasoft', 'sandbox', 'UserManagementModuleResources'],
    function(Ext, Terrasoft, sandbox, resources) {  
 
  var render = function(renderTo) {
    switch (Terrasoft.action) {
      case 'register':
        sandbox.loadModule('RegistrationV2', {
          renderTo: renderTo,
          id: sandbox.id + '-Registration',
          keepAlive: true
        });
      break;
    }
  };
 
  return {
    render: render,
    renderTo: Ext.getBody()
  };
});

Новый модуль RegistrationV2:

define('RegistrationV2', ['ext-base', 'terrasoft', 'sandbox', 'RegistrationResources'],
  function(Ext, Terrasoft, sandbox, resources) {
 // пока тут лежит код идентичный  Registration
});

Если вернуть обратно Registration - все работает.

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

Судя по всему виснет здесь:
sandbox.loadModule('RegistrationV2', {
renderTo: renderTo,
id: sandbox.id + '-Registration',
keepAlive: true
});
Думаю, что проблема я этой строке:
id: sandbox.id + '-Registration'

Возможно в этом тоже причина.
+ в переопределенном модуле UserManagementModule надо было подтянуть мой новый модуль RegistrationV2, в зависимостях.

Выдало такую ошибку (консоль браузера):

core.js:566 user: Portal/f5ecf16c-3768-461f-81c6-1023251e2b3b
 file: undefined
 line: undefined
 column: undefined
 message: Cannot read property 'localizableStrings' of undefined 
 date: Thu Mar 24 2016 11:47:46 GMT+0200 (Финляндия (зима))
 moduleId: UserManagementModule-RegistrationV2
 moduleName: RegistrationV2

Но localizableStrings есть в этом модуле.

UPD:
В модуле RegistrationV2 объект resourse является null. В нем судя заключается проблема

Все, подтянулось.
Заголовок модуля в RegistrationV2 должен выглядеть так:

define('RegistrationV2', ['ext-base', 'terrasoft', 'sandbox', 'RegistrationV2Resources'],
  function(Ext, Terrasoft, sandbox, resources) {
 // пока тут лежит код идентичный  Registration
});

то есть resources должен принимать значение не RegistrationResources, как вначале, а RegistrationV2Resources

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

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

Добрый день!

Правлю конфиги в соответсвии с приложеным файлом.
Я правильно понию, что Loader это Web.config в корне сайта, а конфиг приложения это Terrasoft.WebApp\Web.config?
В итоге при запуске IIS получаю страницу авторизации, ввожу логин/пароль (и супервизор, и портальный пользователь) и получаю ошибку:
Ошибка HTTP 500.19 - Internal Server Error
Запрашиваемая страница не доступна из-за неверной конфигурации данных для этой страницы.

Добрый день, Ольга!
Проверил Ваши файлы, исправьте, пожалуйста:

В файле Web_1.config:

В строке SspUserRegistrationLicPackage уберите скобки в имени лицензии, строка должна иметь вид:

Файл Web_2.config такой же, как и Web_1.config, оба файла - это web.config Loader-а.
Файл приложения находится в папке Terrasoft.WebApp и он имеет совсем другое наполнение!
В нем необходимо прописать только:

"Михайленко Михаил" написал:

Добрый день, Ольга!

Проверил Ваши файлы, исправьте, пожалуйста:

В файле Web_1.config:

В строке SspUserRegistrationLicPackage уберите скобки в имени лицензии, строка должна иметь вид:

Файл Web_2.config такой же, как и Web_1.config, оба файла - это web.config Loader-а.

Файл приложения находится в папке Terrasoft.WebApp и он имеет совсем другое наполнение!

В нем необходимо прописать только:

К сожалению, некорректно отображается пример "В нем необходимо прописать только:"
На счет SspUserRegistrationLicPackage поняла.

Ольга, прошу прощение, не все отобразилось.
Я имел ввиду, что в файле Web.config приложения, которое находится в папке Terrasoft.WebApp необходимо прописать только:

""UserManagementSauName" value ="Логин" />
""UserManagementSauPassword" value ="Пароль" />

После внесенных изменний сайт запускается, открывается страница SSPLogin.aspx, при нажатии Зарегистрироваться открывается страница регистрации. Вроде все ок. Но, есть пользователь, ему назначена лицензия портала, при логине ввожу логин/пароль, но меня не пускает на портал, а перебрасывает на страницу NuiLogin.aspx, ошибок никаких не пишет.

Ольга, я исследовал Ваши файлы, сейчас не вижу причин указанного Вами поведения.
Я вижу из конфигов, что пользователь UserOOVR - это пользователь, который должен раздавать лицензию для новых зарегистрированных.
Проверьте, он является портальным пользователем и выдана ли ему лицензия портала.

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

И при регистрации пользователя на портале выходит ошибка: "На указанный электронный адрес не удалось отправить письмо для продолжения регистрации. Проверьте корректность введенного email...." Хотя из веб-интерфейса я отправляю письма без проблем. Куда копать?

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

В предоставленной мной ранее инструкции есть пункт:

"В разделе "Системные настройки" указать корректные значения для всех настроек группы "Отправка e-mail сообщений"
В качестве имени пользователя должен быть указан адрес электронной почты, с которого будет производится рассылка писем для подтверждения регистрации и восстановления пароля"

Необходимо настроить согласно параметров подключения SMTP Вашего сервера.

Все отлично, получилось! Спасибо огромное. Если будут вопросы относительно портала еще напишу в эту ветку.

"Михайленко Михаил" написал:

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

В предоставленной мной ранее инструкции есть пункт:

"В разделе "Системные настройки" указать корректные значения для всех настроек группы "Отправка e-mail сообщений"

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

Необходимо настроить согласно параметров подключения SMTP Вашего сервера.

Добрый день! У нас аналогичная проблема, при регистрации пользователя на портале выходит ошибка: "На указанный электронный адрес не удалось отправить письмо для продолжения регистрации. Проверьте корректность введенного email". Настроили всё по вашей инструкции. В качестве Имени пользователя SMTP-сервера указали адрес электронной почты, с которого будет производится рассылка писем. Через интерфейс письма отправляются нормально. Можете по конкретнее написать какие настройки можно проверить?

Ольга, всегда пожалуйста!

Антон, добрый день!
Вам необходимо проверить корректность всех системных настроек, которые входят в группу "Отправка email сообщений", а именно:

"E-mail службы поддержки" - указать email с которого будет производится отправка.

"Имя или IP-адрес SMTP-сервера" - указать значение SmtpHost, например, smtp.gmail.com - это для почтового сервера gmail. Данные для Вашего почтового сервера Вы можете узнать в интернете или, в случае использования Exchange - Вам необходимо их запросить в администратора почтового сервера.

"Имя пользователя SMTP-сервера" - здесь указывается ящик, от имени которого будет производится автоматическое подключение к почтовому серверу.

"Пароль пользователя SMTP-сервера" - пароль от ящика, который Вы указали в системной настройке "Имя пользователя SMTP-сервера".

"Порт SMTP-сервера" - собственно порт SMTP сервера, необходимо указать порт, который будет корректно работать с протоколом SSL.

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

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

Добрый день
С помощью чего можно проверить, что значение в таком-то текстовом поле содержит только цифры?
Заранее спасибо

Нравится

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

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

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

Подскажите сайт, где их можно посмотреть

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

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

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

Добрый день

При сохранении изменений в процессе «Страница редактирование Конфиг.единицы» система выдала ошибку:

// в других процессах, напр. «Страница карточки задачи» тоже такая же ошибка появилась.

Объект SysSchema у меня никак не администрируется:

Нравится

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

У меня роль - сист.администратор

Проблема может возникать из-за того, что у пользователя, под которым вы работаете, Read-Only лицензии. Установите нужному пользователю полноценную лицензию.

Речь идет о тестовой системе. Здесь тоже нужны какие-то лицензии?

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

это же бесплатно, так?

Да, это выполняется бесплатно.
Перезаказать лицензии необходимо на свой CustomerID

в смысле, лицензии на тестовую систему бесплатны?

Татьяна,

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

Данная услуга бесплатна.

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

Добрый день!

Есть ли в документации примеры создания и использования контролов (в частности кнопки)?

Нравится

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

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

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

Спасибо, Дмитрий.

"Вильшанский Дмитрий" написал:примеров создания и использования контролов нет

Очень жаль.

"Вильшанский Дмитрий" написал:получить хоть какое-то описание, что именно Вы хотите сделать

Нужна кнопка "Сделать фото" которая откроет камеру моб.устройства и после фотографирования положит фото в деталь "Файлы активности" (так де нужно переименовать фото).

Данный функционал уже добавлен в детали "Файлы и ссылки".
Для того чтобы правильно добавить данную деталь - необходимо ознакомится с инструкцией (во вложенииinstrukciyapodobavleniyudetalifaylyissylkivmobilnoeprilozhenie.doc
)

"Клименко Николай" написал:Данный функционал уже добавлен в детали "Файлы и ссылки".

Николай, спасибо за инструкцию!

Но задача в том чтобы в определенном месте мобилки была кнопка (аналогично кнопки открывающей камеру в "файлах и ссылках").

AlexLS, думаю что данная задача очень трудоямка, так как добавление подобных кнопок выполняется не через манифест приложения а через само ядро. Темболее добавлением просто кнопки мы вряд ли ограничимся - нужно будет дописывать дополнительную логику чтобы определять к какой записи привязывать созданый файл, а если кнопка будет не в карточке объекта - то еще и определять объект по которому делаем фото. Как эти фото в дальнейшем будут отображатся и куда попадать в основной конфигурации?
Соответсвенно более оптимальная реализация с точки зрения удобство\трудозатраты - это все же на запись, к которой вы хотите прикрепить файлы, добавить деталь и стандартным функционалом прикреплять файлы.

"Клименко Николай" написал: задача очень трудоямка

Николай, согласен. Буду думать и искать...
Еще раз спасибо за помощь!

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

Здравствуйте.
У меня в бизнесс процессе в один элемент входят несколько ветвлений. И если хотя б одна срабатывает, то создается счет. Как мне сделать так чтобы если сработают две или три входящие ветки счет создавался только один. Спасибо.

Нравится

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

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

Используйте для объединения потоков перед созданиям счета элемент "И".

Но я так понимаю "И" ждет выполнения всех веток.
Мне нужно - Если у меня хотя бы одна из них выполнится - мне нужно создать один счет, но не больше.

Ну тогда используйте "Исключающее ИЛИ" - здесь все логично:smile:

Не могу понять никак. Вот У меня два из трех процессов пришли к "Исключающее ИЛИ". И каким условием мне сделать чтобы дальше процес пошел только раз к счету?

Добавьте в процесс два параметра..
1. Требутся сделать счет
2. Счет сделан
И их анализ в начале секции, создающей счет :)

Добавьте в процесс два параметра..
1. Требутся сделать счет
2. Счет сделан
И их анализ в начале секции, создающей счет :)

Добавьте в процесс два параметра..
1. Требутся сделать счет
2. Счет сделан
И их анализ в начале секции, создающей счет :)

ой.. трижды отправилось :cry:
Модератор, почистите пжлста :)

Я думал над этим вариантов, но эти ветки приходят в точку одновременно, поэтому условие проверки их всех пропустит на создание счета...

Тогда параметр "счет сделан" меняем на параметр "Счетов сделано" и смотрим, чтоб значение было меньше 2 :)

Спасибо. Уже разобрался!

Кстати, да.. формула почему-то в цикле второй раз не отрабатывает... Тоже сталкивался.
Помогло переписать это условие в C# скрипте...

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

Необходимо сделать полную выгрузку контрагентов со всеми возможными полями и id. Делать приходится через БД напрямую.
Вопрос такой:
В какой таблице БД хранятся справочники?

Нравится

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

Дополню вопрос - как написать запрос SQL, чтобы вытащить Display field справочного поля?

Вот по сути и нам надо вытащить все из справочников)

Справочники в системе создаются на основе объектов. Для каждого справочника отдельный объект и, как следствие, отдельная таблица в БД. Чтобы понять, что это за таблица, можно открыть свойства справочника в соответвующем разделе, взять значение из поля Объект.

По этому значению в конфигурации ищем название объекта, и выбираем данные selectом из БД.

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

Здравствуйте.
Добавляю кнопку в LeftContainer, аналогично добавлению в BasePageV2:

{
        "operation": "insert",
        "parentName": "LeftContainer",
        "propertyName": "items",
        "name": "SentManufacturerButton",
        "values": {
                "itemType": Terrasoft.ViewItemType.BUTTON,
                "caption": "SentManufacturerButtonCaption",
                "classes": {"textClass": "actions-button-margin-right"},
                "click": {"bindTo": "sentManufacturerButtonClick"},
                "style": Terrasoft.controls.ButtonEnums.style.GREY,
                "visible": true,
                "tag": "sentManufacturerButtonClick",
                "markerValue": "SentManufacturerButton"
        }
}

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

Версия 7.7.0.2325

Нравится

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

Добрый день

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

Нравится

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

Логику работы с полем «Заметки» (в том числе и считывание из него при сохранении карточки по кнопке ОК) можно посмотреть в BaseModuleEditPage.

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

В мене є питання по видаленню колонок в обєкті.
Чи можливо видалити колонку в самій базі даних після того як вона була видалена у конфігураторі?
Які будуть наслідки таких дій?

Нравится

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

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

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