Товарищи подскажите, как узнать текущий тип отображения карточки.

Собственно в LeadPage нужно понимать - это создание нового лида(тыкнули на кнопку создать) или редактирование(тыкнули на запись реестра)

Может это можно вытащить через this.get("xxxxxx") ???

Нравится

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

Приветы, есть аттрибуты

attributes: {

            "IsButtonVisible": {

                "dataValueType": Terrasoft.DataValueType.BOOLEAN,

                "value": false

            },

            "ButtonCaption": {

                "dataValueType": Terrasoft.DataValueType.TEXT,

                "value": "Test"

            }

        },

{

            "operation": "insert",

            "name": "bnBackCall",

            "parentName": "DataGrid",

            "propertyName": "activeRowActions",

            "index": 111,

            "values": {

                "className": "Terrasoft.Button",

                "style": Terrasoft.controls.ButtonEnums.style.GREY,

                "caption": "Позвонить",

                //"caption": { "bindTo": "ButtonCaption" },

                "tag": "tagBnBackCall"

            }

        },

                {

                    "operation": "merge",

                    "name": "DataGridActiveRowOpenAction", 

                    "values": {

                        "visible": { "bindTo": "IsButtonVisible" }

                    }

                },

        {

            "operation": "merge",

            "name": "DataGridActiveRowCopyAction", 

            "values": {

                //"visible": { "bindTo": "IsButtonVisible" }

                "caption": { "bindTo": "ButtonCaption" },

                //"caption": "12345",

            }

        },

Атрибут ButtonCaption не биндится к кнопке, она не видима, если задать конст то ок

Аттрибут IsButtonVisible биндится все ок к той же кнопке

Какое волшебство с caption как его менять у кнопки в rowSelected например, если атрибут не биндится

Нравится

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

Эм. А ресурсы вам чем не угодили? Caption-ы лучше через них задавать.

Варфоломеев Данила,

У меня на кнопке должно выводится "Позвонить (номерЗвонка)" тут нет смысла в ресурсах тк динамический каптион в чистом виде. Сейчас зашито вот такое: 

rowSelected: function (Id) {

                this.logStep('rowSelected(' + Id + ') started!');

                this.readCallCount(Id);

                this.sleep(500);

                var itemId = '#SxCandidateSectionDataGridGrid-actions-item-' + Id;

                var jsRow = this.Ext.select(itemId);

                jsRow.elements[0].lastElementChild.previousElementSibling.innerText = this.getButtonCaption();

                //jsRow.select('span').item(6).dom.innerHTML = this.getButtonCaption();

                this.logStep('rowSelected(' + Id + ') finished!');

                //bn.setText(this.getButtonCaption());

                //bn.text = this.getButtonCaption();

                

            },

Как сделать нормально через атрибуты платформы или еще что-то из платформы?

QArt пишет:

Как сделать нормально

 Добавить в ресурсы 2 строчки. TemplateFormatString - "Позвонить {0}" и CallButtonCaption - ""



забиндить caption кнопки

"caption": {bindTo: "Resources.Strings.CallButtonCaption"}

И в любом месте в коде

 

var number = /*номер телефона*/;
this.set("Resources.Strings.CallButtonCaption", 
     Ext.String.format(this.get("Resources.Strings.TemplateFormatString"), number));

 

Варфоломеев Данила пишет:

QArt пишет:

Как сделать нормально

 Добавить в ресурсы 2 строчки. TemplateFormatString - "Позвонить {0}" и CallButtonCaption - ""

забиндить caption кнопки

<span><span>"caption"</span></span><span>:</span> <span>{</span>bindTo<span>:</span> <span><span>"Resources.Strings.CallButtonCaption"</span></span><span>}</span>

И в любом месте в коде

 


 
var number = /*номер телефона*/;
this.set("Resources.Strings.CallButtonCaption", 
     Ext.String.format(this.get("Resources.Strings.TemplateFormatString"), number));

Спасибо, буду пробовать.

Менять ресурс - норм практика - ок. В c# так не делал, надо будет попробовать :) Но тут не c#. 

