Добрый день!

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

Данная проблема возникает из-за дублей записей для данного пользователя в 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) Все зависит только от фильтра, который Вы установить в элементе "Читать данные". Т.е. можно посчитать как по одному поставщику, так и сразу по всем.

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

В продолжение данного топика 

Правило дедубликации только по телефону не работает. Более того, методом научного тыка было обнаружено следующее:

1) Мы создали правило поиска по телефону и ещё одному полю UsrDedub (по аналогии правило поиска по названию и телефону).

2) Сделали значение UsrDedub = 1 в нескольких контрагентах (около 20). В лиде UsrDedub также = 1. Правило отработало корректно.

3) Сделали значение UsrDedub = 1 для всех контрагентов (около 7 500). Правило работать перестало.

4) Изменили параметр @offsetLimit в SQL запросе tsp_FindAccountSimilarRecords с 200 на 7500. Правило вновь стало работать.

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

Копаем дальше, но может кто-то может подсказать:

1) Насколько изменение @offsetLimit может быть критичным для быстродействия системы. Изменение до 10 000 визуально никаки систему не загрузили.

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

3) Либо если он работает в паре с другим правилом - в первую очередь проводить поиск именно по телефону?

Нравится

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

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

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

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

2, 3.  Для того, чтобы правило поиска похожих контрагентов в лидах работало отдельно, необходимо в хранимой процедуре tsp_FindAccountSimilarRecords изменить блок "IF @execStmt IS NOT NULL..."  на:

               SET @detailsSelectQuery = N'SELECT TOP '+ CAST(@offsetLimit as NVARCHAR) +

                ' ' + @queryColumnName + CHAR(10) + 

                'FROM ' + CHAR(10) + @schemaName + CHAR(10) +

                'WITH (NOLOCK) ' + CHAR(10) +

                'WHERE 1=1 ';

                IF @execStmt IS NOT NULL

                BEGIN

                    SET @detailsSelectQuery = 

                    @detailsSelectQuery + CHAR(10) + 'AND' + CHAR(10) + @queryColumnName + CHAR(10) + ' IN ('    + @execStmt + ')';

                END

                IF @equalQueryConditions IS NOT NULL

                BEGIN

                    SET @detailsSelectQuery = @detailsSelectQuery + CHAR(10) + 

                    @equalQueryConditions;

                END

                IF @inQueryConditions IS NOT NULL

                BEGIN

                    SET @detailsSelectQuery = @detailsSelectQuery + CHAR(10) + @inQueryConditions;

                END

                IF @detailsSelectQuery IS NOT NULL

                BEGIN

                    INSERT INTO @resultIdsTable

                    EXEC sp_executesql @detailsSelectQuery;

                END

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

Привет, подскажите, пожалуйста, в 7.11.3 в свойствах объекта появился флаг «Наследовать права доступа от объекта», как он должен работать? В документации не нашел.

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

Нравится

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

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

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

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



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

Коллеги, подскажите, пожалуйста, где можно прочитать о данной функциональности? Не могу найти в Системе данный чекбокс.

Зверев Александр,

Спасибо!!!!!

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