динамические статические группы
Технические вопросы
7.x

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

Нравится

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

Со статикой просто - запрос к таблице например AccountInFolder.
С динамикой интереснее :) в 3.х когда-то давно писал код, чтобы вытаскивал принадлежность к динамическим группам - читал параметры фильтрации из таблицы групп, применял фильтры, получал выборку записей. В 5.х и 7.х такого делать не приходилось. Посему проголосую.

Действительно, для статических подойдет

"Александр Кудряшов" написал:запрос к таблице например AccountInFolder
, как ранее написал Александр.
Если речь идет и о динамических, то в данном случае обращаться следует к таблице [AccountFolder], если уже рассматривать на примере контрагентов.

Очевидно, условия фильтрации записаны в поле [SearchData].
Но как его расшифровать и применить к записи?

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

Расшифровать можете следующим образом:

select cast(searchdata as varchar(max)) from accountfolder where id= 'F4C0A351-4D37-4B00-AA40-87452566380F'

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

"Безродный Андрей" написал:Ну а дальше писать собственный парсер.

Наверняка, bpm'online уже как-то парсит эти данные? Может, можно использовать имеющийся?

Владимир, нет такой возможности.
Данная реализация вшита в ядро.

Показать все комментарии
7.5
контакт
Контрагент
очередь
7.x

Добрый день,
в документации об очередях сказано:

"В параметрах очереди нужно выбрать объект, на основании которого она будет формироваться.
Например, для настройки параметров обработки обращений, в поле [Тип очереди] необходимо
выбрать “Обращение”, а для обработки неподтвержденных контактов — “Контакт”. В поле
[Процесс] указывается бизнес-процесс, который запускается в момент, когда оператор берет в
работу тот или иной элемент очереди."

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

Нравится

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

Добрый день, Маргарита!

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

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

а какие Процессы подключаются к таким очередям?

они есть в базовом пакете, или их нужно создавать самостоятельно?

Маргарита, Все зависит от Ваших целей.

В коробочной версии продукта bpm'online ITIL transitions предусмотрен процесс обработки обращений из очереди.

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

Показать все комментарии
аудит
журнал
Технические вопросы
7.x

Добрый день!
Подскажите, как включить журнал аудита в BPM 7.5

Нравится

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

Здравствуйте, Дарья!

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

1. Перевести значения параметров в "true" в теге конфигурационного файла web.config загрузчика (находится в корневой директории сайта):

<operationLogger useAdminUserLog="true" useAdminUnitAdminLog="true" useAdminUserRoleLog="true" useAdminEntitySchemaLog="true" useAdminEntitySchemaOperationLog="true" useAdminEntitySchemaExternalServiceLog="true" useAdminEntitySchemaRecordDefRightLog="true" useAdminEntitySchemaColumnLog="true"  useAdminOperationLog="true" useAdminSettingsLog="true" useAdminOperationAuditLog="true" useAdminClientIPLog="true" useUserAuthorizationLog="true" useUserSessionLog="true" />

2. Добавить в файл log4net.config (находится в папке Terrasoft.WebApp) следующие строчки настроек, если таковых нет:

<log4net>
	<-- другие настройки --->
	<appender name="OperationLogAppender" type="Terrasoft.Core.OperationLog.OperationLogAppender" />
	<logger name="OperationLogger">
		<level value="INFO" />
		<appender-ref ref="OperationLogAppender" />
	</logger>
</log4net>

3. Перезапустить приложение

Спасибо.
Скажите, а эти шаги описаны вообще в какой-то инструкции (администратора, например)

Дарья, Вы можете получить инструкцию по запросу в службу технической поддержки (support@terrasoft.ru).
Дополнительно прикрепляю её к данному посту. audit_log_enable.doc

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

Спасибо за инструкцию)

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

Хорошего Вам дня :)

Добрый день. Скажите пож-та журнал изменений также активируется на 7,5? Или есть инструкция и по ней тоже?

Добрый день, Марат.

Ознакомиться с инструкцией по активации журнала изменений на 7.5 Вы можете по ссылке:

http://academy.terrasoft.ru/documents/docs/product/bpm'online%20sales/enterprise/7.5.0/BPMonlineHelp/section_change_log/change_log.htm

