Вопрос

Добрый день! Для удобства уведомления пользователей в ленте хотелось бы изменить знак @ на другой. Найден метод trackingStartChars в модуле ESNHtmlEditModule, однако замещение модулей невозможно. Можно ли как-то решить эту проблему?  

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

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

Было бы удобно, если бы была такая системная настройка, которую возможно было бы изменить без внесения изменения в программный код!

Разве что делать свой модуль под другим названием, замещающий ESNHtmlEditModule, а затем во всех 5 страницах, где он упоминается, заменить на самодельную версию. Как в этом примере:

Override Ext.js class

Example override class SummaryModule

SummaryModuleV2.js

define("UsrSummaryModuleV2", ["SummaryModuleV2"],
    function() {
        Ext.define("Terrasoft.SummaryModuleOverrided", {
            override: "Terrasoft.SummaryModule",
 
           /*
            * @override
            */
            getESQ: function() {
                var esq = this.callParent(arguments);
                esq.queryKind = Terrasoft.QueryKind.LIMITED;
                return esq;
            }
        });
    }
);

On the page, which use base class you need to add dependency to overridden class:

 

BaseSectionV2

define("BaseSectionV2", ["UsrSummaryModuleV2"], function() {
    return {
        methods: {},
        details: /**SCHEMA_DETAILS*/{}/**SCHEMA_DETAILS*/,
        diff: /**SCHEMA_DIFF*/[]/**SCHEMA_DIFF*/
    };
});

 

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

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

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

Столкнулся со следующей проблемой, развернул систему локально, при входе в систему выдает ошибки - http://prntscr.com/ohdrrs
Ранее такого не наблюдал.

Версия: 7.14.2.881 

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

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

разобрался в чем дело

затер часть connectionStrings

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

Пробую использовать createInFilter. При дебаге четко вижу, что filteredAgreementsKeys это массив из двух Id. Однако фильтр не отрабатывает и ошибок в консоль не сыпется. Кто нибудь использовал in-Filter в конфигурационных схемах при открытии справочника?

openAgreementsLookup: function (filteredAgreementsKeys, scope) {
					debugger;
					var filterCollection = Terrasoft.createFilterGroup();
					var filter = Terrasoft.createInFilter("Id", filteredAgreementsKeys);
					filter.Name = "filter";
					filterCollection.add("filter", filter);
					var config = {
						entitySchemaName: "IDSBAgreement",
						multiSelect: true,
						columns: ["IDSBName", "IDSBPartnerCode"],
						filters: filterCollection
					};
 
					scope.openLookup(config, function (args) {
						scope.addCallBack(args, scope);
					}, scope);
				}

 

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

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

поменял 

createInFilter на

createColumnInFilterWithParameters и всё заработало

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

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

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

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

На версии 7.11.2 функциональность деактивации записей работает.

Для настройки нужно внести изменения в Web.config - установить значение true для настройки UseRecordDeactivation.

Также проверьте, чтобы в объекте, в котором Вы хотите использовать данный функционал, включен признак деактивации (его можно включить только в замещенном объекте - если это наследник базового или в не базовом объекте). После установки признака "Allow record deactivation" в объекте необходимо опубликовать объект, а затем скомпилировать приложение.

Я не нашел ключ UseRecordDeactivation ни в одном *.config файле. В каком месте он должен быть?

Судя по обзору пакета обновлений, деактивацию добавили в 7.11.3.

Алексей-Карягин,

В файл Web.config, который находится в папкке 

Terrasoft.WebApp, в секцию <appSettings> нужно добавить строчку:

 <add key="UseRecordDeactivation" value="true" />

Алла Савельева,не работает. Да и ладно

Значит, произведите обновление до тех версий, где оно есть.

Алексей-Карягин,

На версии 7.11.2 100% можно запустить - у меня была такая же проблема на этой версии, но мне данную функциональность подключала служба поддержки, так как сайт в облаке.

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

Если всё правильно настроено, то в таблице появится колонка 'RecordInactive', но это можно увидеть только в SQL Server Management Studio, в конфигурации в схеме объекта Вы этого не увидите.

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

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

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