Можете подсказать как определить является ли текущий юзар админом? Версия 7.11 онлайн сэйлз энтерпрайз

Попробовал следовать вашему совету, кнопка пропала (как и в случае с обычным атрибутом типа ТЕКСТ), не знаю что делаю не так. Но вот что написано:

Что делаю не так??? (Версия 7.11 онлайн сэйлз энтерпрайз) Заранее спасибо!

В консоли и БД вижу что все значения верные, вот только кнопки нет ((

{

            "operation": "insert",

            "name": "bnBackCall",

            "parentName": "DataGrid",

            "propertyName": "activeRowActions",

            "index": 111,

            "values": {

                "className": "Terrasoft.Button",

                "style": Terrasoft.controls.ButtonEnums.style.GREY,

                //"caption": "Позвонить",

                "caption": {bindTo: "Resources.Strings.rButtonCallCaption"},

                //"caption": { "bindTo": "ButtonCaption" },

                "tag": "tagBnBackCall"

            }

        },

 getButtonCaption: function()

            {

                var result = this.get("Resources.Strings.rButtonCallCaption");

                this.logStep('getButtonCaption = ' + result);

                return result;

            },

            

            setButtonCaption: function(callCount)

            {

                this.logStep('setButtonCaption(' + callCount + ') started!');

                var caption = 'Позвонить';

                if (callCount > 0)

                    caption += ' (' + callCount + ')';

                //this.set("ButtonCaption", caption);

                //this.logStep('setButtonCaption(' + callCount + ')');

                //this.logStep('getButtonCaption() = ' + this.getButtonCaption());

                this.set("Resources.Strings.rButtonCallCaption", caption);

                this.logStep('setButtonCaption has finished!');

            },

QArt,

у вас точно название в ресурсах такое как вы указываете 

http://prntscr.com/ilfjl6 ?

Попробуйте сделать как в примере http://prntscr.com/ilflfw

Demchenko Olha,

Спасибо за ответы, регистр точно совпадает и посимвольно тоже. Вроде js и c# регистрочувствительны и все такое. Может это в 7.11 версии кнопки мутировали :) Многое меняется, мне ребята скидывали функцию по определению админ текущий пользователь или нет, но у них более ранние версии и у меня таких столбцов в бд просто нет, хотя таблица с таким именем есть. Может подобную функцию добавят в число стандартных? Или вынесут массив ролей текущего пользователя на клиента, гуид же доступен. Еще пожелание делать синхронные запросы, не только асинхронные (чтобы можно было указать). Есть норм книга? Еще раз спасибо, хороших выходных.

QArt,

Есть стандартные константы в схеме ConfigurationConstants и там присутствует id сисадминов - http://prntscr.com/im7k0g

Получить id сисадмина можно так: ConfigurationConstants.SysAdminUnit.Id.SysAdministrators

Остаётся получить id текущего пользователя, например this.Terrasoft.SysValue.CURRENT_USER.value, и определить его роли из таблици SysUserInRole.

Потом проверить есть ли среди полученных ролей роль сисадмина. Пример работы с SysUserInRole из коробки - http://prntscr.com/im7y7o

Все примеры по версии 7.11

Спасибо! Еще бы книгу нормальную, как настроить WebStorm чтобы он подтянул платформу? А то от него пользы, если править замещенный клиентский модуль только как от "модного блокнота". Заранее спасибо.

QArt,

В WebStorm вы можете работать со всеми js файлами посли их выгрузки. При этом должны подтягиваться все переменные\методы и т.д. А если вы скачиваете отдельно файл и открываете его, то конечно это будет как "блокнот".

Demchenko Olha,

Помогите начать разработку. С бэкенда, но js знаю тк фулстек. Но поиск по всем js файлам в папке сайта, не нашлось функции из 

https://prnt.sc/im7y7o к слову. Как выгрузить все файлы для нормальной разработки в WebStorm??? (взять из папки сайта на сервере)

У нас erp enterprise 7.11 on site install.

Что делаю не так?? Можно алгоритм для начала нормальной разработки?? бОльшое спасибо, заранее!

QArt,

По всем схемам вы можете искать и в браузере - 

http://prntscr.com/in5nri

Касательно начала разработки, можете ознакомиться со статьей - https://academy.terrasoft.ru/documents/technic-sdk/7-11/rabota-s-klient…

Demchenko Olha,

Спасибо, но искать по всем сборкам пробовал (ctrl+shift+f) у нас не нашлось. Вот скрин - https://prnt.sc/in6qd6&nbsp;

Работать из файловой системы буду пробовать уже завтра, спасибо!

 

QArt,

Откройте панель уведомлений и попробойте ещё раз. Ну или откройте схему CtiPanel в конфигурации и посмотрите там код.

Demchenko Olha,

Спасибо, пробовал искать ctiPanel в веб интерфейсе и открывал все схемы, которые нашла платформа и нигде нет - это было вчера. Сегодня начал пробовать "работать из файловой системы" и получил https://prnt.sc/inl1yd - это после правки web.config согласно - https://academy.terrasoft.ru/documents/technic-sdk/7-11/razrabotka-v-fa… права на папку IIS юзарам дали - полный доступ. Что я не так делаю?

QArt,

Напишите в поддержку по этому поводу.

Demchenko Olha,

Привет, как в нее писать? им достаточно будет ссылки на нашу переписку?

QArt,

Напишите на support@bpmonline.com, опишите проблему и приложите скрины.

Demchenko Olha,

Спасибо! С праздником - 

https://www.graziosgeles.lt/wp-content/uploads/2016/10/raudona-puokste…;

QArt, воспроизведите ошибку еще раз, после направьте в поддержку полные логи приложения. Сохраняются они на веб-сервере по пути C:\Windows\Temp\BPMonline\Site_ID

QArt пишет:

Demchenko Olha,

Спасибо, пробовал искать ctiPanel в веб интерфейсе и открывал все схемы, которые нашла платформа и нигде нет - это было вчера. Сегодня начал пробовать "работать из файловой системы" и получил https://prnt.sc/inl1yd - это после правки web.config согласно - https://academy.terrasoft.ru/documents/technic-sdk/7-11/razrabotka-v-fa… права на папку IIS юзарам дали - полный доступ. Что я не так делаю?

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

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

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

Действую по этим инструкциям раз и два, поля не блокируются.

Версия 7.11.3

Нравится

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

Здравствуйте, Борис!



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

Анна, добрый день!

Разобрался сам.

Проблема возникала в разделе, добавленном на Портал. На Портале отключена фича (Feature) CompleteCardLockout. Описание механизма отключения функциональности Feature Toggle тут

Включается так:

DECLARE @SupervisorId UNIQUEIDENTIFIER = (SELECT ContactId FROM dbo.SysAdminUnit WHERE Name = N'Supervisor')
DECLARE @AllSSPUsersId UNIQUEIDENTIFIER = (SELECT Id FROM dbo.SysAdminUnit WHERE Name = N'Все пользователи портала')
DECLARE @FeatureCode NVARCHAR(50) = 'CompleteCardLockout'
DECLARE @FeatureId UNIQUEIDENTIFIER = (SELECT Id FROM dbo.Feature WHERE Code = @FeatureCode)
 
IF NOT EXISTs (SELECT * FROM dbo.AdminUnitFeatureState WHERE FeatureId = @FeatureId AND FeatureState = 1 AND SysAdminUnitId = @AllSSPUsersId)
BEGIN
    INSERT INTO dbo.AdminUnitFeatureState (
        CreatedById,
        SysAdminUnitId,
        FeatureState,
        FeatureId)
        VALUES (
            @SupervisorId,
            @AllSSPUsersId,
            1,
            @FeatureId
        )
END

 

Анна Журавель,

Здравствуйте еще раз, Анна!

У меня вопрос к вам, как к представителю разработчика.

Почему в документации по ссылкам из первого поста нет ни слова, что этот механизм зависит от фичи CompleteCardLockout?

Борис Леонов,

Здравствуйте, Борис!



Мы передали данную информацию ответственным за наполнение Академии и в ближайшее время документация будет обновлена.

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

Вот как в функции вернуть не undefined ? :)

proc: function(Id)

{

  return getCallCountForButtonCaption(Id);

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

аяксом вернется из getCallCountForButtonCaption т. е. синхронизировать асинхронный вызов

}

            getCallCountForButtonCaption: function (candId) {

                this.logStep('getCallCountForButtonCaption started...');

                // Создаем экземпляр класса Terrasoft.EntitySchemaQuery с корневой схемой [Contact].

                

                var esq = this.Ext.create("Terrasoft.EntitySchemaQuery", {

                    rootSchemaName: "AACandCall"

                });

                // Добавляем колонку с именем основного контакта контрагента, который относится к данному контакту.

                esq.addColumn("CallCount");

                esq.filters.add("filterByIdCand",

                    esq.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL,

                        "IdCand", candId));

                esq.getEntityCollection(function (response) {

                       this.logStep('ForButtonCaption callCount request has started!');

                    if (response.success) {

                        this.logStep('ForButtonCaption callCount response.success is true');

                        if (response.collection.getCount() > 0) {

                            var firstItem = response.collection.getByIndex(0);

                            var callCount = firstItem.values.CallCount;

                            //this.setButtonCaption(callCount);

                            return callCount;

                        }

                        else {

                            this.logStep('ForButtonCaption response.collection.getCount() is ZERO');

                            return -1;

                        }

                        return -1;

                    }

                    else {

                        this.logStep('ForButtonCaption callCount response.success is false');

                        return -1;

                    }

                }, this);

                this.logStep('getCallCount finished...');

            },

 