Здравствуйте!
У меня sales ondemand Версия 7.8.0.3374
Интересует вопрос о ток как посмотреть логи изменения контакта и возможно ли это?

За контактом был закреплен один ответственный, но потом в БП его поменяли на другого (и автора тоже). Можна ли узнать кто бил ответственным и автором до изменений?

Добрый день!

Не отображаются изменения в окне Журнал аудита.
Был создан новый пользователь системы, но в журнале это событие не отобразилось. Пишет "при установленном фильтре в разделе нет ни одной записи", хотя фильтр никакой не устанавливался. Используется Демо версия 7.9.0.1228
Подскажите, в чем может быть проблема? Файлы конфигурации менял согласно приведенным выше инструкциям.

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

Для просмотра журнала аудита системных операций требуется доступ к системной операции [Просмотр раздела “Журнал аудита”], а для просмотра и выполнения архивации — [Управление разделом “Журнал аудита”]. Проверьте данные настройки.

Более подробную информацию о работе с Журналом аудита вы можете найти по следующей ссылке: https://academy.terrasoft.ru/documents/service-enterprise/7-8/razdel-zh….

Мария, спасибо за ответ. Доступ есть, но события не отображаются.

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

Показать все комментарии
7.x
настройка
свойства справочников

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

/0/Nui/ViewModule.aspx#SectionModuleV2/LookupSection/LookupEditPage/edit/bad6d2ba-9a7f-43c1-ba79-52f20347a195

(message: Uncaught Terrasoft.UnsupportedTypeException: Тип DataValueType.GUID не поддерживается )

Нравится

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

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

Для исправления данной ошибки необходимо в замещенной схеме LookupEditPage (Схема страницы редактирования раздела "Справочник") закомментировать или удалить diff SysEntitySchemaUId и diff SysPageSchemaUId:

/*{
		"operation": "insert",
		"name": "SysEntitySchemaUId",
		"values": {
			"layout": {
				"column": 0,
				"row": 5,
				"colSpan": 12,
				"rowSpan": 1
			},
			"bindTo": "SysEntitySchemaUId",
			"caption": {
				"bindTo": "Resources.Strings.SysEntitySchemaUIdCaption"
			},
			"enabled": true
		},
		"parentName": "Header",
		"propertyName": "items",
		"index": 4
	},
	{
		"operation": "insert",
		"name": "SysPageSchemaUId",
		"values": {
			"layout": {
				"column": 0,
				"row": 6,
				"colSpan": 12,
				"rowSpan": 1
			},
			"bindTo": "SysPageSchemaUId",
			"caption": {
				"bindTo": "Resources.Strings.SysPageSchemaUIdCaption"
			},
			"enabled": true
		},
		"parentName": "Header",
		"propertyName": "items",
		"index": 5
	} */

Или же удалите замещенную схему, сгенерируйте исходный код и скомпилируйте конфигурацию.

Если Вы хотите узнать ID конкретного справочника, то выполняйте запрос на уровне БД:

Select * from Lookup
Where Name='Категории контрагентов'

так как подобная информация должна храниться и отображаться только на уровне БД, чтобы избежать подобных ошибок.
Если Вам необходимо все таки отобразить ID объекта, то выведите соответствующую колонку в реестре раздела «Справочники» (Рис. 1).

"Вильшанский Дмитрий" написал:закомментировать или удалить diff SysEntitySchemaUId и diff SysPageSchemaUId

Спасибо, Дмитрий!

Показать все комментарии
service
канал
обращение
Технические вопросы
7.x

Добрый день,
Возможно кто-то решал такую задачу:
Необходимо создать канал, в который собирались бы все комментарии из лент обращений.
И больше ничего.

Нравится

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

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

Пользовательскими средствами данный функционал невозможно реализовать.
Так как по сути лента каждой записи является отдельным каналом и нет возможности все комментарии передать в один канал.

В разделе «Лента» отображается то, что непосредственно было опубликовано в данном разделе.

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

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

Добрый день!

Планируется-ли в ближайшее время для BPM 7.X создание мастера для справочников (создание справочников, добавление полей в справочники и пр.)?

Нравится

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

