Добрый день!

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

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

 

Нравится

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

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

Таким образом вы сможете видеть, кто когда что изменил. Ну например на складе остаток по товару был 100, сегодня 80, завтра будет 60. 

И вы эту динамику сможете посмотреть в отдельной детали в разделе.

 

Ну или если вас не устраивает дополнение, можно создать деталь с полями.

Дата изменения, кол-во на складе. Ну и т.д. и заполнять данную деталь через БП стартом которого будет изменение раздела. 

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

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

Добрый день!

На портале самообслуживания 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 комментарий

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

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

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

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

Посоветуйте, пожалуйста, есть ли возможность для своего пакета создать набор параметров сеанса, который будет инициализироваться при авторизации пользователя. Чтобы этот набор можно было читать на клиенте. Что-то вроде глобальных переменных как 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,  попробую кеширование.

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

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

Нравится

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

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

Данное поведение может происходит из-за множества причин:

1. Изменение настроек почтового ящика и провайдера;

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

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

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

Всем привет.

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"]

 

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

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

Добрый день!

Можно ли как-то убрать из Центра уведомлений информирование о том, что кто-то прокомментил ваше сообщение?

Это позволит меньше отвлекаться на Центр уведомлений и больше сидеть в ленте, и уберёт часть дублей сообщений в Ленте и в Центре

Нравится

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

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

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

Shevchenko Andrey,

Спасибо.

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

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



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

Такое пожелание уже зарегистрировано.

Настоятельно не рекомендую Вам скрывать данную вкладку, так как она отображает активности по процессам.

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

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

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

Версия 7.11.

Есть типовой фильтр периода:

var periodFilter = this.Terrasoft.createFilterGroup();
periodFilter.logicalOperation = Terrasoft.LogicalOperatorType.AND;
periodFilter.add("UsrDueDate", this.Terrasoft.createColumnFilterWithParameter(
	this.Terrasoft.ComparisonType.GREATER_OR_EQUAL, "UsrDueDate",
	UsrFilterStartDate));
periodFilter.add("UsrStartDate", this.Terrasoft.createColumnFilterWithParameter(
	this.Terrasoft.ComparisonType.LESS_OR_EQUAL, "UsrStartDate",
	UsrFilterDueDate));
if (fixedFilters.contains("PeriodFilter")) {
	fixedFilters.removeByKey("PeriodFilter");
}
fixedFilters.add("PeriodFilter", periodFilter);

Здесь UsrFilterStartDate, UsrFilterDueDate - значения даты начала и конца периода, указанные в фильтре (например, такой фильтр используется в разделе Активности), UsrStartDate, UsrDueDate - соответственно, даты начала и завершения в некотором объекте. В результате находятся все записи, которые хоть каким-нибудь "боком" попадают в заданный диапазон.

Проблема в том, что есть записи, в которых указана только дата начала UsrStartDate, т.к. запись ещё не "закрыта", то UsrDueDate пока пуста. Как сделать, чтобы такие записи тоже попадали в фильтр? Сейчас они не попадают, т.к. в колонке UsrDueDate пусто.

Нравится

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

Добрый вечер.

Дело в том, что при фильтрации на сервер посылается не совсем очевидный запрос, а именно: выбираются записи, в которых дата закрытия больше указанной даты начала, и соответственно, записи в которых дата начала меньше указанной даты конца периода. Поэтому, когда вы не ставите дату завершения будет происходить сравнение с null, и элемент не выбирается. Можете перехватить фильтры и удалить ненужный(«PeriodFilter») и установить свой. В ActivitySection это можно сделать в методе getFilters.

Нашёл способ, может кому понадобится:

 

var periodFilter = this.Terrasoft.createFilterGroup();
				periodFilter.logicalOperation = Terrasoft.LogicalOperatorType.AND;
 
 
				periodFilter.add("UsrStartDate", this.Terrasoft.createColumnFilterWithParameter(
					this.Terrasoft.ComparisonType.LESS_OR_EQUAL, "UsrStartDate",
					UsrStartDate));
 
				var dueDateFilter = this.Terrasoft.createFilterGroup();
				dueDateFilter.setLogicalOperation(1);
 
				dueDateFilter.add("NotUsrDueDate", this.Terrasoft.createColumnIsNullFilter("UsrDueDate"));
				dueDateFilter.add("UsrDueDate", this.Terrasoft.createColumnFilterWithParameter(
					this.Terrasoft.ComparisonType.GREATER_OR_EQUAL, "UsrDueDate",
					UsrDueDate));
 
				periodFilter.add("dueDateFilter", dueDateFilter);

То есть задаётся ещё одна группа фильтров, объединённых логической операцией ИЛИ, которая подключается внутрь группы фильтров.

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

Здравствуйте. Скажите пожалуйста как реализовать сумму прописью в ворде через макросы. 

По инструкции, которая находится в академии 

 // Метод возвращает текущую дату.
                return _userConnection.CurrentUser.GetCurrentDateTime().Date.ToString("d MMM yyyy");

а что требуется прописать в модуле что бы сумма прописью 

Нравится

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

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

Для числовых колонок используйте базовый макрос [#NumberRU#] - https://academy.terrasoft.ru/documents/technic-sdk/7-11/bazovye-makrosy…

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

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

Никульшина Алёна

прочитайте, пожалуйста. статью. Там ничего не сказано о создании модуля

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

Добрый день!

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

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

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

Нравится

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

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

Записать значение из дашборда в запись не получится. 

Данную задачу можна реализовать с помощью бизнес процесса. Логика работы будет следующая:

1) Стартовый сигнал добавление или изменение записи (можно реализовать как на добавление так и на изменение);

2)  С помощью элемента "Читать данные" считаем сумму оплат по определенному поставщику;

3) С помощью элемента "Изменить данные" записываем значение в необходимое поле.

 

Новак Руслан,

Скажите пожалуйста,

В элементе "Изменить данные" ставить условие Пользовательское поле в разделе=Читать данные проекта.Сумма оплаты поставщику ?

Просто раздел Проекты никак не связан с Пользовательским разделом, поэтому вопрос как связать?

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

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

Отвечаю на Ваши вопросы:

1) В принципе верно, но все зависит от того какую именно Вы хотите посчитать сумму.

2) А прямая связь и не нужна. К примеру если в пользовательском разделе и в проекте есть поле Поставщик, то можно выстроить связь таким образом.

3) Все зависит только от фильтра, который Вы установить в элементе "Читать данные". Т.е. можно посчитать как по одному поставщику, так и сразу по всем.

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