Здравствуйте.
Есть необходимость создать новый раздел на основании объекта активности.
Проведённые работы:
1. Создана схема Раздела и Страницы редактирования
2. Создана запись в SysModuleEntity с указанием UId объекта Активности
3. Создана запись в SysModule с указанием SysModuleEntityId из п.2 и UId схем из п.1.
4. Создана запись в SysModuleEdit с указанием SysModuleEntityId из п.2
В итоге раздел зарегистрирован и  работает корректно.
Но теперь при открытии мастера раздела в р. Активности открывается конфигурация  нового раздела (хотя в адресной строке указан SysModuleId раздела активности)
Есть подозрение, что Мастер раздела берёт последнюю запись (по дате создания) из таблицы SysModuleEntity.
Подскажите как решить эту проблему.
И правильно ли это поведение системы?

Нравится

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

Добрый день.

 

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

 

Ответить, насколько правильно такое поведение системы Вам смогут только её разработчики, поэтому рекомендую продублировать свой вопрос в службу поддержки Terrasoft.

Спасибо, Алла. Этот вариант тоже рассматривал.
Но хотелось бы получить комментарий от Тех.поддержки.
Т.к. лично мне не понятно, почему для формирования наполнения мастера раздела не используются данные из SysModuleEntity?  
Ведь по логике не должно быть разницы какая схема объекта привязана к записи SysModuleEntity, если для каждого раздела есть своя запись в SysModuleEntity.

Игорь, здравствуйте!

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

Если, например, Вам необходимо разделить контрагентов на два типа: клиенты и контрагенты, то пользовательски Вы можете сделать это помощью типизации страниц редактирования.
Для этого Вы можете использовать базовое поле "Тип" в карточке контрагента. Добавить собственный тип Вы можете в справочнике "Типы контрагента".
С помощью мастера раздела можно добавить необходимо количество страниц редактирования, каждая из которых будет соответствовать нужному типу. Страницы могут иметь разный набор полей/деталей в зависимости от Ваших потребностей. Более детально о создании нескольких страниц можно почитать на Академии Terrasoft.

 

Для интересующего Вас раздела активностей это уже сделано, для задачи и звонка используется одна карточка, а для email настроена другая.

Разделять записи в реестре раздела можно с помощью динамических групп настроив фильтр по полю "Тип".  

 

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

Мотков Илья,

Илья меня интересует именно отдельный раздел и с полностью рабочей функциональностью.
И мне интересно почему мастер раздела не основывается при  построении на данные из SysModuleEntity?
Т.к. именно эта таблица связывает зарегистрированный раздел (SysModule) с объектом(SysSchema).
Так почему при загрузке мастер основывается на объект и на последний  зарегистрированный по этому объекту раздел?
 

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

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

Вопрос - достаточно ли будет создать ОбъектFoder и ОбъектInFolder, чтобы всё заработало?

Нравится

4 комментария
Лучший ответ

По идее да - для групп этого должно быть достаточно, и таблицы для тегов ОбъектTag и ОбъектInTag, если Вам нужны теги в этом разделе.

Хотя может быть в Вашей версии тегов ещё не было frown

По идее да - для групп этого должно быть достаточно, и таблицы для тегов ОбъектTag и ОбъектInTag, если Вам нужны теги в этом разделе.

Хотя может быть в Вашей версии тегов ещё не было frown

Теги были ещё в 7.7, а скорее всего, и до того.

Алла Савельева,

В общем, да, создал 2 объекта и всё получилось

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

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

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

Хочу отловить двойной клик по записи в разделе.

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

Вопрос как?

Нравится

3 комментария
Лучший ответ

Добрый день. В 7.13 или 7.13.1 это есть уже в коробке. Можете посмотреть, как реализовано там. Работает и в разделах, и в деталях.

 

Проверьте метод onGridDoubleClick, возможно это то, что вам нужно

Пример работы с этим методом есть на детали «Пользователи» раздела «Организационные роли». По двойному клику открывается карточка пользователя. Логика реализована в схеме UsersDetailV2.

Добрый день. В 7.13 или 7.13.1 это есть уже в коробке. Можете посмотреть, как реализовано там. Работает и в разделах, и в деталях.

 

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

Привет всем !,
возникает ошибка при создании нового раздела,
Ошибка: Ссылка на объект не указывает на экземпляр объекта..

Нравится

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

1. Какой пакет у Вас указан в системной настройке 'CurrentPackageId'?

2. Какие права у пользователя, под которым создается новый раздел?

Алла Савельева, 
1. Значение по умолчанию: Custom
2. Права Системного Администратора

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