Спасибо за предложенную идею, она будет занесена в беклог команды для возможных дальнейших реализаций. На данный момент начиная с версии 7.5 уже обновленный интерфейс управления справочниками системы. Более подробно с имеющимся функционалом можно ознакомится на нашем ресурсе http://academy.terrasoft.ru/documents/?product=omnichannel&ver=7.6.0 в разделе [Инструменты Администрирования]-[Раздел Справочники].

"Адасюк Валерий Викторович" написал:для возможный дальнейших реализаций

Очень надеюсь, что незаменимые возможности модуля "wnd_CreateNewWorkspace" из v.3.X будут использоваться и в более современной версии 7.X

Прошу прощения, даже в "wnd_CreateNewWorkspace" не нужно было идти, можно было прямо в разделе Справочники v.3.X создавать справочник!

Показать все комментарии
7.x
MS SQL
Oracle
интеграция
СУБД
Технические вопросы

Коллеги, здравствуйте!

Посоветуйте оптимальный вариант интеграции (двусторонний обмен) BPMonline onsite со сторонней СУБД MS SQL / Oracle?

Если правильно понимаю, варианты:
1. BPM-oData / промежуточный шлюз / СУБД
2. BPM-СУБД / СУБД

Очень важно определить "подводные камни" (работа по процессам BPM, отказоустойчивость)

Нравится

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

В данном случае возможны оба варианта, но, на мой взгляд, более приемлемым является вариант через Odata, так как в варианте с СУБД-СУБД могут сильно отличаться модели данных. Более подробную информацию о возможностях интеграции платформы bpm`online через Odata можете узнать на нашем ресурсе http://academy.terrasoft.ru/documents/?/docs/technic/SDK/7.6.0/webtoc.h…

"Адасюк Валерий Викторович" написал:на нашем ресурсе

Валерий, спасибо, только не открывается страничка (открывается общее содержание)

Дмитрий, путь перехода к нужному разделу следующий
SDK bpm`online>Рекомендуемые средства интеграции>OData

Показать все комментарии
добавление
продукт
тип
тип продукта
Технические вопросы
7.x

bpm'online sales enterprise версия 7.6.0.
В данной версии при добавлении нового товара можно ли добавить тип продукта? Допустим у меня интернет магазин и в продаже из типовых продуктов имеются крупная, мелкая бытовая техника и т.д. А в в списке имеется только антивирусы и продукты связанные только с компьютерным обеспечением. Есть ли возможность добавить туда продукты другого типа?

Нравится

2 комментария
Технические вопросы
7.x

Добрый день.
Ситуация: у нас (в связи с большими переделками-доработками) со временем стали по долгу отрабатывать различные кейсы. Пытались найти слабые места кода с помощью снятия трейса в SQL Profiler – сервер отрабатывает быстро, однако (толстый) клиент Terrasoft при своей работе большинство логики обрабатывает на клиенте. И пришла идея в код проблемных кейсов проставить сбор тайминга. Т.е. например кейс открытие Проекта: разбиваем код на логические части и в начале и конце частей пишем код что то типа если текущий пользователь = «Ivanov» то запиши в файлик этап=1 дата-время = 26.06.2015 14:19:10.100. – таким образом мы найдем в проблемном кейсе кусок кода который отрабатывает дольше всего и попробуем его оптимизировать.

Вопрос: Может в террасофте уже есть аналогичные штатные средства, или если нет подскажите как будет выглядеть в Terrasoft код: если текущий пользователь = «Ivanov» то запиши в файлик: этап=1, дата-время = текущая дата-время. (файл как вариант текстовый на компе у пользователя или вывод куда-нибудь строку все этапы с временем)

Отладку в Visual Studio не хотим производить, так как Visual Studio сам потребляет память и в итоге тестирование таймингов может быть не правильным.

Нравится

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

В bpm'online 7.5 обновился инструмент профилирования клиентского кода - performanceManager. Инструмент основан на использовании UserTimingApi. Для браузеров, которые не поддерживают этот стандарт, реализован эмулятор. Профилировщик находится в модуле performancecountermanager.

Включение профайлера