Нравится

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

Добрый день

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

Пример:

diff: [
   {
    ... 
    "caption": {"bindTo": "MyAttribute"}
    ...
   }]
...
methods: {
   someFunction: function() {
       var callback = function(value) {
          this.set("MyAttribute", value);
       }.bind(this);
       this.callAsync(callback);
   }
}

 

Артем Гура,

Спасибо! Смотрится интересно, буду пробовать. Мне интересно как делать в платформе подряд два асинхронных вызова, когда вызов второго зависит от ответа первого. Конкретная задача: юзар нажимает кнопку "позвонить", запросом проверяем в бд первый звонок если да то делаем вызов инсерт иначе апдейт - это уже сделано, но как далее в методе клик кнопки еще и каптион ее поменять с "позвонить" на "позвонить (1, 2, 3)" Вроде ваш ответ поможет, спасибо. Какая практика по подобным сценариям, ща осваиваю фронтэнд, в основном на c# писал и куча приколов...

Артем Гура,

Попробую спросить в более точной форме. 

Дано:

        attributes: {

            "IsButtonVisible": {

                "dataValueType": Terrasoft.DataValueType.BOOLEAN,

                "value": false

            },

            "ButtonCaption": {

                "dataValueType": Terrasoft.DataValueType.TEXT,

                "value": "Позвонить"            

            }

        },

        diff: [{

            "operation": "insert",

            "name": "bnBackCall",

            "parentName": "DataGrid",

            "propertyName": "activeRowActions",

            "index": 111,

            "values": {

                "className": "Terrasoft.Button",

                "style": Terrasoft.controls.ButtonEnums.style.GREY,

                "caption": { "bindTo": "ButtonCaption" },

                "tag": "tagBnBackCall"

            }

        },

Где мне нужно менять каптион кнопки моей, по логике в 

rowSelected: function(Id) 

            {

                //this.setButtonCaption(Id);

                this.set("ButtonCaption", "КАПТИОН");

            },

Но так не работает, при этом мне нужно устанавливать каптион в зависимости от значения прочитанного с БД (это умею), но эта функция чтения асинхронная, как это нормально сделать???

QArt,

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

Demchenko Olha,

Спасибо, пробовал. Пришлось через js править, плохо что у террасофт если рендеринг поменяется в следующей версии то придется править. Каптион - волшебный, не меняется через атрибуты и ресурсы советовали, но тоже самое биндинг с полем каптион не помогает.

QArt,

Почитайте документацию 

https://academy.terrasoft.ru/documents/technic-sdk/7-11/dobavlenie-knop…, там и примеры есть реализации. Попробуйте сделать как там, просто вывести кнопку с caption через привязку к локализируемой строке схемы, не делая значение изменяемым. А когда уже получится стандартную кнопку вывести, тогда и пробуйте экспериментировать.

Demchenko Olha,

Хорошо, спасибо :) Все-таки, кнопка выводится - ок, ее каптион биндится к атрибуту, меняя атрибут сам каптион не меняется. 

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

