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

В разделе активности, в списочном реестре, если вытянуть поле Контрагент, реестр не загружается (Заголовки колонок тоже пропадают). Если поле убрать все работает нормально. Данная проблема наблюдается под одним пользователем, на разных компьютерах и браузерах.

Подскажите на что стоит обратить внимание, в чем может быть проблема? Может кто то сталкивался?

Версия 7.7.0.2284

Нравится

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

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

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

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

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

Как узнать количество активных(работающих) сессий/пользоватлей в данный момент?

Нравится

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

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

Вы можете просмотреть эту информацию в базе данных, выполнив запрос к таблице SysUserSession:

select COUNT(SessionId) from SysUserSession
where SessionEndDate is NULL

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

"Демьяник Алексей" написал:

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

Вы можете просмотреть эту информацию в базе данных, выполнив запрос к таблице SysUserSession:

SELECT COUNT(SessionId) FROM SysUserSession

WHERE SessionEndDate IS NULL

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

А как узнать, когда пользователь последний раз заходил в систему?
тк сессии с таким запросом есть аж за прошлый год!

Последняя сессия в разрезе пользователей:

select SysAdminUnit.Name, MAX(SysUserSession.CreatedOn) from SysUserSession
left join SysAdminUnit
on SysUserSession.SysUserId = SysAdminUnit.Id
group by SysAdminUnit.Name

А можно воспользоваться разделом "Итоги" и вывести итог "список" по объекту "Сеанс пользователя".
Вывести колонки Пользователь, Дата начала, Дата завершения и др. отсортировать по дате.
Отфильтровать по "Дата завершения" - не заполнена.
И видеть эту информацию красиво.

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

Здравствуйте! Столкнулся со следующей проблемой.
На страницу редактирования контакта добавляю кнопку(при нажатии выводится имя контакта) при помощи такого кода:

define("ContactPageV2", [], function() {
        return {
                entitySchemaName: "Contact",
                details: /**SCHEMA_DETAILS*/{}/**SCHEMA_DETAILS*/,
                diff: /**SCHEMA_DIFF*/[
        {
                       
                        "operation": "insert",
                       
                        "parentName": "ActionButtonsContainer",
                       
                        "propertyName": "items",
                       
                        "name": "Name",
                       
                        "values": {
                               
                                itemType: Terrasoft.ViewItemType.BUTTON,
                               
                                caption: { bindTo: "Resources.Strings.Name"},
                                click: { bindTo: "getName"},
                               
                                "layout": {
                                        "column": 1,
                                        "row": 6,
                                        "colSpan": 1
                                },
                                style: "red"
                        }
        }
]/**SCHEMA_DIFF*/,
                methods: {
                        getName: function() {
                                var name = this.get("Name");
                                this.showInformationDialog(name);
                        }
                },
                rules: {}
        };
});

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

Может кто-нибудь объяснит в чем проблема. Заранее благодарен.

Нравится

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

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

Воспользуйтесь статьей https://academy.terrasoft.ru/documents/technic-sdk/7-8/kak-dobavit-knop….

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

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

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

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

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

Sales Team Версия 7.7.0.2284

Нравится

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

Быстрый фильтр вроде начал сохраняться при переходах только с 7.8

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

Исправлено в более поздних версиях. Поведение связано с тем, что установленный в разделе фильтр не не отработал по причине асинхронности запросов.

Рекомендуем обновиться на 780.

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

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

Системный администратор видит группы всех пользователей. В схеме "Группа контрагента" включено администрирование по записям. Насколько я понял системный администратор игнорирует администрирование по записям.

Что нужно сделать что бы системный администратор видел только свое группы(что бы для него работали права на схему "Группа контрагента")?

Нравится

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

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

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

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

Подскажите в чем дело?

Администрирование по записям, для объекта тестируемой группы включено.

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

Проверьте запросом права на группы:

select * from Sys[Object]FolderRight /*[Object] - объект раздела, в котором создаются группы*/

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

Алексей спасибо, разобрался.
Подскажите пожалуйста где хранятся данные о том что *Группа руководителей является группой руководителей для обычной группы? Все группы руководителей создавались через признак "Существует роль руководителей", теперь нужно эти группы руководителей сделать обычными группами.
Можно убрать признак и создать группы заново и наполнить их, но хотелось бы сделать это через SQL? т.к. групп очень много.

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

Добрый день.

У меня такой вопрос, можно ли функционал календаря, который находится в разделе активностей перенести в другой раздел?

Нравится

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

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

У раздела "Активности" создано отдельное представление. Реализацию Вы можете посмотреть в ActivitySectionV2.
Код, который рисует календарное представление:

				{
					"operation": "insert",
					"name": "Schedule",
					"parentName": "DataViewsContainer",
					"propertyName": "items",
					"values": {
......................../*много букв*/...............................
					}
				},

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

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

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

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

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

Нравится

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

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