Чтобы не нагружать приложение, по умолчанию функциональность профайлера отключена. Сам объект performanceManager доступен, но все его методы - пустые функции. Для включения профилировщика, необходимо добавить настройку EnablePerformanceManager в секцию appSettings в файл web.config в папке Terrasoft.WebApp:

<appSettings>
    <add key="EnablePerformanceManager" value="true"/>

Профилирование
Установка меток

Профилирование осуществляется на основе временных меток с помощью методов start() и stop(). Метод start начинает профилирование метки с указанным именем. Метод stop, соответственно, завершает профилирование. Профилирование одной метки можно выполнять несколько раз. Для этого нужно вызвать метод start еще раз.

Важно!
Если вызвать метод start для метки, для которой еще не завершена предыдущая итерация профилирования (не был вызван метод stop), запрос будет отклонен.

Например, необходимо выполнить профилирование метода, который делает некий расчет:

function calculateSomething() {
    performanceManager.start("calculateSomething");
    setTimeout(function() {
        performanceManager.stop("calculateSomething");
        console.log("done");
    }, 200);
}

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

Важно!
При профилировании консоль браузера обязательно должна быть закрыта. Открытая консоль искажает замеры, т.к. выполнение javascript-кода, отображение и расчет стилей DOM-элементов замедляется в несколько раз.

Вывод результатов профилирования
Для вывода результатов профилирования используются методы getProfileInfo() и getHierarchyProfileInfo().
Метод getProfileInfo() выводит результат как есть, без дополнительной обработки.
Метод getHierarchyProfileInfo() выводит результат в иерархическом виде. Этот метод удобно использовать для профилирования сложных асинхронных объектов. Более детальная информация о функциях и их параметрах ниже.
getProfileInfo
Результатом вызова метода getProfileInfo() будет следующий вывод в консоль:
> [Имя метки 1]:
> avgDuration: [Среднее время выполнения метки 1]ms
> time: [Общее время выполнения метки 1]ms
> callsCount: [Количество итерация профилирования метки 1]

Пример вывода результата для вызова метода getProfileInfo():

function calculateSomething() {
    performanceManager.start("calculateSomething");
    setTimeout(function() {
        performanceManager.stop("calculateSomething");
        console.log("done");
    }, 200);
}
calculateSomething();
> done
calculateSomething();
> done
calculateSomething();
> done
performanceManager.getProfileInfo();
> calculateSomething:
>    avgDuration: 717ms;
>    time: 2152ms
>    callsCount: 3

Важно!
Метод setTimeout не гарантирует вызов callback-функции через переданное количество миллисекунд, этот метод гарантирует, что код выполнится не раньше чем заданный промежуток времени. Этим и объясняется большее время выполнения функции.
Для вывода полной информации о каждой итерации профилирования, нужно вызвать метод getProfileInfo() с параметром showAllCalls:
performanceManager.getProfileInfo({ showAllCalls: true });
> calculateSomething:
> avgDuration: 717ms;
> time: 2152ms
> callsCount: 3
> call №0
> duration: 523ms
> startTime: 24 m : 24 s : 367 ms
> endTime: 24 m : 24 s : 890 ms
> call №1
> duration: 763ms
> startTime: 24 m : 26 s : 128 ms
> endTime: 24 m : 26 s : 891 ms
> call №2
> duration: 866ms
> startTime: 24 m : 28 s : 30 ms
> endTime: 24 m : 28 s : 896 ms

Более подробно о выводе профайлера далее.

getHierarchyProfileInfo

Метод getHierarchyProfileInfo() выводит результат в иерархическом виде. Иерархия меток строится на основе имени метки и разделителя (по умолчанию "_"). Т.е. имена меток интерпретируются как полное имя с указанным пространством имен (namespace).
Например есть метка с именем "MyCommonModule_MySectionModule_MyModule". Профайлер будет интерпретировать это имя так: в пространстве имен "MyCommonModule" есть пространство имен "MySectionModule" в котором есть метка "MyModule". Будет построена следующая структура:
MyCommonModule = {
MySectionModule: {
MyModule: Метка
}
}
Если при профилировании встретится другая метка с именем "MyCommonModule_MySectionModule2_MyModule3", структура перестроится следующим образом:
MyCommonModule = {
MySectionModule: {
MyModule: Метка 1
},
MySectionModule2: {
MyModule3: Метка 2
}
}
Количество пространств имен не ограничено.
Таким образом можно визуально отобразить вложенность вызова меток. Пример - загрузка модулей приложения.
В файле core.js уже установлены метки для профилирования процесса загрузки модулей. Приложение bpm'online при загрузке модулей формирует идентификаторы модулей путем добавления нижнего подчеркивания к идентификатору родительского модуля и имени загружаемого модуля (moduleId = ownerModule.id + "_" + module.name). Вывод информации о профилировании загрузки модулей удобно делать в иерархическом виде.
Пример вывода результатов при вызове метода getHierarchyProfileInfo():

 performanceManager.getHierarchyProfileInfo();
