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



Подскажите, пожалуйста, возможно ли в одной системе совмещать различные методы аутентификации. Например, аутентификацию с помощью технологии единого входа (Single Sign-On) , аутентификацию Windows и аутентификацию bpmonline. Или эти способы несовместимы?

Нравится

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

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

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

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

Всем привет

Картинка под катом

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

Подскажите это нормально поведение? Просто оно бесит всех наших менеджеров

Можно ли это поведение оключить?

 

Изображение удалено.

Нравится

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

"и навести курсор мыши на любую ссылку,"

На всех не тестил, но завод - это скорее всего контрагент. А у контрагента тоже есть миникарточка. И соответственно при наведении на запись система выжидает тайминг и попытается открыть миникарточку контрагента, а у вас открыта активность, которую надо закрыть прежде чем отрендерить новую миникарточку для другой сущности.

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

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

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

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

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

Приветы,

 

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

 

Пробовал сделать поле типа справочник и тогда оно становится Guid в коде

В следующем коде было вместо TEXT, у поля BpCandidate указан GUID

Так вот в консоли хрома видел ошибку уровня c#, а именно System.String не могу преобразовать в System.Guid и как быть? 

 

Удалив столбец, пересохранив и добавив его снова как строка 50 символов и вернув ТЕКСТ вместо ГУИД все заработало, но как быть с гуидами в инсерт запросами???

 

insertCount: function (candId) {

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

                var insertQuery = this.Ext.create("Terrasoft.InsertQuery", {

                    rootSchemaName: "BpCandidateCall"

                });

                insertQuery.setParameterValue("CallCount",

                    1,

                    this.Terrasoft.DataValueType.INTEGER);



                insertQuery.setParameterValue("BpCandidate",

                    candId,

                    this.Terrasoft.DataValueType.TEXT);

                var dt = new Date();

                insertQuery.setParameterValue("CallDate",

                    dt,

                    this.Terrasoft.DataValueType.DATE);

                insertQuery.setParameterValue("CallTime",

                    dt,

                    this.Terrasoft.DataValueType.TIME);

                insertQuery.execute(function () {

                    //this.loadActivities();

                }, this);

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

            },

Нравится

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

Добрый день!



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

 

Нравится

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

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

При переносе пакета с кейсом, должны автоматически устанавливаться все привязки и связи к пакету. Советую Вам проверить наличие привязок к SysDcmSettings и SysDcmSchemaInSettings. 

Также проверьте, что при открытии карточки у Вас корректно настроено условие запуска кейса (можно посмотреть в дизайнере кейсов).

Либо же более детально опишите Ваш кейс, для решения проблемы.

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

Подскажите,

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

Нравится

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

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

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

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

Спасибо, Юлия, за отклик!

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

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

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

Скажите, тема вообще возможна?

Изучение исходников на предмет наличия Terrasoft.ConfigurationEnums.CardOperation.VIEW показало лишь единичный случай употребления этой константы, и то в контексте миникарточки.

Остается либо Механизм блокировки полей страницы редактирования либо в коде "enabled": false для каждого элемента?

Нравится

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

Добрый день, Борис!

Можно, конечно, использовать бизнесс-правило для каждого поля (или enabled:false), но во-первых, много кода, во-вторых, зачем изобретать велосипед, если "Механизм блокировки полей страницы редактирования" как раз и придуман для блокирования всех полей на редактирование с помощью пары небольших движений. А Terrasoft.ConfigurationEnums.CardOperation.VIEW используется исключительно в контексте миникарточки.

Золотарев Артем Андреевич,

Как пожелание, было бы очень удобно механизм блокировки в openCardInChain() включать через operation: "view".

Показать все комментарии
Вопрос
C#

Приветы, подскажите

Как писать на c# и чтобы это было доступно с клиента?

Можно пример wcf? (с одним-двумя методами, например, который что-нибудь из БД платформы выдает в JSON) 

Нравится

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

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

Собственно в 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?

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

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



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

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