Приветы,

Учусь, читал всякое, например, https://academy.terrasoft.ru/documents/technic-sdk/7-8/rabota-s-filtram… не разобрался, подскажите плиз???

 

По смыслу нужно проверять есть ли звонки и считать сколько их

т. е. нужен Exists, Insert, Update

Как сделать запрос:

select CallCount from 

AACandCall a,

SxCandidate c

where

a.IdCand = c.Id

Нравится

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

Добрый день

Ну во-первых следует избегать декартовых произведений (* from a, b)

Во-вторых можно посмотреть как это сделано в системе, к примеру методом поиска  нужно текста среди загруженных на клиент js файлов

Далее, на community есть много статей, к примеру https://community.terrasoft.ru/articles/opisanie-osnovnyh-metodov-entityschemaquery-cast-1

Поищите на community по тексту EntitySchemaQuery

 

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

Народ помогите

Нужно поменять цвет ссылок в задачах, в схеме "ReminderNotificationsSchema"

Беру конкретную ссылку и пытаюсь впендюрить стиль:

                        "styles": {
                            "wrapStyles": {
                                "color": "orange"
                                }
                        },
 

Но ничего не получается:

Нравится

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

Роман, здравствуйте! 

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

Вильшанский Дмитрий,

Задача за счет изменения цвета ссылки визуально разделить элементы. 