>    ViewModuleWrapper
>        loadModule
>            avgDuration: 10392ms
>            time: 10392ms
>            callsCount: 1
>    ViewModule
>        loadModule
>            avgDuration: 10691ms
>            time: 10691ms
>            callsCount: 1
>        NavigationModule
>            loadModule
>                avgDuration: 618ms
>                time: 618ms
>                callsCount: 1
>        ProcessModuleV2
>            loadModule
>                avgDuration: 4538ms
>                time: 4538ms
>                callsCount: 1

Метод так же поддерживает опцию showAllCalls, которая выводит информацию о всех итерациях профилирования для каждой метки.

API
performanceManager имеет следующее API:

  • start(markName) - Начинает профилирование метки.
  • stop(markName) - Завершает профилирование метки.
  • clear(markName) - Удаляет метку
  • clearAll() - Удаляет все метки.
  • getProfileInfo(config) - Выводит результаты профилирования в плоском виде.
  • getHierarchyProfileInfo(config) - Выводит результаты профилирования в иерархическом виде.
  • setLogObject(logObbject) - Устанавливает объект логирования.

Методы, которые остались от старого профайлера и не поддерживаются больше в версиях выше 7.5.0:

  • startCounter
  • stopCounter
  • startAsyncCounter
  • stopAsyncCounter
  • setTimeStamp
  • getTimeStamp
  • getTimeSpan
  • clearTimeStamp
  • clearAllTimeStamps
  • start(markName)

start(markName)
Начинает профилирование метки с переданным именем.. Если метки не существует - она создается. Если метка существует и для нее предыдущая итерация профилирования не закончена, запрос на профилирование отклоняется.
stop(markName)
Завершает профилирование метки с переданным именем.. Если метки нет или предыдущая итерация профилирования уже завершена, запрос отклоняется.
clear(markName)
Удаляет метку с переданным именем.
clearAll()
Удаляет все метки.
setLogObject(logObbject)
Устанавливает объект логирования.
getProfileInfo(config) / getHierarchyProfileInfo(config)
Выводит результаты профилирования. Разница между этими методами лишь в форме вывода результата. В качестве аргумента, методы принимают конфигурационный объект, с помощью которого можно настраивать или фильтровать результат.
Параметры конфигурационного объекта
filter
Фильтр для вывода меток. Фильтр применяется для каждой метки при выводе результата. Может быть одним из двух типов:
Функция - фильтр должен возвращать булево значение, в качестве аргумента передается копия метки.
Строка - Выполняется проверка соответствия строки регулярному выражению avgDurationLimit:\s*(\d+)\s* (avgDurationLimit: Number)
Строка соответствует регулярному выражению - выводится результат только для тех меток, среднее время выполнения которых превышает лимит.
Строка не соответствует регулярному выражению - выводится результат только для тех меток, в имени который содержится переданная подстрока.
showFlat
Признак вывода результата в плоском виде. Является предустановленным значением для метода getProfileInfo(), методом getHierarchyProfileInfo() не используется.
showByNamespace
Признак вывода результата в иерархическом виде. Является предустановленным значением для метода getHierarchyProfileInfo(), методом getProfileInfo() не используется.
namespaceSeparator
Разделитель для построения иерархии меток. Значение по умолчанию "_". Используется только методом getHierarchyProfileInfo().
showAllCalls
Признак того, что надо выводить все итерации замеров. Значение по умолчанию false.
hightlightDurationOverflow
Признак того, что надо подсвечивать значения, которые превышают лимит заданный настройкой durationLimit. Значение по умолчанию false.
Проверяется как время профилирования каждой итерации, так и среднее время профилирования метки.
durationLimit
Лимит значения для подсветки результатов. используется в связке с настройкой hightlightDurationOverflow.

