Добрый день.

Была создана делать "Расходных материалов" в карточке "Обращения".
После заполнения данных, они видны, а если деталь свернуть, то данные тут же исчезают. (На картинке слева заполнена, а справа уже после сворачивания)
Как сделать что бы они сохранялись?

bmp'online ITIL service transitions
Версия 7.6.0.1499

Нравится

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

Алеся, при сворачивании/разворачивании детали срабатывает метод onDetailCollapsedChanged, проверьте не переопределен ли у вас этот метод. Верно ли указана родительская схема у деталии, и не замещена ли BaseDetailV2

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

Алеся, добрый день!
В конфигурации, в пользовательских пакетах Вы можете найти или не найти, если он не был замещен BaseDetailV2 по-поиску через знаки %.
Для того, чтоб посмотреть указанна ли корректно родительская схема, необходимо в конфигурации найти схему детали (именно детали!) "Расходных материалов" и в ее параметрах проверить значение родительской схемы.

BaseDetailV2 в пакетах у меня есть.
С схеме детали, родительский объект стоит - BaseGridDetailV2(Базовая схема детали с реестром).
На картинке код и свойства детали.Скрин

На вид все корректно, сворачивание/разворачивание обрабатывает следующий код:
onDetailCollapsedChanged: function(isCollapsed) {
var profile = this.getProfile();
var key = this.getProfileKey();
if (profile && key) {
profile.isCollapsed = isCollapsed;
this.Terrasoft.utils.saveUserProfile(key, profile, false);
}
this.set("IsDetailCollapsed", isCollapsed);
}
Возможно, у Вас проблема с профилем пользователя, попробуйте почистить профиль. После чего как обычно очистите редис и куки браузера...

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

А как настроена деталь, можете показать скриншотом из мастера раздела, возможно она некорректно приязана к карточке?

А как настроена деталь, можете показать скриншотом из мастера раздела, возможно она некорректно приязана к карточке?

Алеся,

в качестве колонки детали выберите "Обращение".

Сохраните изменения и проверьте.

Всем большое спасибо за помощь, изменила колонку детали на "Обращение" и все заработало.

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

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

Нравится

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

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

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

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

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

Создал отдельную тему, но здесь тоже спрошу - как скопировать права из родительской записи скопировать в объект детали?

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

После включения администрирования по записям, в системе появится объект SysDetailObjectNameRights.
Права на записи раздела хранятся в таблице SysSectionObjectNameRights.

Задача: при изменении записи в разделе перенести права на записи детали.

Решение:
1) Определите Id записей деталей:

select Id from SysDetailObjectName where SectionObjectNameId = 'Id измененной записи'

2) Удалите права на эти записи:

delete from SysDetailObjectNameRights
where RecordId in
(select Id from SysDetailObjectName where SectionObjectNameId = 'Id измененной записи')

3) Теперь Вам необходимо скопировать записи из таблицы SysSectionObjectNameRights в таблицу SysDetailObjectNameRights, изменив RecordId на Id записи детали.

"Демьяник Алексей" написал:После включения администрирования по записям, в системе появится объект SysDetailObjectNameRights.
Права на записи раздела хранятся в таблице SysSectionObjectNameRights.

А кроме того в системе есть таблицы SysAccountRight и SysAccountAddressRight. Их не трогать?

SysAccountRight - таблица, которая хранит права на записи в объекте Account (Контрагент).
SysAccountAddressRight - таблица, которая хранит права на записи в объекте AccountAddress (Адреса контрагента).

При раздаче прав необходимо переносить права с SysAccountRight в SysAccountAddressRight.

ЗЫ. Прошу прощения - в предыдущем посте указал некорректное название таблиц.

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

Добрый день.
Есть задача отобразить рабочий телефон отвтетственного по продаже в ПФ Word. Телефон хранится в детали Средства связи контакта. Как мне получить данные детали Ответственного и отфильтровать их по типу.
Пытался добавить:
1. Через вкл. "Поля печатной формы" -> Системные связи. Однако, там отображается только агрегированные данные (количество, сумма).
2. Через вкладку "Табличные части печатной формы", но добавить туда новые объекты не представляется возможным (ошибка:Невозможно обновить представление или функцию "dbo.VwSysSchemaInfo", так как изменение влияет на несколько базовых таблиц.)

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