Ссылки - это элементы в секции diff, модуля  ReminderNotificationsSchema.

В DOM структуре элемент ссылка выглядит так:

&lt;a id="ReminderNotificationsSchemaNotificationSubjectCaptionHyperlink-b65f0b81-b776-4ee6-a44a-5b2ff3d2652f-ReminderTabModule" name="" href="" target="_blank" class="t-label label-link" style="" title="" type="" data-item-marker="NotificationSubjectCaption"&gt;ООО Ромашка&lt;/a&gt;

Ну и задача тупо заполнить в элементе style="color:orange"

 

 

Роман,

А почему "wrapStyles"? Посмотрите в доках - свойство styles должно совпадать с тем, что прописано в шаблоне (tpl) класса компонента.

Попробуйте вместе wrapStyles прописать hyperlinkStyle - должно заработать.

Роман, а в чем собственно проблема?

В runtime получается реализовать? Наверное да. В этом случае вам нужно просто написать свой css с нужными селекторами. И более ничего.

К примеру selector для reindings

label[id^="VisaNotificationsSchemaNotificationSubjectCaptionLabel"][id$="VisaNotificationsTabModule"] {
  color: red;
}

 

Спасибо за ответы

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

Приветы,

 

Подскажите как получать данные в 

onActiveRowAction: function(buttonTag, Id, parentOnActiveRowAction) {

                switch (buttonTag) {

                    // замещение базового метода для правильной обработки нажатия по тэгу

                    case "tagBnBackCall":

                        alert('QBackCall! = ' + Id);

Пару вопросов:

Дано Id данных есть - выбранной строки 

Как получить данные из других столбцов грида через запрос к БД

Как через this добраться к jquery желательно? 

Нравится

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

Привет,



если есть айди записи, то получение данных из бд есть на академии https://academy.terrasoft.ru/documents/technic-sdk/7-11/ispolzovanie-en…;



на примере что то вроде такого:

 

var id = Id; // Айди выбранной записи
var esq = Ext.create("Terrasoft.EntitySchemaQuery", { rootSchemaName: "Contact" }); // Таблица куда запрос
esq.addColumn("Name");//К примеру имя, можно добавить остальные колонки, подробнее по ссылке
esq.getEntity(id, function (result) {
    if (!result.success) {
        this.showInformationDialog("Ошибка запроса данных"); 
        return;
    }
    // Какие либо действия 
    this.showInformationDialog(result.entity.get("Name");//Например вывести имя
}, this);

Тут показал пример getEntity так же рекомендую посмотреть на реализацию getEntityCollection и добавление колонок в запрос.

"Как через this добраться к jquery желательно? " не понял, что имеется ввиду

Сериков Асхат Кайратович,

Привет, этот пример видел, но есть нюансы, может что-то не настроил или версия не та. По клиентской части вижу в require что jquery есть но не вызывается и в консоли хрома ее как нет, вот код:

                  onActiveRowAction: function(buttonTag, Id, parentOnActiveRowAction) {

                switch (buttonTag) {

                    /*

                    case "edit":

                        alert('Нельзя открыть кандидата!');

                        break;

                    case "copy":

                        alert('Нельзя копировать кандидата!');

                        break;

                    case "delete":

                        alert('Нельзя удалить кандидата!');

                        break;

                    */

                    // замещение базового метода для правильной обработки нажатия по тэгу

                    case "tagBnBackCall":

                        alert('QBackCall! = ' + Id);

                        alert(jQuery.fn.jquery);

                        alert($.fn.jquery);

                        var userId = Terrasoft.core.enums.SysValue.CURRENT_USER.value;

                        var uId = "#SxCandidateSectionDataGridGrid-item-" + Id;//SxCandidateSectionDataGridGrid-item-5713f1f2-7ac2-4970-a3b6-d1ad822335ee

                        alert(uId);

                        var mobNumber = this.JQ(uId).find('a').attr('title');

                        alert(mobNumber);

О JQuery: ни один из алертов где есть jquery не работает, каждый из них по отдельности комментировал, т. е. исключено что ошибка в одном и другие просто не идут. Пробовал просто с $(uId).find('a').attr('title'); and this.JQ(uId).find('a').attr('title'); and this.$(uId).find('a').attr('title'); - в общем у меня в строке грида есть Id и рядом идут нужные данные т. е. по факту мне запрос делать - лишнее. Но попробую с ним тк надо учиться и все такое

QArt,

понял, так глубоко я не копал, надобности использовать jquery как таковой не было. 

Вообще получить значения в гриде можно если пройтись по гриду, сам не пробовал, но думаю это то что вам нужно https://academy.terrasoft.ru/documents/technic-sdk/7-11/kak-dobavit-dey…; особенно метод 

showOrderInfo 

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

Сериков Асхат Кайратович,

Спасибо! Cделал, получилось без JQuery.

Учусь, составил себе план:

1) Подменить ViewModel

2) Все-таки, разобраться с JQuery

3) Попробовать сделать тоже самое через var esq = Ext.Create(...

Посоветуй ссылками или кусками кода :)

QArt,

Не за что, сам тоже продолжаю учиться

Для меня Академия лучший источник,

куски кода подходят только по ситуации,

но например чтобы вытащить данные через entitySchemaQuery то код который я писал в первом комментарии выше должен помочь.

По JQuery и ViewModel не имею идей к сожалению

Сериков Асхат Кайратович,

Спасибо. Вот вопросы по запросам к данным в БД. Если нужно читать и писать данные то как и где это делать? Прямо в замещающем клиентском модуле или лучше что-то создавать если создавать то как все это подключать, какие практики?

QArt,

Думаю зависит от ситуации, можешь привести пример в каком контексте будешь писать и читать? 

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

Сериков Асхат Кайратович,

Сейчас сделал кнопку позвонить в кандидатах, он выросли из контактов. Сделал кнопку "позвонить", убрал лишние кнопки. Теперь нужно считать сколько раз звонили кандидату, на кнопке выводить "позвонить (2, 3, ...)". Для реализации создал объект - он стал таблицей, 

AACandCall - idcand, callcount, calltime, calldate наследуется от базового объекта

            //0 если первый раз звонят, -1 if Error

            getCallCount: function (candId) {

                // Создаем экземпляр класса Terrasoft.EntitySchemaQuery с корневой схемой [Contact].

                var esq = this.Ext.create("Terrasoft.EntitySchemaQuery", {

                    rootSchemaName: "AACandCall"

                });

                // Добавляем колонку с именем основного контакта контрагента, который относится к данному контакту.

                esq.addColumn("CallCount");

                // Получаем одну запись из выборки по [Id] объекта карточки и отображаем ее

                // в информационном окне.

                esq.getEntity(candId, function(result) {

                if (!result.success) {

                    // обработка/логирование ошибки, например

                    //this.showInformationDialog("Ошибка запроса данных");

                    return -1;

                }

                return result.entity.get("CallCount");

                }, this);

            },


пока это все что смог написать, возвращает undefined т. е. без ошибки работает, еще надо вот такое написать

            updateCount: function (candId, callCount) {

                return -1;      

            },

            //всегда пишет 1 в callCount

            insertCount: function (candId) {

                return -1;      

            },

Вопрос там ли я это вообще делаю и теми ли инструментами???

QArt,

Первый вопрос должен быть почему он вообще возвращает undefined.

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

Если все что нужно это только обновить то как мне кажется подходит клиентская схема.

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

Сериков Асхат Кайратович,

Сделал. Столкнулся с задачей: синхронизации асинхронных вызовов. Функция getCallCount в запросе если такого нет вызывала insertCount(candId), если есть то updateCount(candId, callCount+1). Вообще мне как программисту с бэкенда не понятно как так делать вызовы к БД с клиента к тому же прямо к ОнКлик, но как фронтендер не знаю как это нормально сделать :)

Как обработать событие которое возникает при выборе строки???, когда открывается меню с кнопкой позвонить, ей надо надпись менять "позвонить" или "позвонить(номер звонка)" [важно что эта кнопка нами же добавлена по operation: insert] т. е. будет вызвана функция как getCallCount только у нее вместо insertCount and updateCount будет устанавливаться кнопке соответствующий caption. Вот мой уровень развития на фронтенде только так позволяет это сделать, а как это по нормальному делать не знаю :)

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

