Добрый день, Коллеги! Поделитесь пжлст какими  методами получаете отчет с выгрузкой в эксель такого плана:

Продукт -  Постащик -  Счет - и т.д.,

т.е, данные с детали Продукты в счете .

При этом их нужно отфильтровать за период и по Состоянию оплаты счета.

Новый продут excel reports бы решил данную задачку, да не умеет он пока фильтровать данные, если объектом отчета является деталь.

 

Спасибо!!

Нравится

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

Мы создавали сначала раздел, вынесли его в отдельное рабочее место. Потом добавили его в виде детали в счет и всё что туда добавлялось - падало в наш раздел, где мы уже всё фильтровали и только после этого делали выгрузку.

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

Alex Zaslavsky,

Спасибо большое! Думаю подойдет решение! В  карточку в разделе нужно все поля с детали добавить или как связь именно с деталью сделать? 

Елена К,

У нас изначально не было раздела "Счет" (bpm'online sales team), и мы создали этот раздел, потом под него создали раздел "продукт в счете" и, собственно, на основе этого раздела уже прикрепили деталь к разделу Счет. 

Я так понимаю, что у Вас уже рабочая система? Тогда я не знаю как Вам на основе стандартного объекта "продукт в счете" создать раздел, поэтому и дописал, что, возможно, Вам помогут знатоки. Я в этом не силён.

Alex Zaslavsky,

В любом случае большое спасибо!)

 

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

Доброго дня.

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

Сейчас выглядит так: после заполнения полей по кнопке запускается процесс. Если цепочка прошла ок, то выводится автогенерируемая страница "Успешно", далее по цепочке если не открывать страницу редактирования, открывается карточка с незаполненными полями. Поэтому помещаем элемен "открыть станицу редактирования". К сожалению, она генерирует активность, которую надо сохранить. 

То есть мешает это лишнее "Сохранить".

Или есть способ генерировать некий messagebox  не уходя с карточки или способ открыть существующую карточку без создания активности?

Нравится

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

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

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

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

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

Доброго дня. К сожалению, решение не об этом.

Дело в том, что элемент "открыть страницу редактирования" генерирует таск и выводит на карточке кнопки "Save", "Perform Later", "Cancell". 

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

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

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

 

ZAN,

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

Я бы решал так:

1. Запускать процесс из необходимой карточки (условно, Счет), например, установив запуск через запуск по записи.  После этого выполнить все необходимые действия по процессу, отправить сигнал на обновление значений всех полей карточки Счет, как описано в предыдущем комментарии и в посте (и добавьте в using процесса Terrasoft.Configuration). Таким образом, Вы сможете обойтись без лишнего открытия страницы редактирования, и поля будут заполнены.

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

Похожий кейс тут: https://community.terrasoft.ru/questions/zaversenie-processa

Будем колхозить...

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

Добрый день!

На портале самообслуживания PortalMainPageModule создаем виджет Список DashboardGrid (он же блок итогов Список, он же реестр в итогах) и в него выводим, например контрагентов.

Если страницу смотреть пользователем с ролями "Все сотрудники компании"+"Системные администраторы", то в колонке Название будет ссылка, по которой можно перейти на страницу редактирования контрагента.

Если же заходить с ролью "Все пользователи портала", в колонке span, перейти никуда нельзя.

Есть ли такая возможность для пользователей с ролью "Все пользователи портала" сделать переход в страницы редактирования объектов, указанных в качестве источника данных для виджета типа список?

Нравится

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

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

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

С уважением, Антон.

Антон Малий,

Антон, доступ есть.

Регулируется раздачей прав на объекты и двумя справочниками:

  1. Список объектов, доступных пользователям портала
  2. Список полей объектов на портале

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

Выход есть, даже два:

  1. инструкция Установка+разделов+на+портале.doc, она упоминается в одном из топиков на этом сайте, например, мне ее выполнение показалось через чур трудоемкой операцией, я провел исследования и выяснил способ  2, гораздо проще.
  2. замещаем модуль DashboardListedGridViewModel, копируем из родителя весь код, метод addColumnLink модернизируем:
addColumnLink: function(item, column) {
	//return this.mixins.GridUtilities.addColumnLink.apply(this, arguments);
	this.mixins.GridUtilities.addColumnLink.apply(this, arguments);
	var isSSPUser = this.Terrasoft.CurrentUser.userType === this.Terrasoft.UserType.SSP;
	var entitySchemaName = this.getGridEntitySchemaName();
	var columnPath = column.columnPath;
	if (isSSPUser && entitySchemaName === "Наш_Раздел" && columnPath === "Наша_Колонка") {
		var scope = this;
		var onColumnLinkClickName = "on" + columnPath + "LinkClick";
		item[onColumnLinkClickName] = function() {
			var recordId = item.get("Id");
			if (!recordId) {
				return "";
			}
			var displayValue = item.get("Наша_Колонка");
			if (scope.Ext.isEmpty(displayValue)) {
				return "";
			}
 
			var editPageName = entitySchemaName + "Page";
			var url = Terrasoft.workspaceBaseUrl +
				"/Nui/ViewModule.aspx#CardModuleV2/" + editPageName + "/edit/" + recordId;
			return {
				caption: displayValue,
				target: "_self",
				title: displayValue,
				url: url
			};
		};
	}
},

 

Отдельное спасибо Варфоломеев Данила за идею!

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

Добрый день!

У одного из менеджеров при открытии разделов Контрагенты и Продажи открываются Итоги раздела, а не списочное представление.

Данная проблема возникает из-за дублей записей для данного пользователя в SysProfileData. Необходимо удалить дубли и разделы будут открываться корректно.

Дубли мы нашли, подскажите пожалуйста, удалять же нужно более новую запись?

Нравится

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

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

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

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

Добрый день!

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

Было бы замечательно, если бы можно было в разделе "Звонки" подписаться на событие от бизнес-процесса (например), который бы следил за окончанием звонков, и своевременно оповещал бы об этом всех подписавшихся клиентов. Есть ли такая возможность?

Нравится

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

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

Есть возможность отправить сообщение из процесса в клиентский модуль с помощью веб сокетов, подробно вопрос рассмотрен в посте.

При реализации добавьте в using процесса Terrasoft.Configuration .

Для обновления наполнения реестра можете воспользоваться this.reloadGridData()

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

Огромное спасибо!

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

Может есть уже готовая переменная?

Или все таки придется писать код на шарпе и его результат запрашивать на фронтенде...

Нравится

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

Добрый день.

Такой переменной нет. Нужно писать на шарпе. Можете создать сервис, который возвращает смещение часового пояса, и получив один раз это значение, сохранив его, можете на фронтенде вычислять нужное время.

 

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

Создал редактируемый реестр согласно документации. 

"imageConfig": {"bindTo": "Resources.Images.RemoveIcon"}

Мне нужно сменить иконку корзины на крестик. Не важно как. Готов, даже загрузить свою.

Но не получается ее правильно подключить. Как это сделать правильно?

Нравится

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

Добрый день.

В детали нужно добавить "activeRowActions", в котором переопределить иконку. Реализацию можно посмотреть в ProductDetailV2UIv2.

                        

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

Добрый день!

Помогите справиться с такой задачей:

Имеется справочник QualifyStatus, он выведен на страницу LeadPageV2 через ActionsDashboard, в разделе attributes страницы указаны дополнительные колонки кроме id и value:

"QualifyStatus":     

            { lookupListConfig:         

                    { columns: ["Name", "StageNumber", "UsrIsTaken", "UsrIsOpportunity", "UsrIsDisqualified"] } 

            }

Но они не доступны в коде страницы работы через this.get("QualifyStatus").

Если же добавить на страницу Lookup с QualifyStatus и работать со справочником через него то данные поля становятся доступны

Нравится

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

Владимир, здравствуйте!

"выведен на страницу LeadPageV2 через ActionsDashboard,"

Уточните, пожалуйста, как именно выведен через ActionsDashboard? где физически отображается поле?

Дмитрий, добрый день  

Я описал то, как actions dashboard реализован в стандартном функционале лидов 

Просто, необходимо реализовать некоторые бизнес правила в зависимости от параметров стадии Лида  а не привязываться к id стадии.

И с этим как раз возникают проблемы, описанные в вопросе

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

Мотков Илья,