Коллеги, добрый день!

У клиента в системе иногда наблюдается такое поведение: например открыт раздел Заказы , пользователь ничего не делает, абсолютно ничего. На экране появляется надпись Загрузка и пока не обновить страницу не исчезнет. 
.

В консоле такое:

На мой комментарий, что Ошибка выпадает в схеме EntityProductCountMixin и она не замещена, Террасофт выслал эти скрины и ответил:

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

Помоги разобраться, что не так делаем, наша ли тут ошибка?

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

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

В EntityProductCountMixin есть функция:

getEntityProductSchemaName: function() {
	var schemaName = this.getDependentEntitySchemaName();
	return schemaName + "Product";
},

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

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

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

Сделал велосипед - перебор результирующей коллекции <ICompositeObjectList<ICompositeObject>> элемента БП "Чтение данных" и решил поделиться для "будущих поколений".

Тестовый БП:

читаем счета

 

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

инициализируем переменную коллекции

Перебираем коллекцию и читаем поля текущей записи коллекции

Готово!

Поделиться

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

Какие тэги поставить, что бы в топе выдачи поиска по теме было?

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

а как обойти это ограничение?

Миннекаев Айдар,

я не знаю, пробовал 5000 - позволяет

Для статей при создании поста можно выбрать тип «Публикация» вместо «Вопрос».

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

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

Точно! Поменял на публикацию. А теги какие добавить? Идея то востребованная, куча вопросов на эту тему...

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

Как на Хабре, тег #никто_не_читает_теги.cheeky

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

 

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

Доброго времени суток! Есть раздел с раширенными фильтрами и показатель, который ссылается на view. В view есть формула с агрегирующими функциями. Как показатель отфильтровать по отфильтрованному реестру раздела?

Постановка задачи:

Дашборд - Показатель. Если в разделе задан фильтр – обрабатываются только данные фильтра. 

Период - текущий месяц в сравнении с таким же периодом прошлого месяца (с 01.05 по 21.05 сравниваем с 01.04-21.04). 

Алгоритм расчета: ((Количество Лидов за текущий период/Количество Лидов за предыдущий период )-1)*100%

Если не учитывать фильтр, то view формируется на основании этого SQL :

select UsrLeadId, (CAST(T1 AS float) / CAST(T2 AS float)-1)*100 as UsrResult
from
(select Id as UsrLeadId, 
count(CASE
            WHEN CreatedOn >= DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()), 0)
                And CreatedOn <= GETDATE() THEN 1
            ELSE NULL
          END) OVER () as T1, 
count(CASE
              WHEN CreatedOn > DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE())-1, 0)
                And CreatedOn < dateadd(mm,-1,getdate()) THEN 1
            ELSE NULL
          END) OVER () as T2
        from Lead
) l

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

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

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

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

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

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

Может кто сталкивался с таким поведением в бизнес процессах при их изменении?

Я редактирую какой-либо БП и сохраняю его. Далее запускаю процесс. В журнале отображается, что процесс выполнен полностью. НО! некоторые измененые или новые элементы процесса не меняют данные в записях объектов. Далее, я вставляю в БП автогенерируемую страницу, чтобы убедиться, что данные меняются в процессе, при этом ничего не меняю в других элементах. Поле этого опять запускаю процесс и ВСЕ НАЧИНАЕТ РАБОТАТЬ как надо. Если теперь удалить автостраницу то все продолжает работать. Пробовал делать полную компиляцию и не помогает. Только вставка автостраницы в процесс исправляет ситуацию.
С чем может быть связанно такое поведение системы?

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

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

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

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

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

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

Создан новый сервер BpmOnline, настроен по инструкции в Академии.

Вход через веб-интерфейс работает без проблем, при попытке входа через мобильный клиент процесс «затыкается» на пункте «Импорт данных (Контрагент)».

Не подскажете, в чем может быть проблема?

В логах IIS строки вида:

 

