Вопрос

Добрый день. Версия 7.12.

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

Возникает при открытии вкладки с деталями, страница на этом перестаёт грузиться и зависает.

У меня такой же вопрос

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

Уточните, после каких изменений начала возникать описанная проблема?

Стандартно таких деталей нет. Если их схемы ставили из пакета, что-то могли развернуть неверно или не полностью.

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

В нативном пакете FinAppLanding есть процесс "Синхронизация анкетных данных с данными физ. лица " который падает на последней строке :

appFormToContactHelper.SynchronizeContactByAppForm(appFormId);

вызывая ошибку "Недостаточно прав для изменения записи в объекте" , конкретно :

System.Security.SecurityException: Недостаточно прав для изменения записи в объекте "Contact" at Terrasoft.Core.Entities.Entity.UpdateInDB(Boolean validateRequired) at Terrasoft.Core.Entities.Entity.InternalSave(Boolean validateRequired, Boolean setColumnDefValue) at Terrasoft.Core.Entities.Entity.Save(Boolean validateRequired, Boolean setColumnDefValue) at Terrasoft.Configuration.AppFormToContactHelper.AppFormToContact(Dictionary`2 columnValues, Guid appFormId) at Terrasoft.Configuration.AppFormToContactHelper.SynchronizationContact(Guid appFormId) at Terrasoft.Configuration.AppFormToContactHelper.SynchronizeContactByAppForm(Guid appFormId) at Terrasoft.Core.Process.AppFormToContactSyncProcessCustom1.AppFormToContactSyncScriptTaskExecute(ProcessExecutingContext context) at Terrasoft.Core.Process.ProcessFlowElement.Execute(ProcessExecutingContext context) The Zone of the assembly that failed was: MyComputer

Что с ним не так и как исправить ?

У меня такой же вопрос

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

Значит, у пользователя, под которым запущен БП, нет прав на изменение этого физ. лица или одного из полей. Проверьте права доступа на запись в разделе физ. лиц, есть ли права на изменение у этого пользователя или какой-то из его групп.

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

 это я уже догадался. Вопрос как узнать КТО ЭТОТ пользователь ?

Вы.

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

Коллеги, а как настроить Lead source URL, чтобы определялся source=google при переходе с любого google.com, google.ru и других сайтов (которые, по идее не являются поддоменами)?

У меня такой же вопрос

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

А что туда попадает при нынешних настройках? Если в разных адресах есть одинаковая часть «google», можно написать какой-нибудь процесс, который при сохранении лида считывает и заменяет нужным значением то же или другое поле объекта. В процессе указать список слов-подстрок, по упоминанию которых определяет источник-поисковик.

Зверев Александр пишет:

А что туда попадает при нынешних настройках? Если в разных адресах есть одинаковая часть «google», можно написать какой-нибудь процесс, который при сохранении лида считывает и заменяет нужным значением то же или другое поле объекта. В процессе указать список слов-подстрок, по упоминанию которых определяет источник-поисковик.

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

Но, возможно, всё должно решаться как-то проще. Задача-то стандартная 

Тут пишут, что Google и Yandex можно определять по “gclid” и “yclid”, но это только для рекламных ссылок.

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

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

Да, нужно добавить много разных доменных имён google.

https://ru.wikipedia.org/wiki/%D0%A1%D0%BF%D0%B8%D1%81%D0%BE%D0%BA_%D0%B4%D0%BE%D0%BC%D0%B5%D0%BD%D0%BE%D0%B2_Google

И ещё подозреваю, что он постоянно изменяется и пополняется

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

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

В процессе пытаюсь получить UserConnection :

var userConnection = HttpContext.Current.Session["UserConnection"] as UserConnection;

однако получаю ошибку :

System.NullReferenceException: Object reference not set to an instance of an object. at Terrasoft.Core.Process.AppFormToContactSyncProcessMethodsWrapper.AppFormToContactSyncScriptTaskExecute(ProcessExecutingContext context) at Terrasoft.Core.Process.ProcessFlowElement.Execute(ProcessExecutingContext context)

В чем может быть причина? Как исправить ?

У меня такой же вопрос

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

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

var service = MyService();
service.UserConnection = userConnection;
service.MyMethod(param1, param2);

В самом бизнес-процессе UserConnection стоит получать как context.UserConnection или Get<UserConnection>("UserConnection"). Во встроенном процессе просто свойство UserConnection есть.

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

При настройке раздела "Активности" основного рабочего места в мобильном приложении получаю ошибку при попытке открыть активность на просмотр в мобильном приложении. Когда там было 27 полей тогда выдавало ошибку что в сегменте не может быть больше 21 поля, после изменения до 21 поля пишет что не больше 13. так все же сколько можно использовать молей для активности (при этом в других разделах указывает ограничение 15 полей и с 15 полями все работает без ошибок). При этом в рабочем месте "Полевый продажи" мобильного приложения такого ограничения нет и там без ошибок отображается 27 полей.

 

У меня такой же вопрос

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

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

Данное сообщение означает что на карточку выведено 13 и более справочных полей.

К сожалению, протокол ODATA который используется для обмена данными между мобильным приложением и bpm'online накладывает такое ограничение.

Необходимо уменьшить количество справочных полей на карточке до 12. 

 

Гриценко Игорь,

А как реализовано это в полевых продажах? Если зайти на рабочее место полевых продаж в мобильном приложении - там все поля (больше 15) отображаются без ошибки.

Уменьшил до 12 полей - ошибка та же, при этом только в разделе "Активности" такая ошибка

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

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

По ссылке - https://community.terrasoft.ua/articles/kak-sdelat-filtraciu-pola-po-ex… - хорошая инструкция как задать фильтр для поиска всех записей объекта Account для которых в объекте AccountCommunication значение колонки SearchNumber равно searchValue.

А можно ли отфильтровать список всех записей объекта Account для которых нет ни одной записи в AccountCommunication?

NOT_EQUAL, createColumnIsNullFilter - не работают, т.к. поиск идёт среди существующих записей, а нужно найти все, кроме тех, которые существуют.

У меня такой же вопрос

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

Используйте агрегатные функции, например количество для вашего фильтра, те возьмите тех контрагентов для которых средств коммуникации 0

а есть примеры использования?

Интересует только клиентская часть, т.е. ESQ-фильтр https://academy.terrasoft.ru/documents/technic-sdk/7-13/rabota-s-filtra…

Примерно так

var esq = this.Ext.create(Terrasoft.EntitySchemaQuery, {
    rootSchemaName: "Activity"
});
esq.addAggregationSchemaColumn("DurationInMinutes", Terrasoft.AggregationType.COUNT, "UniqueActivitiesCount", Terrasoft.AggregationEvalType.DISTINCT);

Подробнее олисано тут

Всё равно до конца не понимаю. Это же расчёт суммы или количества.

Я могу посчитать количество средств коммуникации для конкретного контрагента. Т.е. чтобы отобрать контрагентов, у которых кол-во средств == 0, нужно перебрать значения количества для всех контрагентов по списку?

А если их тысячи?

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

Смородинов Денис,

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

select *
from Account A
where not exists (select * from AccountCommunication AC
                    where AC.AccountId = A.Id)

Такой запрос можно построить с помощью createNotExistsFilter.

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

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

Вопрос такой - в какой момент происходит добавление в список selectedRows при выборе в справочном окне с множественным выбором? Как нибудь можно его перехватить (по сути - какая функция вызывается при клике по строке/отметке чекбокса)?

Есть пункты, которые должны быть видны в списке, но их нельзя выбирать.

У меня такой же вопрос

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

Посмотрите на метод isAnySelected

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

и тем не менее, пожелания клиента.

Там список с ценами, хотят видеть всё, но чтобы выбрать можно было только те, на которые хватает денег.

Нужно смотреть в LookupPageViewModelGenerator, который генерирует такую страницу. Случайно не оно?

/**
 * Subscribe to changes selectedRows.
 * @private
 */
_subscribeOnSelectedRowsChange: function() {
	this.on("change:selectedRows", this.onSelectedRowsChange, this);
},
/**
 * Handles selected rows change event.
 */
onSelectedRowsChange: function() {
	if (!this.isMultiSelect()) {
		return;
	}
	let selectedRowsCount = 0;
	if (this.get("SelectAllMode") && this.get("usingMultiAddMixin")) {
		var filteredRowsCount = this.get("filteredRowsCount");
		if (filteredRowsCount) {
var unselectedItems = this.getUnselectedItems();
selectedRowsCount = filteredRowsCount - unselectedItems.length;
		}
	} else {
		selectedRowsCount = this.getSelectedRecords().length;
	}
	this.set("selectedRowsCount", selectedRowsCount);
},

 

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

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

Не нашёл чего-то - есть ли возможность вызвать веб-сервис (такой https://academy.terrasoft.ru/documents/administration/7-13/integraciya-…) из клиентской схемы?

В примерах вижу только вызов из бизнес-процессов.

У меня такой же вопрос

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

Вы можете вызвать сервис реализованный на C# так:

ServiceHelper.callService("UsrSaveProcedure", "ProcedureSql",
 
                function(response) {
 
                    console.log(response.ProcedureSqlResult);
 
                }, {CardId: this.get("Id")}, this);

А через вызванный сервис на клиенте, но уже на серверной части можете вызывать любые внешние веб-сервисы.
Или вы имеете ввиду, что-то иное?

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

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

Есть справочник "Объекты администрирования" и есть одно из его представлений - "Роли". А можно ли отфильтровать только организационные роли?

У меня такой же вопрос

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

SELECT *
  FROM SysAdminUnit
 where sysadminUnittypeValue =0

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

Информация есть на Академии (https://academy.terrasoft.ru/documents/base/7-13/chasto-zadavaemye-vopr…):

В этом объекте содержится организационная структура компании: пользователи, организационные и функциональные роли. Каждая запись в таблице относится к определенному типу, для которого указывается цифра (“SysAdminUnitTypeValue”). Например, организационной роли соответствует цифра “1”, роли руководителей — цифра “2”, а пользователям — цифра “4”.

Также пример фильтрации ниже:

 Рис. 1

Рис. 2

Вильшанский Дмитрий пишет:
Например, организационной роли соответствует цифра “1”, роли руководителей — цифра “2”, а пользователям — цифра “4”.

Дмитрий, а почему в системе:

с "1" только "System administrators",

а с "0" - "Sales Department", "All portal users", "Accounting Department" и "All employees"

Хотя, в списке организационных полей есть и те, и другие

Владимир Соколов,

по моему, там ещё есть разница между понятиями Организация и Подразделение.

У меня в итоге всё что мне нужно фильтруется вот таким образом:

var typeFilter = Terrasoft.createFilterGroup();
typeFilter.setLogicalOperation(1);
typeFilter.add("ManagerFilter", Terrasoft.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL, "SysAdminUnitTypeValue", 2));
typeFilter.add("DivFilter", Terrasoft.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL, "SysAdminUnitTypeValue", 1));
typeFilter.add("OrgFilter", Terrasoft.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL, "SysAdminUnitTypeValue", 0));
filterGroup.add("typeFilter", typeFilter);

 

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

добрый день.

прошу помощи зала: мне необходимо понять, разобраться и научиться программировать веб-страницы в BPM.

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

основы JavaScript известны. А вот структура и принципы формирования страниц и их редактирование в версии ВРМ мягко говоря плохо понятны. Где что находится и как это редактировать-исправлять. На сайте ничего такого не нашел.Там вообще сложно хоть что-то найти даже если оно там есть.

Как вы сами изучали ? Методом научного тыка ?

P/S.

помимо ниже следующего ещё что-то есть ?

https://academy.terrasoft.ru/api/jscoreapi/7.12.0/
https://academy.terrasoft.ru/documents/technic-sdk/7-13/sozdanie-web-ca…
https://academy.terrasoft.ru/documents/technic-sdk/7-13/opisanie-platfo…

https://academy.terrasoft.ru/documents/technic-sdk/7-13/integraciya-sto…
https://academy.terrasoft.ru/documents/technic-sdk/7-13/otladka-klients…
https://academy.terrasoft.ru/documents/technic-sdk/7-13/sozdanie-klient…
https://academy.terrasoft.ru/documents/technic-sdk/7-13/kak-sozdat-polz…
https://academy.terrasoft.ru/documents/technic-sdk/7-13/ispolzovanie-en…

https://academy.terrasoft.ru/documents/technic-sdk/7-13/web-object-ispo…

У меня такой же вопрос

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

Вам сюда.

Варфоломеев Данила, мда. Юмор оценил.

Есть бесплатные тренинги, в том числе и по разработке.

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