Да, извернулись по-всякому.. Просто, совсем неожиданно, что lookup работает одним способом, а с ActionsDashboard проблемы

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

Добрый день всем !

Посоветуйте, пожалуйста, есть ли возможность для своего пакета создать набор параметров сеанса, который будет инициализироваться при авторизации пользователя. Чтобы этот набор можно было читать на клиенте. Что-то вроде глобальных переменных как Terrasoft.SysValue.CURRENT_USER.value.

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

Привожу отрывок кода, кот. выполняется при нажатии на кнопку на форме записи Opportunity:

this.Terrasoft.SysSettings.querySysSettingsItem("SAMServerURL", function(_SAMServerUrl) {

                    SAMServerUrl = _SAMServerUrl;

                }, this);                

this.Terrasoft.SysSettings.querySysSettingsItem("SAMServerOrganizationID", function(_OrgID) {

                    OrganizationID = _OrgID;

                }, this);       

                var UserName = "";

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

                    rootSchemaName: "G2MHGroup"

                });              

                esq.addColumn("G2FirstName", "FirstName");

                esq.addColumn("G2BPMUser", "BPMUser");

                esq.filters.add("G2BPMUser", Terrasoft.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL, "G2BPMUser", Terrasoft.SysValue.CURRENT_USER.value));

                esq.getEntityCollection(function (result) {

                    if (!result.success) {

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

                        return;

                    }

                    result.collection.each(function (item) {

                        UserName = item.get("FirstName"); 

                ReadOnlyFlag = "false";

                RequestString = SAMServerUrl + "ShowSheet.aspx?OrgID="+OrganizationID+"&Popup=Y&User="+UserName+"&Product=Bluesheet%20&ProductKey="+activeRow+"&ReadOnly="+ReadOnlyFlag+"","Blue Sheet"

                

                var str = "width=1003, height=674, scrollbars=yes, status=0, menubar=no, resizable=yes";              

                window.open(RequestString, str);

                    });

                }, this);

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

Спасибо !

 

 

 

 

 

Нравится

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

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





Начиная с версии 7.11.3, в приложении появился файловый контент

(есть статья на академии), там имеется механизм bootstraps файлов, это файлы код которых выполняется с момента загрузки JS ядра Terrasoft, но до момента загрузки конфигурации, там можно выполнить запрос в базу данных и сохранить результаты в глобальную переменную в среде JS.

 

Если версия более старая, то можно определить свой метод в схеме и задействовать механизм ленивой инициализации

(с кешированием в глобальной переменной в среде JS). Информацию по реализации ленивой инициализации, можно найти в интернете.

 

Также можно использовать механизм кеширования.

 

Спасибо большое  !  У меня версия 7.11.1,  попробую кеширование.

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

Всем привет.

LeadSection - нужно в методе запустить выполнение бизнес процесса,

в LeadPage - все нормально работает

Подскажите из-за чего ошибка? 

Ошибка:

"Uncaught TypeError: Cannot read property 'executeProcess' of undefined" 

 

//LeadSection
 
//Подключаю ProcessModuleUtilities
define("LeadSectionV2", ["ConfigurationConstants", "BaseFiltersGenerateModule","jQuery","ProcessModuleUtilities"],
    function(ConfigurationConstants, BaseFiltersGenerateModule,ProcessModuleUtilities) { 
   .....
 
 
methods:{
 
 widgetSearchSimilar : function(){
 
       var context = this;
 
       //Запускаем БЦ
       	var args = {    
                    sysProcessName: "UsrProcessGetAccountRights",
                    parameters: {
                                 AccountId: "123"
                                }
                    };
    // Запуск пользовательского бизнес-процесса.("Передача прав")
     ProcessModuleUtilities.executeProcess(args); 
 
 }      
 
}                                                      
 
 

 

Нравится

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

Оказывается важен порядок в этой секции

define("LeadSectionV2", ["ConfigurationConstants", "BaseFiltersGenerateModule","jQuery","ProcessModuleUtilities"]

Jquery переносим в конец и все работает.

Т.е так

define("LeadSectionV2", ["ConfigurationConstants", "BaseFiltersGenerateModule","ProcessModuleUtilities","jQuery"]

 

Последовский Роман,Спасибо Господи как я мучался ))

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