real estate
шаблоны сообщений
Технические вопросы
7.x

В Real Estate появилась потребность создать 3 кастомных шаблона для заказчика. Нашел справочник "шаблоны email сообщений", попытался добавить свою запись и в ответ получил ошибку "недостаточно прав". Раздал права по умолчанию на объект - не сработало. Где-то тут на форуме советовали создать замещающий объект шаблонов, пробовал - тоже не помогло. Кто-нибудь сталкивался/есть идеи как решить проблему? Или редактирование шаблонов возможно только в Marketing?

Нравится

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

"Варфоломеев Данила Викторович" написал:

В Real Estate появилась потребность создать 3 кастомных шаблона для заказчика. Нашел справочник "шаблоны email сообщений", попытался добавить свою запись и в ответ получил ошибку "недостаточно прав". Раздал права по умолчанию на объект - не сработало. Где-то тут на форуме советовали создать замещающий объект шаблонов, пробовал - тоже не помогло. Кто-нибудь сталкивался/есть идеи как решить проблему? Или редактирование шаблонов возможно только в Marketing?

Подписаться на обновления этого материала

Объект "Шаблоны email сообщений" лицензируется отдельно. Заместить не выйдет. Скину статью на создание шаблонов писем без использования справочника - может поможет.

Показать все комментарии
7.7
уведомление в CTI панели
Технические вопросы
7.x

В карточке задачи при нажатии на кнопку в CTI панели должно появляться уведомление с этой задачей. Делаю с помощью БП (добавляю запись в объект "Уведомления" с типом Notification). Но уведомление создается только если стоит галочка "Напомнить ответственному". Каким образом можно добавить уведомление, если напоминание в задаче отключено?

Нравится

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

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

Необходимо заполнять поля "Кому", "Время", "Заголовок", "Объект", "Уникальный заголовок". И уведомления должно быть по задаче не в конечном состоянии.

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

Здравствуйте, Олег!

Попробуйте заполнить дополнительно поле "Тип уведомления" (RemindingType). Выберите из справочника "Уведомление" (Reminding).

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

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

Здравствуйте.
Пробую запускать процессы через веб-сервис как написано в http://academy.terrasoft.ru/documents/docs/technic/SDK/7.7.0/WorkWithBpm...

Делаю запрос об оплате счета. Он имеет вид https://mysystem.bpmonline.com/0/ServiceModel/ProcessEngineService.svc/C...

Если я делаю его со своего компа, то все работает. Если из друго приложения - нет.

Этот запрос мне нужно делать из стороннего приложения. И оно меня выбрасывает на страницу входа в систему.

В этой же статье есть Пример запуска бизнес-процессов bpm'online из внешнего приложения.
Но я не совсем понимаю всей картины.

Что именно мне нужно сделать? Подскажите пошагово, что и куда дописать?

Я так понимаю, что в этом запросе из стороннего приложения https://mysystem.bpmonline.com/0/ServiceModel/ProcessEngineService.svc/C...

я должен еще передавать логин и пароль на вход в систему?
где должен быть прописан программный код внешнего приложения?
Как и где я могу создать Клиентский класс, реализующий логику работы с веб-сервисом ProcessEngineService.svc? (типа BPMonlineProcessEngineExample) - я не понимаю куда его добавлять. Спасибо!

Нравится

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

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

Для вызова сервиса нужно быть авторизированным пользователем системы. При вызове сервиса с приложения, используются auth-кука. При вызове сервиса с другого приложения Вы можете использовать Basic-аутентификацию.

Я так понимаю, мне достаточно перед этим запросом https://mysystem.bpmonline.com/0/ServiceModel/ProcessEngineService.svc/… сделать запрос аутентификации
http(s)://mysystem.bpmonline.com/ServiceModel/AuthService.svc/Login

и передать параметры

Content–Type: application/json
Authorization: Basic <Имя пользователя>:<Пароль пользователя>
в кодировке Base64?

и тогда все заработает? Или нет?

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

Подробней об аутентификации Вы можете узнать перейдя по ссылке:
http://academy.terrasoft.ua/documents/docs/technic/SDK/7.7.0/RequestAut…

А можна более детальнее как мне передать те куки которые перешли в ответ на первый запрос в следующий запрос?

А по поводу статьи -
1) Добавьте в блок usings пространства имен System.IO и System.Net:

2) Создайте класс, в который добавьте следующие поля:

3) Добавьте в созданный класс метод для аутентификации через сервис AuthService.svc:

Вопрос: Куда я должен прописать этот код? Где и как создать этот класс? Спасибо.

Этот код Вам нужно добавить в Ваш класс, который вызывает сервис bpm'online и при первом запросе вызвать метод TryLogin с Вашим логином и паролем.
Если авторизация прошла успешно, то метод TryLogin вернет True, после этого при любом запросе к bpm'online передавать auth-куку.
Пример передачи куки:
// Включение использования cookie в запросе.
authRequest.CookieContainer = AuthCookie;

А как создать клас? (извините за тупой вопрос)

Конфигурация - Добавить - Исходный код? Или как?

Добрый день!

"Сергиенко Николай Петрович" написал:

А как создать клас? (извините за тупой вопрос)

Конфигурация - Добавить - Исходный код? Или как?

Совершенно верно.

А Реализация запуска процессов в bpm'online из программного кода внешнего приложения
http://academy.terrasoft.ru/documents/docs/technic/SDK/7.7.0/WorkWithBp…

Теперь для запуска процессов bpm'online из внешнего приложения достаточно реализовать вызов соответствующих методов класса BPMonlineProcessEngineExample.

Пример программного кода внешнего приложения:

// Выполнение аутентификации пользователя с имененем UserName. 
if (BPMonlineProcessEngineExample.TryLogin("UserName", "UserPassword"))
{
    try
    {
        // Добавление нового контакта через запуск бизнес-процесса в системе.
        BPMonlineProcessEngineExample.AddContact("Коваленко Петр Андреевич", "123-23-65");
 
        // Получение списка контактов через запуск бизнес-процесса в системе.
        List<BPMonlineProcessEngineExample.BPMContact> bpmContacts =
            BPMonlineProcessEngineExample.GetAllContacts();
 
        // Обработка полученного списка контактов.
        foreach (var contact in bpmContacts)
        {
            // Обработка данных контакта.
        }
    }
    catch (Exception e)
    {
        // Обработка ошибок.
    }
}

Это нужно писать на стороне стороннего приложения?
А как оно будет понимимать к какому сайту оно обращается? Можна получить пример полного кода на стороне стороннего приложения?

Я добавил Исходный код. Назвал его BPMonlineProcessEngineExample. В него поместил код

using System.IO;
using System.Net;
 
public class BPMonlineProcessEngineExample
{
    private const string processServiceUri = 
            "<адрес приложения bpm'online>/0/ServiceModel/ProcessEngineService.svc/";
    private const string authServiceUri = 
            "<адрес приложения bpm'online>/ServiceModel/AuthService.svc/Login";
 
    // Cookie аутентификации bpm'online.
    private static CookieContainer AuthCookie = new CookieContainer();
 
    // Признак, прошла ли аутентификация пользователя на сервере bpm'online.
    // Если аутентификация прошла успешно, в свойстве AuthCookie будут лежать 
    // аутентификационные cookie, сформированные сервисом.
    public static bool IsAuthentificated
    {
        get { return (AuthCookie != null); }
    }
 
    // Метод для аутентификации запроса к веб-сервису bpm'online.
    // Параметры:
    // userName - имя пользователя bpm'online,
    // userPassword - пароль пользователя bpm'online.
    public static bool TryLogin(string userName, string userPassword)
    {
        // Создание экземпляра запроса к сервису аутентификации.
        var authRequest = HttpWebRequest.Create(authServiceUri) as HttpWebRequest;
        // Определение метода запроса.
        authRequest.Method = "POST";
        // Определение типа контента запроса.
        authRequest.ContentType = "application/json";
 
        // Включение использования cookie в запросе.
        authRequest.CookieContainer = AuthCookie;
 
        // Помещение в тело запроса учетной информации пользователя.
        using (var requesrStream = authRequest.GetRequestStream())
        {
            using (var writer = new StreamWriter(requesrStream))
            {
                writer.Write(@"{
                    ""UserName"":""" + userName + @""",
                    ""UserPassword"":""" + userPassword + @"""
                }");
            }
        }
 
        using (var response = (HttpWebResponse)authRequest.GetResponse())
        {
            if (AuthCookie.Count > 0)
            {
                return true;
            }
        }
        return false;
    }
 