Либо превышена максимальная длина названия объекта, ограничения были в старых версиях везде, а сейчас оставлены при работе с Oracle.

Попробуйте заново создать раздел с другим кодом.

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

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

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

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

Как можно в bpm'online перевести кроме элементов интерфейса на несколько языков еще и данные?
Необходимо отображать на языке пользователя некоторые поля справочников (Name, Description), а также некоторые поля разделов (например, названия, описания сервисов или продуктов)

Нравится

3 комментария
Лучший ответ

В схеме таблицы для тех полей, которые хотите локализировать, установить признак 'Локализируемый текст' (Localizable Text):

 

По умолчанию для таблиц, которые наследованы от Base lookup, для полей Name и Description эти признаки уже установлены.

Потом перейти в раздел Переводы (Translation), по ключу найти значения для нужного справочника, перевести их и потом применить перевод.

Для примера на скриншоте ключ выглядит следующим образом: Data:Contact.OfficialName:82d21f9f-4cec-4ff7-aeee-9255cc4f37f3. Contact - это название таблицы, OfficialName - название локализируемого поля, 82d21f9f-4cec-4ff7-aeee-9255cc4f37f3 - Id записи в таблице Contact, для которой делается перевод.

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

В схеме таблицы для тех полей, которые хотите локализировать, установить признак 'Локализируемый текст' (Localizable Text):

 

По умолчанию для таблиц, которые наследованы от Base lookup, для полей Name и Description эти признаки уже установлены.

Потом перейти в раздел Переводы (Translation), по ключу найти значения для нужного справочника, перевести их и потом применить перевод.

Для примера на скриншоте ключ выглядит следующим образом: Data:Contact.OfficialName:82d21f9f-4cec-4ff7-aeee-9255cc4f37f3. Contact - это название таблицы, OfficialName - название локализируемого поля, 82d21f9f-4cec-4ff7-aeee-9255cc4f37f3 - Id записи в таблице Contact, для которой делается перевод.

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

Спасибо!

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

А как все уже существовавшие записи добавить для перевода?

Посмотреть в профайлере, какие записи добавляются в какие таблицы при добавлении записей в справочник, а потом по всем старым SQL-запросом по аналогии?

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

Привет всем !
Кто нибудь знает как убрать обязательное заполнение поля Ответственный в разделе Аналитика при выборе фильтров для построения отчета ?

Нравится

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

Сначала нужно найти схему этой страницы, как описано тут. Затем в ней смотреть, как сделано это поле. У меня такого отчёта по счетам нет, а в отчёте по задачам поле «Ответственный» выглядит так же, но не является обязательным, отчёт строится и с пустым.

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

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

 

 

Нравится

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

Такие отчёты привязываются к разделу записями в SysModuleAnalyticsReport, где в полях указаны Id схемы отчёта и схемы его параметров. Для этого отчёта окно параметров задаётся в ContactAnniversariesReportFilter.

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

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

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

Всем привет!

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

Нравится

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

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

По функциональной части: рекомендую переопределить в Section метод getFilters и там в зависимости от выбранного фильтра в разделе добавлять или удалять фильтры.

По части отображения: добавить свой контейнер в фильтры.

Вот пример для добавления галочки в раздел фильтров:

{
	"operation": "insert",
	"name": "CustomContainer",
	"parentName": "LeftGridUtilsContainer",
	"propertyName": "items",
	"index": 0,
	"values": {
		"id": "CustomContainer",
		"itemType": this.Terrasoft.ViewItemType.CONTAINER,
		"items": []
	}
},
{
	"operation": "insert",
	"name": "CustomFlag",
	"parentName": "CustomContainer",
	"propertyName": "items",
	"values": {
		"caption": {
			"bindTo": "Resources.Strings.CustomFlagCaption"
		},
		"bindTo": "CustomAttribute",
		"controlConfig": {
			"className": "Terrasoft.CheckBoxEdit",
			"checkedchanged": {
				"bindTo": "onCustomFlagChanged"
			}
		}
	}
}

UPD: Точно, ещё для того, чтобы фильтр применялся после изменения фильтра в разделе необходимо в приведённом выше примере в методе onCustomFlagChanged инициировать обновление реестра (this.reloadGridData();).

Так же на момент вызова метода getFilters аттрибут CustomAttribute не изменял своего значения, поэтому был введён новый аттрибут, значение которого менялось так же в методе onCustomFlagChanged.
И, есть вероятность, что придётся помучиться со стилями для того, чтобы фильтр отображался адекватно, при необходимости могу поделиться кодом опять-таки для примера выше.

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