Нравится

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

Игорь, а какая используется версия системы?

Я использую BPMOnline Cargo 5.4.0.1555. Но данная проблема является общей для всех версий BPMOnline в части формирования отчётов Word

Может, стоит пойти другим путём?
В карточке контакта есть поле «рабочий телефон»?
Если есть, брать оттуда.
Если нет — добавить поле в объект «контакт» (можно в карточку не выводить) и заполнять его при добавлении-изменении-удалении средства связи на уровне объекта детали или триггером.

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

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

Подскажите, пожалуйста, пару моментов.
1. Пытаюсь реализовать раздел, аналогичный разделу "Счета". В разделе есть поле, где можно выбрать счёт из справочника "счета". Делаю вкладку, где размещается деталь "Продукты в счете". Колонка детали - "Счёт". Колонка объекта - "Счёт". Когда выбираю счёт, сохраняю его, в деталь продукты подгружаются, здесь всё нормально. Но когда создаю новый объект раздела, вместо пустого поля выдаётся список всех возможных продуктов. Как этого избежать - чтобы можно было просто выбрать нужные продукты при создании нового объекта раздела?
2. Делаю в этом же разделе ещё одну вкладку. Туда должна подгружаться пустая деталь для выбора продуктов - как при создании нового счёта. Эти продукты не привязаны к счёту. Как это правильно реализовать?

Спасибо.

Нравится

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

Здравствуйте, Александр!