Настройки hightlightDurationOverflow и durationLimit работает не во всех браузерах. Поддерживаемые браузеры: Chrome, FireFox, Safari.

Механизм performanceManager
В основе механизма работы performanceManager-а лежит W3C-стандарт UserTimingApi. Браузеры реализуя этот стандарт предоставляют объект window.performance. Для performanceManager важно наличие следующих методов:
now - возвращает количество миллисекунд прошедших с момента начала загрузки страницы. Использует DOMHighResTimeStamp.
mark - сохраняет временную метку и сохраняет ее с параметром startDate равным now().
measure - выполняет расчет количества миллисекунд между двумя временными метками.
getEntriesByName - возвращает массив временных меток с указанным именем.
clearMeasures - удаляет сохраненный результат расчета с указанным именем. Если имя не передано, удаляет все результаты.
clearMarks - удаляет временную метку с указанным имеем. Если имя не передано, удаляет все метки.
Не все браузеры поддерживают UserTimingApi, поэтому был реализован эмулятор, который работает на основе объекта Date. При инициализации, performanceManager проверяет наличие объект performance, а также наличие перечисленных методов у этого объекта. Если какого-либо метода нет, либо нет объекта performnce - подключается эмулятор.
Далее вводится внутренний класс Mark (метка), который может хранить в себе несколько замеров.

Свойства класса Mark:

  • name - имя метки.
  • measurements - массив замеров метки.
  • requiredCalculateProperties - массив свойств, необходимых для расчета показателей.
  • durationOverflowHighlightStyle - стиль для подсветки результатов при выводе.
  • Методы класса Mark:
  • clear - Удаляет все временные метки и сохраненные результаты расчета для метки (mark и measure).
  • isCalculated - Возвращает признак того, что все показатели для метки расcчитаны (рассчитано время замера и среднее время замера метки).
  • isMeasureCalculatable - Возвращает признак того, переданный замер уже расcчитан (рассчитано время замера endTime - startTime).
  • isCalculatable - Возвращает признак того, что метка рассчитываемая (При фильтрации выводимого результата передается копия метки из которой удаляются имена временных меток, что бы случайно не удалить результаты вызовом метода calculate(). Метод проверяет наличие этих свойств.).
  • calculate - Выполняет расчет показателей метки и ее замеров.
  • copy - Возвращает Копию метки и ее замеров.
  • createMeasure - Создает объект замера для метки и возвращает его (Для созданного замера генерируются имена временных меток для времени старта замера, времени завершения замера и результата расчета).
  • getLastMeasure - Возвращает последний объект замера для метки.
  • isStopped - Возвращает признак того, что для метки в данный момент закончено профилирование и установлены все временные метки.
  • log - Выполняет логирование метки и ее замеров.
  • logMeasurements - Выполняет логирование замеров метки.
  • logMetric - Выполняет логирование метрики метки или замера.

Чтобы профилирование не влияло на работу приложения, расчет всех показателей выполняется при выводе результата. При вызове метода start() устанавливается временная метка начала замера, а при вызове метода stop - устанавливается временная метка завершения замера. Другими словами вызов методов start и stop создают объект класса Mark и устанавливают временный метки.
При вызове метода getProfileInfo() либо метода getHierarchyProfileInfo() выполняется расчет показателей всех меток, для которых завершено профилирование. После, анализируется переданный конфигурационный объект и происходит вывод результатов.
Метод getProfileInfo() перебирает все метки, применяя фильтр, и выводит результат.
Метод getHierarchyProfileInfo() сначала строит объект иерархии меток, в процессе построения которого выполняет фильтрацию, после чего выводит результат.

Не понял - это похоже для web-клиента? У нас толстый-клиент.

Толстого клиента для 7.X нет (кроме Mobile). У вас Terrasoft 3.X? Об отладке для неё есть статья с описанием более лёгких аналогов Студии.