Добрый день!

Был создан обьект как справочник унаследован от (базовый справочник (base))

и мног где использовался в других обьектах

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

(BPM 7.11)

Собственно вопрос как это сделать из справочника раздел?

Нравится

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

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

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

1) Создание страницы редактирования

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

Либо создать по аналогии как в справочнике «Источник лида» (см. Схему «LeadSourcePageV2»).

Либо же попробовать вручную (см. приближенный пример, который по необходимости нужно «дебажить»):

Создаем схему модели представления карточки, наследуемся от «BaseModulePageV2» вводя ее имя заголовка в поле «родительский объект», в разных конфигурациях может быть переведена по-разному, в нашем примере это «Страница активности V2».

Заполняем ее нужными полями, в нашем примере только Name, а объект в нашем примере называется «UsrAccStage»:

define("UsrAccStagePageV2", ["AccountPageV2Resources", "GeneralDetails"],
function(resources, GeneralDetails) {
    return {
        entitySchemaName: "UsrAccStage",
        details: /**SCHEMA_DETAILS*/{}/**SCHEMA_DETAILS*/,
        diff: /**SCHEMA_DIFF*/[
               {
                "operation": "insert",
                "name": "Name",
                "parentName": "Header",
                "propertyName": "items",
                "values": {
                       "bindTo": "Name",
                       "layout": {
                           "column": 0,
                           "row": 0,
                           "colSpan": 12
                      }
                }
            }
        ]/**SCHEMA_DIFF*/,
        attributes: {},
        methods: {},
        rules: {},
        userCode: {}
    };
});

Далее нашей целью является зарегистрировать связь страницы редактирования в базе данных в таблице «SysModuleEdit» через развязочную таблицу «SysModuleEntity» с сущностью объекта, в котором хранится информация. В нашем случае «UsrAccStage». Листинг SQL приводим ниже:

SELECT * FROM SysSchema Where Name = 'UsrAccStagePageV2'
-- UId карточки редактирования = 064A98B5-E6FE-47E7-B9A6-499561BD1347

SELECT * FROM SysSchema Where Name = 'UsrAccStage"

-- колонка UId объекта = E894EBA6-9FBB-4AA7-90E4-6A99B6CD5329
-- проверяем развязочную таблицу

SELECT * FROM SysModuleEntity
WHERE SysEntitySchemaUId = 'E894EBA6-9FBB-4AA7-90E4-6A99B6CD5329'

-- если нет там записи, добавляем:
INSERT INTO SysModuleEntity (SysEntitySchemaUId) VALUES ('E894EBA6-9FBB-4AA7-90E4-6A99B6CD5329')

-- проверяем развязочную таблицу

SELECT * FROM SysModuleEntity
WHERE SysEntitySchemaUId = 'E894EBA6-9FBB-4AA7-90E4-6A99B6CD5329'

-- берем от туда Id = 671F61D8-2E72-47A4-95C7-D67E2C8B723F
INSERT INTO SysModuleEdit (SysModuleEntityId, CardSchemaUId, ActionKindCaption, ActionKindName, PageCaption) VALUES ('671F61D8-2E72-47A4-95C7-D67E2C8B723F', '064A98B5-E6FE-47E7-B9A6-499561BD1347', 'Добавить нашу сущность',
'UsrAccStage','Стадия контрагента')

SELECT * FROM SysModuleEdit WHERE SysModuleEntityId = '671F61D8-2E72-47A4-95C7-D67E2C8B723F'

2) Вопрос по регистрации схемы раздела и самого раздела уже обсуждался на комьюнити (например, https://community.terrasoft.ru/node/26721)

 

Одеяненко Юлия,

Спасибо за оперативность. Пробую.

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

Добрый день.

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

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

Заранее благодарен.

Станислав

Нравится

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

По идее, ничего страшного не должно случиться. Можно создавать разделы на основе существующих объектов, правда, не стандартным образом. Но тем не менее, всё нормально работает. Это всего лишь объект с данными.

Кузнецов Сергей,

Понял, большое спасибо.

Кузнецов Сергей,

Ковынёв Станислав,

Подскажите, пожалуйста, есть ли гайд по такой переделке?

Добрый день. Вот здесь описано: https://community.terrasoft.ru/questions/rucnaa-registracia-razdela

 

А если Вам не срочно - terrasoft обещают сделать это функцию в ближайших релизах (на счет сроков не подскажу):
https://academy.terrasoft.ru/documents/upcoming-releases?_ga=2.22342261…

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