2019-07-03 06:51:39 192.168.104.132 POST /0/DataService/json/SyncReply/SelectQuery - 80 Egorov_v 192.168.107.173 Mozilla/5.0+(Linux;+Android+8.0.0;+SM-G570F+Build/R16NW;+wv)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Version/4.0+Chrome/75.0.3770.101+Mobile+Safari/537.36 - 200 0 0 103
2019-07-03 06:51:41 192.168.104.132 POST /0/DataService/json/SyncReply/SelectQuery - 80 Egorov_v 192.168.107.173 Mozilla/5.0+(Linux;+Android+8.0.0;+SM-G570F+Build/R16NW;+wv)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Version/4.0+Chrome/75.0.3770.101+Mobile+Safari/537.36 - 200 0 0 100
2019-07-03 06:51:41 192.168.104.132 POST /0/DataService/json/SyncReply/SelectQuery - 80 Egorov_v 192.168.107.173 Mozilla/5.0+(Linux;+Android+8.0.0;+SM-G570F+Build/R16NW;+wv)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Version/4.0+Chrome/75.0.3770.101+Mobile+Safari/537.36 - 200 0 0 39
2019-07-03 06:51:41 192.168.104.132 POST /0/DataService/json/SyncReply/SelectQuery - 80 Egorov_v 192.168.107.173 Mozilla/5.0+(Linux;+Android+8.0.0;+SM-G570F+Build/R16NW;+wv)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Version/4.0+Chrome/75.0.3770.101+Mobile+Safari/537.36 - 200 0 0 167
2019-07-03 06:52:13 192.168.104.132 POST /0/DataService/json/SyncReply/SelectQuery - 80 Egorov_v 192.168.107.173 Mozilla/5.0+(Linux;+Android+8.0.0;+SM-G570F+Build/R16NW;+wv)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Version/4.0+Chrome/75.0.3770.101+Mobile+Safari/537.36 - 200 0 0 83
2019-07-03 06:52:18 192.168.104.132 POST /0/DataService/json/SyncReply/SelectQuery - 80 Egorov_v 192.168.107.173 Mozilla/5.0+(Linux;+Android+8.0.0;+SM-G570F+Build/R16NW;+wv)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Version/4.0+Chrome/75.0.3770.101+Mobile+Safari/537.36 - 200 0 0 2258

Не знаю, куда копать, может подскажете?

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

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

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

На конференции TechPoint рассказывали о мобильной программе для спортивных ставок, которая плохо работала на демонстрации у заказчика, как оказалось, из-за плохой связи в его офисе. В Вашем случае может тоже быть что угодно. Больше подробностей можно узнать из отчёта по кнопке «Отправить лог». Если подозреваете, что дело в обновлении, попробуйте и на старом, и на новом.

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

Спасибо, Александр.

Со связью проблем нет - тестировалось на офисном wifi в том числе.

А отправить лог нет возможности - клиент "зависает" на пункте импорта контрагентов, в таком состоянии нельзя ни вернуться на предыдущий шаг на даже закрыть клиент.

Как выяснилось, проблемы возникают не на всех устройствах.

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

Смотрите логи на стороне мобильного и на стороне сайта (не IIS).

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

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

Сталкивался ли кто с необходимостью через бизнес-процесс вытянуть организационную роль контакта?

Получилось вытянуть родительскую роль "Inherited from", для всех контактов читается значение - "All employees". 

Подскажите, реально ли без побочных "костылей" с помощью процесса прочитать орг. роль?

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

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

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


Добрый день,

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

Сидоров Александр В.,

Делала в точности также, только в "Роли пользователя" читала первую запись выборки, а не коллекцию. Спасибо большое, попробую.

Тёскин Дмитрий Валерьевич,

здравствуйте, Дмитрий. 

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

Вся информация о пользователях и ролях и вхождении первых во вторые хранится в таблицах SysAdminUnit, SysUserInRole и SysAdminUnitInRole. В последнюю переносится после выполнения действия актуализации. Возможно, Вы как раз ещё не актуализировали.

Если есть доступ к базе, сделайте SQL-запросами выборку из этих таблиц: сначала по имени определите Id этого пользователя, а потом посмотрите роли, в которые он входит. Когда структура и условия фильтрации станут ясны, можно будет повторить аналогичные условия выборки средствами движка процессов.

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