Добрый день!

Сотрудники отправляют письма из bpm. Зачастую при копировании текста в буфер, а затем вставка в тело email текст вставляется 6 раз. Пробовали одновременно вставлять текст на других сайтах, в документах. Текст вставляется 1 раз.

Быть может кто-то сталкивался с подобной проблемой?

 

Нравится

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

Александр, здравствуйте!

А копирование выполняется в тело письма при отправке email вручную по процессу, или же вызовом из ActionDashboard по изображению письма?

И текст копируете с HTML форматированием? Попробуйте вставить этот же буфер в любое поле с поддержкой HTML (например, поле примечания в любом базовом разделе) и посмотрите, в каком виде сохранится значение.

Логвин Андрей Витальевич,

Добрый день!

Копируем при отправке письма вручную.

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

Чакур Александр,

Скорее всего, проблема возникает в связи с сторонними программами, которые используют\модифицируют буфер обмена. Возможно, HTML обертка самого элемента отправить email конфликтует.

Я бы рекомендовал обратиться в техническую поддержку с полным описанием проблемы.

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

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

Установил bpm на Windows Server 2016.

Ввожу логин и пароль на странице авторизации. Реакции никакой. Но в консоли появляются следующие ошибки:

Failed to load resource: the server responded with a status of 404 (Not Found). В ролях сервера установил все галочки для (Веб-сервер(IIS) - Веб-сервер, Веб-сервер(IIS) - Средства управления)

Точно такой же сайт прекрасно работает на Windows Server 2012, но на 2012 IIS 8, а на сервере 2016 IIS 10. Может для 10-й версии какие-то дополнительные настройки нужно указывать?

Прикрепленные файлы

Нравится

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

Здравствуйте, Кирилл!

Дополнительных настроек касаемо iis 10 - нету.

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

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

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

Всем привет, столкнулся с проблемой

В лидах одна из колонок "Последний комментарий", это комментарий активностей в контексте карточки лида. В реесте все отображается, но -->

Расширенный фильтр:

Последний комментарий = заполненно

Не работает, выдает что ничего не найдено

Нравится

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

Здравствуйте, Роман!

Могли бы Вы, пожалуйста, прислать скриншот построения данного фильтра?

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