В конфигурации также есть стандартный скрипт scr_DebugUtils. Тут некоторое обсуждение. И ещё есть такая сторонняя разработка scr_ScriptExecutionAnalysis.

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

Толстого клиента для 7.X нет (кроме Mobile). У вас Terrasoft 3.X? Об отладке для неё есть статья с описанием более лёгких аналогов Студии.

В конфигурации также есть стандартный скрипт scr_DebugUtils. Тут некоторое обсуждение. И ещё есть такая сторонняя разработка scr_ScriptExecutionAnalysis.


Добрый день, предложенные функции из скрипта scr_ScriptExecutionAnalysis не отрабатывали корректно в нашем случае. С помощью отладчика было установлено при вызове какой функции самое большое время ожидания. При попытке разместить данный вызов между вызовами StartTiming() и EndTiming() в результате получалось значение в 0 ms.

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

Всем доброго дня!

Подскажите, пожалуйста, как добавить справочники / модули дизайнера системы в список разделов для добавления в Рабочее место?

К примеру в Рабочее место "Продажи" добавить справочник Должности и модуль дизайнера системы "Импорт данных из Excel"?

Нравится

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

Добрый день!

Какую задачу Вы хотите решить таким добавлением?

Импорт данных Вы можете произвести из Главное меню -> Дизайнер системы -> Импорт данных из Excel. По умолчанию, импорт доступен пользователям с ролью "Системный администратор". Однако такой доступ может быть расширен правами доступа на операции, операции "Импорт из Excel".

Справочники в системе хранятся в виде объектов. Редактирование содержимого справочника также по умолчанию доступно только пользователям с ролью "Системный администратор". Права на редактирование также могут быть расширены другими организационными ролями или конкретными пользователями.

"Демьяник Алексей Олегович" написал:Какую задачу Вы хотите решить таким добавлением?

Алексей, спасибо за ответ. Задача в получении быстрого доступа для ролей обладающих правами на доступ к данной функциональности. То есть роль имеющая права корректировки категорий продуктов, при этом не пользующаяся продуктовой базой, должна иметь возможность быстро добавить какую-либо новую категорию. Для этой роли (фактически) справочники категорий товаров являются Рабочим местом! То есть переход в один клик (находясь в любом разделе системы) к ежедневно редактируемому справочнику весьма важный элемент (в отличие от Дизайнер -> Справочники -> Категория)!

Добрый день, Алексей!

В Вашем случае, по сути, запрашиваемый функционал уже реализован. При добавлении справочного значения, в случае отсутствия оного, его можно добавить по нажатию на соответствующую кнопку вверху области реестра. Если значения в справочном поле отображаются в виде списка, то необходимо в разделе нажать кнопку [Вид]-[Открыть мастер раздела] и открыть нужное нам справочное поле. В открытой карточке убрать чекбокс на против значения [Отображать в виде списке]. В таком случае мы сможем переходить в нужное нам представление при нажатии на lookup. Если при переходе у Вас не будет отображаться кнопка [Добавить], то ознакомится с решением можно здесь http://www.community.terrasoft.ru/forum/topic/12071#comment-52199

"Адасюк Валерий Викторович" написал:запрашиваемый функционал уже реализован

Валерий, видимо мы друг друг не поняли. Сотруднику корректирующему Категории товаров нужно рабочее место, где вместо Контакты, контрагенты, Лента и пр. написано Категории товаров, Типы товаров и т.п. И в 1 клик сотрудник перемещается в данный справочник

"AlexLS" написал:И в 1 клик сотрудник перемещается в данный справочник

а в чем тогда проблема, если сотрудник работает с данным полем в конкретной карточке какого-нибудь раздела, то он и так в 1 клик по нажатию на лукапное поле переходит в этот справочник, где можно добавлять новые или удалять уже существующие записи. Если речь идет о том, чтоб выводить как отдельный раздел, то базовая логика работы системы не дает такой возможности перехода в 1 клик. Также, доступен раздел [Справочники] в в главном меню системы, где можно открыть нужный справочник, но тут уже 3 клика выходит правда.

"Адасюк Валерий Викторович" написал: то базовая логика работы системы не дает такой возможности перехода в 1 клик

Спасибо, Валерий.
Хотел услышать обратное, но главное, что вердикт получил!

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