    // Метод запускает процесс ChangeOrderStatus, который меняет статус оплаты. 
    // Процессу в качестве входящих параметров передаются номер заказа и Email.
    public static bool ChangeOrderStatus(string OrderId, string Email)
    {
        // Проверка, была ли выполнена аутентификация пользователя.
        if (!IsAuthentificated)
        {
            return false;
        }
        // Формирование строки запроса к веб-сервису для запуска процесса AddNewExternalContact, 
        // которому передаются значения входящих параметров ContactName и ContactPhone.
        string requestString = string.Format(processServiceUri +
                "ChangeOrderStatus/Execute?OrderId={0}&Email={1}",
                                 OrderId, Email);
        HttpWebRequest request = HttpWebRequest.Create(requestString) as HttpWebRequest;
        // Определение метода запроса.
        request.Method = "GET";
        // В запрос включаются аутентификационные cookie, которые были получены от 
        // сервиса аутентификации bpm'online. 
        request.CookieContainer = AuthCookie;
        // Получение ответа от сервиса и обработка результатов.
        using (var response = request.GetResponse())
        {
            // Обработка результатов выполнения запроса.
        }
        return true;
    }
}

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

Николай,

для получения полноценного ответа, пожалуйста, сформулируйте и направьте Ваши вопросы в поддержку support@terrasoft.ru

Здравствуйте! У меня получилось отправлять данные из внешнего источника. Я таким образом создаю в системе новые контакты. И если я в БП передаю два параметры, то все занимает 2-3 секунды на обработку такого запроса. Но вот если я передаю 120 параметров и в БП сделал Создание контакта где эти поля присваьваю в контакт, то такой запрос выполняется только один раз в минуту. Тоисть за час я могу таким образом передать только 60 контактов. Можна как-то ускорить это дело? Спасибо!

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

Элемент "Добавить данные" записывает данные через ESQ. Вы можете записывать данные напрямую в БД элементов "Задание-сценарий" (через CustomQuerry), но тогда:

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

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

Принудительна компиляция помогла. Спасибо!

Показать все комментарии
Редактировать контакт в заказе
Технические вопросы
7.x

Добрый день, я пользуюсь версией bpm'online 7.6 . Возникла надобность в Карточке редактирования Заказа возможности редактирования имени текущего контакта, который связан с заказом полем ContactId. Хотелось бы с заказа не переходить в Контакт и там его редактировать, а сразу делать изменения в имени прямо из карточки заказа. Подскажите, каким способ это можно решить?

Нравится

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

Одним полем, а именно стандартным лукап полем этого не сделать, но вы можете рядом с ним разместить текстовое поле. Назвать его как-то, к примеру «Имя контакта», привязать его к атрибуту текстовому. В методе onEntityInitialized и в методе изменения лукапного контакта, заполнять «Имя контакта» значением имени контакта, через запрос esq, или прямо из значения лукапа.
А уже при изменении вашего «Имя контакта», в событии изменения атрибута «Имя контакта», брать, и через esq, апдейтить имя контакта в объекте контакта, получая его id из главного лукап поля. И, после изменения, обновлять значение лукапного поля.
Стоит ли, конечно, возможность быстро переименовать поле, не переходя в карточку контакта, лишнего поля на форме заказа, вам решать.
Если возникнут точечные вопросы в процессе разработки, пишите, подскажем.

Сделал 2 текстовых виртуальных поля "ФИО контакта" и "телефон" в "OrderPageV2", по вашим инструкциям, при инициализации все подтягивает, при сохранении ("onSaved" ) записывает редактируемые данные в текущий контакт. Все работает. А вот как сделать маску и валидацию для поля "телефон" в "OrderPageV2" из данного примера? В документации только описана возможность базовой валидации контакта в карточке Контакта. Если можно, скиньте пример кода.

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

Инструкция:
mask.docx
Код модуля который необходимо добавить как модуль у себя в конфигурации:
multimaskedit.txt
И тот же самый код только в ворде так как рус. символы превратились в зюки в тхт:
multicodeinword.docx

Показать все комментарии
виджет
итоги
процент
Технические вопросы
7.x

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

Нравится

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

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

Нравится

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

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

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

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

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

Показать все комментарии
SSPLogin
UserManagement
Портал самообслуживания
регистрация пользователя
Технические вопросы
7.x

Добрый день.

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

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

Показать все комментарии
7.x
mobile
добавление контрола
Технические вопросы

Добрый день!

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

Нравится

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

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

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

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

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

Очень жаль.

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

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

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

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

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

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

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

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

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

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

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

Нравится

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Показать все комментарии
Технические вопросы
7.x

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

Нравится

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

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

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

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

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

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