Для добавления поля Вам необходимо заместить мини-карточку активности. Операция замещения не отличается от операции замещения обычной страницы редактирования. Для добавления нового поля используйте операцию INSERT. Пример создания мини-карточки Вы можете найти по ссылке (Вам нужно взять часть кода из этой инструкции_:
https://academy.terrasoft.ru/documents/technic-sdk/7-8/sozdanie-mini-ka…
Код, который добавит поле:

            {
                "operation": "insert",
                "name": "Notes",
                "parentName": "MiniPage",
                "propertyName": "items",
                "values": {
                    "labelConfig": {
                        "visible": false
                    },
                    "isMiniPageModelItem": true,
                    "layout": {
                        "column": 0,
                        "row": 1,
                        "colSpan": 24
                    }
                }
            }

Обратите внимание, что структуру схемы мини-карточки необходимо сохранить.
Для решения Вашей задачи с видимостью поля Вы можете использовать бизнес-правила:
https://academy.terrasoft.ru/documents/technic-sdk/7-8/biznes-pravila-i…

Демьяник Алексей, а можете скинуть md файл с примером замещения мини карточки?

Добрый день!
Пример замещающей страницы мини-карточки лида во вложении.
leadminipage.txt

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

выполнил скрипт после чего министраница вовсе перестала отображаться и в консоли появились ошибки

Дмитрий, нужно проводить отладку. Либо напишите в службу поддержки для восстановления мини-карточки по умолчанию.

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

Скажите, почему в полях CreatedOn и ModifiedOn записей таблицы Activity есть разница во времени при создании новой записи без модификации? Неужели после Insert происходит Update ModifiedOn и зачем это сделано? BPM 78
См. рисунок.

Нравится

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

Посмотрел профайлером - и правда через некоторый интервал после insert самой активности и связанных событий (права, например) выполняется запрос

exec sp_executesql N'
UPDATE [dbo].[Activity]
SET
	[ModifiedOn] = @P2
WHERE
	[Id] = @P1',N'@P1 uniqueidentifier,@P2 datetime2(7)',@P1='22500B7C-DD4D-449A-AD6D-48EBE7A18B02',@P2='2016-08-19 07:38:11.5640924'

Откуда он инициируется не знаю :)

Если не секрет, какую цель преследуете, просто интерес + понять намного глубже события "под капотом"? Вроде мелочь это, но странная соглашусь.

А вот откуда вызов идет
Объект ActivityParticipant (пакет Base), его процесс.
Там есть обработка события ActivityParticipantInserting. Вызывается элемент скрипт с оригинальным названием ScriptTask1.
В его коде находим:

Update update = new Update(UserConnection, "Activity")
	.Set("ModifiedOn", Column.Parameter(DateTime.UtcNow))
	.Where("Id").IsEqual(Column.Parameter(Entity.GetTypedColumnValue<Guid>("ActivityId"))) as Update;
update.Execute();

А зачем оно - типа при добавлении участника в задачу, мы должны отработать это как изменение самой задачи, что по сути правильно :cool:

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

А можно сделать, чтобы при Insert записи Активности этой модификации не было бы?
А уже при повторном добавлении участника - было бы?

"Alex GF" написал:Как можно выяснить откуда и зачем он инициируется? Чтобы если что убрать его.

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

"Alex GF" написал:А можно сделать, чтобы при Insert записи Активности этой модификации не было бы?

Видимо можно, только овчинка не стоит выделки...
В 3х просто отключали события, а здесь надо как то подумать чтобы это событие не отрабатывало, например - переписать заполнение участников в sql запрос (а не через объект) и вызывать его по факту создания задачи, при этом обращение к объекту ActivityParticipant не будет и соответственно его события задействованы не будут. Копать процесс на объекте Activity (событие типа Inserted)

"Александр Кудряшов" написал:

А вот откуда вызов идет

Объект ActivityParticipant (пакет Base), его процесс.

Там есть обработка события ActivityParticipantInserting. Вызывается элемент скрипт с оригинальным названием ScriptTask1.

В его коде находим:


Александр, пока осваиваю БПМ, подскажите как правильно сделать:
Хочу с помощью замещающего объекта убрать из обработки события ActivityParticipantInserting Update поля ModifiedOn:
Создал замещающий объект ActivityParticipant (пакет Custom).
Как теперь в нем убрать Update ModifiedOn?

Я так понимаю назначить обработчик на событие Inserting в новом объекте (событие перед добавлением), далее в процессе после стартового сообщения поставить элемент скрипт с новым содержимым и далее элемент завершения процесса. Примерно так
ps - в оригинале завершения нет, можно значит и без него.
pps - не забудьте дать уникальные имена всем новым элементам на схеме процесса (включая "стрелочку"), чтобы ни в коем случае они не пересеклись с существующими в родителе, в 7.6 это приводило к обрушению при компиляции

ppps - еще тонкость есть, сейчас опишу
Чтобы отключить выполнение родительского кода, после реализации своего обработчика добавьте такой код, например в еще одном элементе сценария

if (ActivatedEventElements.Contains("ActivityParticipantInserting")) {
ActivatedEventElements.Remove("ActivityParticipantInserting");
}
return true;

Это отключит родительский обработчик

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

Здравствуйте!
Подскажите, как подключить SQL Server Profiler к конкретной BPMOnline 7.8, чтобы посмотреть какие запросы в базе происходят при, к примеру создании новой Продажи?

Нравится

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

Доброго времени суток.
Как правильно написать команду SQL типа (Type), воспринимает ее как (Select, where, as и т.д.) в обычное поле в которое можно записывать. Поле Type имеется у таблицы в БД, оно системное, возможности переименовать ее нет.
Например:

SELECT DISTINCT
[Product].[Id] as [ProductID],
[Product].[Type] as [TypeID],

P.S.:Двойные и одинарные скобки не помогают.

Нравится

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