1) Достаточно сделать поле "Счет" обязательным для заполнения в Вашем разделе - новая запись не будет создана, если поле "Счет" не заполнено, а если поле "Счет" заполнено, то подтянутся продукты со счета.
2) Поле "Счет" является обязательным для заполнения в объекте "Продукты в счете". Для реализации данного функционала Вам необходимо в объекте "Продукты в счете":

  • Сделать поле "Счет" необязательным для заполнения
  • Создать новое справочное поле, которое будет "смотреть" на объект Вашего раздела (назовем его "Связь с разделом"

На детали Вам необходимо будет указать полем для связи с разделом следующие поля: Деталь.Связь с разделом, Раздел.Id

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

У заказчика появилась «хотелка» добавить в детали проекта «Продажи» дубль справочника «Роль в команде» под названием «Статус» с независимым справочником и отдельным столбцом вывода значений в раздел «Детали».
Справочник был создан через настройку справочников.
Как же добавить данный столбец в «Детали» рядом со справочником «Роль в команде»?

Буду благодарен, если кто-то поделится решением.

Нравится

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

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

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

Владимир, насколько я поняла, Вам необходимо добавить в деталь [Проекты] раздела [Продажи] поле справочного типа "Статус".
Для решения задачи необходимо придерживаться последовательности действий, описанных во вложенной инструкции (по аналогии вносить изменения в сервисы детали).

Наталия, спасибо за ответ
Очень скоро понадобится создание новых справочников

Однако, сейчас необходимо в "Детали:продажи" раздела "Контакты" добавить значение справочника "Роль в команде", который сейчас отражен в разделе "Детали:команда" раздела "Продажи"

Есть ли возможность вывести данную аналитику?
Спасибо

Владимир, Вам нужно создавать справочное поле (алгоритм добавления приведен во вложенном файле выше).
Вносить изменения в сервисы tbl_Opportunity, sq_Opportunity, ds_Opportunity и т.д, в качестве датасета для справочного поля нужно указать ds_OpportunityTeamRole.

Наталия, по тому, что получается, делаю вывод, что это не совсем то

Решил показать графически какого результата пытаюсь достичь


Из раздела "продажи" перенести значение нижнего поля в "контакты"

Прошу прощения за назойливость

Владимир, спасибо за визуализацию, вопрос поняла.

Поскольку Вы хотите отобразить в продажах (насколько я вижу именно датасет продаж является датасетом детали [Участники проекта] в контактах) колонку «Статус» из детали [Участники] продажи, с фильтрацией по контакту раздела [Контакты], потребуется прописывать динамическое наполнение колонки.
Реализовать задачу можно следующими вариантами:
1. Добавив в датасет продаж вычисляемое поле.
Однако важно обратить внимание, что колонка будет текстовой, а не с типом справочник, и не будет возможности обращаться к полю при построении графиков/отчетов.

2. Добавив в датасет продаж стандартное справочное поле. Поле нужно будет автоматически заполнять.
Заполнять поле на начальных событиях датасета (например, на AfterOpen), значением статуса после применения фильтра для датасета участников по продаже и контакту.

Наталия, добрый день!
Спасибо за ответ

А есть ли возможность прислать инструкцию по реализации данных пунктов?

Владимир, инструкций, к сожалению, нет, так как подобная реализация не выполнялась.
Но в качестве помощи обратите внимание на:
1. Тему "Вычисляемые поля".
В ней описан принцип добавления вычисляемых полей.
2. Функцию CreateGridViewColumns сервиса wnd_AnalysisDataScript - в данной функции динамически создаются колонки, если Вы будете по второму варианту реализовывать задачу - Вам может пригодиться.

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

Добрый день.
Подскажите пожалуйста механизм реализации двойной детали в BPMOnline 7.2.0.942.
Также интересует есть ли возможность создания древовидных деталей?
Буду признателен за конкретные примеры.

Нравится

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

Добрый день!
По поводу двойной детали. Принципиально можно сделать по-разному. Более простой вариант реализации - в виде двух деталей, которые сообщать через sandbox.
Более сложный - добавлять второй грид (класс 'Terrasoft.Grid') на одну делать.
По поводу древовидной. Пример есть в вертикали XRM, деталь "Структура" (ProjectDetail) раздела "Проекты".
Также см. http://www.community.terrasoft.ru/forum/topic/10157
Если необходимо, могу предоставить исходный код.

t2

Андрей Каспаревич,

Добрый день!

Можете предоставить пример добавления второго грида на одну деталь?

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

Здравствуйте! Появилась небольшая проблема.

Версия 7.1.0.473

{
                                        name: 'magazineInOpp',
                                        schemaName: 'UsrMagazineInOppDetail',
                                        type: Terrasoft.ViewModelSchemaItem.DETAIL,
                                        filterPath: 'UsrOpportunity',
                                        filterValuePath: 'Id',
                                        caption: 'Выпуски',
                                        visible: true,
                                        leftWidth: '60%',
                                        rightWidth: '40%',
                                        wrapContainerClass: 'control-group-container'
                                       
                                }

...
                        this.methods.init = function() {
                                var typeValue = {displayValue: 'xxxxxxxx', value: '2A5A7645-59E6-DF11-971B-001D60E938C6'};
                                this.set('Type', typeValue);
                               
                                this.changeDetailSubscribeByName('magazineInOpp', function() {
                                        var esq = Ext.create('Terrasoft.EntitySchemaQuery', {
                                                rootSchemaName: 'UsrMagazineInOpp'
                                        });
                                        esq.addColumn('PrimaryAmount');
                                        esq.getEntity(this.get('Id'), function(response) {
                                                if (response.success) {
                                                        var entity = response.entity;
                                                        if (entity) {
                                                                this.set('PrimaryAmount', entity.get('PrimaryAmount'));
                                                                this.RecalcAmount();
                                                        }
                                                }
                                        }, this);
                                });
                        };

После добавление записи на деталь magazineInOpp ничего не происходит. Управление в changeDetailSubscribeByName не приходит. В чем может быть дело??

Нравится

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

Акмаль, добрый день.

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

Максим, а что значит "должна реализовывать CardModule"?

Вот код детали:

define('UsrMagazineInOppDetail', ['ext-base', 'sandbox', 'terrasoft', 'UsrMagazineInOpp', 'UsrMagazineInOppDetailStructure',
	'UsrMagazineInOppDetailResources', 'LookupUtilities'],
	function (Ext, sandbox, Terrasoft, UsrMagazineInOpp, structure, resources, LookupUtilities) {
 
		structure.userCode = function () {
			this.entitySchema = UsrMagazineInOpp;
			this.name = 'OpportunityDetailViewModel';
			this.editPageName = 'UsrMagazineInOppPage';
			this.columnsConfig = [
				{
					cols: 10,
					key: [
						{
							name: {
								bindTo: 'UsrMagazine'
							}
						}
					]
				},
				{
					cols: 8,
					key: [
						{
							name: {
								bindTo: 'UsrOpportunity'
							}
						}
					]
				}
			];
			this.loadedColumns = [
				{
					columnPath: 'UsrMagazine'
				}, {
					columnPath: 'UsrOpportunity'
				}
			];
			this.editPages = [
				{
					caption: 'Добавить выпуски',
					name: 'addMagazineItem',
					UId: '',
					bindTo: 'addMagazine'
				}
			];
 
 
			this.methods.addMagazine = function() {
				this.add(null, function() {
					var config = {
						entitySchemaName: 'UsrMagazine',
						multiSelect: true,
						columns: ['UsrCaption']
					};
					LookupUtilities.ThrowOpenLookupMessage(sandbox, config, this.addCallBack, this,
						this.getCardModuleSandboxId());
				});
			};
			this.methods.addCallBack = function(args) {
				var bq = Ext.create('Terrasoft.BatchQuery');
				var oppId = this.filterValue;
				this.selectedRows = args.selectedRows.getItems();
				this.selectedItems = [];
				this.selectedRows.forEach(function(item) {
					item.UsrOpportunityId = oppId;
					bq.add(this.getMagazineInsertQuery(item));
					this.selectedItems.push(item.value);
				}, this);
				if (bq.queries.length) {
					bq.execute(this.onContactInsert, this);
				}
			};
 
			this.methods.getMagazineInsertQuery = function(item) {
				var insert = Ext.create('Terrasoft.InsertQuery', {
					rootSchemaName: 'UsrMagazineInOpp'
				});
				insert.setParameterValue('UsrMagazine', item.value, Terrasoft.DataValueType.GUID);
				insert.setParameterValue('UsrOpportunity', item.UsrOpportunityId, Terrasoft.DataValueType.GUID);
				return insert;
			};
 
			this.methods.onContactInsert = function() {
				this.isClearGridData = true;
				this.load();
			};
 
		};
 
		return structure;
	});

Кстати, заметил, что управление приходит в changeDetailSubscribeByName при удалении записи детали...

Акмаль, видимо забыли исправить строку:
structure.userCode = function () {
this.entitySchema = UsrMagazineInOpp;
this.name = 'OpportunityDetailViewModel';
...

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

Андрей, исправил - ничего не изменилось..

Вот код страницы (взято из дебаггера):

var core = require("core");
core.setModuleDescriptor('Opportunity', {path: "../../configuration/entityschema/72764ea448d4329b849e4066b9ad295e"});
core.setModuleDescriptor('GeneralDetails', {path: "../../configuration/8ec08beafecb6ebfc8ec16878fbe6342"});
core.setModuleDescriptor('BusinessRuleModule', {path: "../../configuration/f39269e10ccc645de933bc1398b43ace"});
core.setModuleDescriptor('BaseFiltersGenerateModule', {path: "../../configuration/d1ede5cb3dc78d453a16b11a8f367b0e"});
core.setModuleDescriptor('ConfigurationConstants', {path: "../../configuration/9c278fb714b211a4cb255b8c5e218968"});
core.setModuleDescriptor('UsrOpportunity1PageResources', {path: "../../configuration/ca1d896c770f13ec6f9cd8d87fa0013f"});
define('UsrOpportunity1PageResources', ['terrasoft'], function(Terrasoft) {
var localizableStrings={
	RevenueGroupTitle: 'Доход',
	SourceGroupTitle: 'Источник',
	DueGroupTitle: 'Закрытие',
	ContactAccountRequire: 'Заполнение одного из полей \"Контрагент\"" или \""Контакт\"" является обязательным.'

Здравтсвуйте, Акмаль!
Обнаружил, что у нас есть бэкап этой БД. Проверил - подписка на изменение детали работает, но у Вас есть еще ошибка в changeDetailSubscribeByName. Этот методы выполняется в контексте страницы "UsrOpportunity1Page", таким образом

this.get('Id')

вернет Id продажи, а запрос строится к объекту "UsrMagazineInOpp", поэтому, если Вы ставите точку останова после проверки результата запроса, она не сработает, так как условие response.success будет false. К тому же, у "UsrMagazineInOpp" нет колонки "PrimaryAmount".

И кстати, почему бы Вам до 7.2 не обновиться? Есть же пакет перехода.

"Андрей Каспаревич" написал:Здравтсвуйте, Акмаль!
Обнаружил, что у нас есть бэкап этой БД. Проверил - подписка на изменение детали работает, но у Вас есть еще ошибка в changeDetailSubscribeByName. Этот методы выполняется в контексте страницы "UsrOpportunity1Page", таким образом
this.get('Id')

вернет Id продажи, а запрос строится к объекту "UsrMagazineInOpp", поэтому, если Вы ставите точку останова после проверки результата запроса, она не сработает, так как условие response.success будет false. К тому же, у "UsrMagazineInOpp" нет колонки "PrimaryAmount".

Андрей, код внутри changeDetailSubscribeByName стоял тестовый. И даже если сделать так:

			this.methods.init = function() {
				var typeValue = {displayValue: 'Продажа подписки', value: '2A5A7645-59E6-DF11-971B-001D60E938C6'};
				this.set('Type', typeValue);
				this.changeDetailSubscribeByName('magazineInOpp', function() {
					 var a = 'aaa';
				});
				//this.set('UsrCount', 10);
			};

управление не приходит в changeDetailSubscribeByName после добавления записи на деталь.

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

Вопрос решился добавлением

this.sandbox.publish('DetailChanged', [this.sandbox.id, null]);

после кастомного добавления записи.

Показать все комментарии
Добавить возможность настраивать итоги в деталях карточки, как в реестре
2 комментария

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

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

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

1. Подскажите такой вопрос в версии 7.0.0.235, скрыть отдельные детали можно в Дизайнере страницы. Каким образом потом их восстановить?

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

2. Чтобы скрыть разделы, нужно удалить запись в таблице SysModule. При этом удаляются связанные записи в других таблицах. Чтобы при необходимости разделы восстановить, в какие таблицы необходимо вносить изменения?

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

Нравится

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

Здравствуйте, Александр!
1. Таблица называется [EditPageModification]. В ней для каждой страницы сохраняются изменения, выполненные с помощью дизайнера. Удалением записи из этой таблицы можно восстановить исходный вид страницы.
2. Чтобы скрыть разделы, лучше удалять из таблицы [SysModuleInSysModuleFolder]. Если Вы удалили регистрацию раздела из [SysModule], то можно заново зарегистрировать раздел с помощью хранимой процедуры [tsp_RegisterSection]. Подробней можно прочитать в SDK (пункт "Регистрация раздела в системе") или в этой статье.

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

Добрый день.

Столкнулся с проблемой, появилась необходимость изменить форму "Базовая страница файла и ссылки", в итоге унаследовался и реализовал новую форму.

При добавлении созданной страницы к деталям, столкнулся с проблемой дублирования деталей и как следствие данных.

Как можно отключить автоматическое добавление деталей по признаку "*File" или указать какую страницу необходимо использовать для отображения данной детали.

Нравится

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

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

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

Сергей могли бы рассказать каким образом?

Когда я захожу в Рабочие места -> Детали то там наблюдаю деталь которую создал я.

Но при просмотре данных появляется 2 вкладки, одна которую создал я вторая рисуется автоматом.

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

Схема InitializeDetails метод GetAutoDetails

Данная строка позволяет скрыть автоматически добавляемую деталь «Файлы и ссылки» из Раздела «Контакты»

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