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

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

Суть в том что кнопка нужна только на одной из страниц.

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

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

Как можно красиво побороть?

Спасибо.

Нравится

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

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

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

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

Александр, речь о кастомной кнопке внутри записи, справа от кнопки действий. Ну или внутри действий (так же только внутри записи).

Ваши ссылки изучу. Спасибо)

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

Добрый день!

В моём пакете, который указан в качестве текущего, лежит страница редактирования обращения, в БД она привязана к этому пакету.

Но если отредактировать страницу редактирования через мастер раздела и сохранить, то в пакете Custom создаётся замещающая страница страницы редактирования. То есть моя основная страница при этом не меняется! С чем это может быть связано?

Нравится

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

Натали Вишня,

Попробуйте указать Ваш пакет ещё в системной настройке CustomPackageId.

После изменения системной настройки перезайдите в срм.

Добрый день.

Вам нужно изменить системную настройку [Текущий пакет] (CurrentPackageId).

[Текущий пакет] (CurrentPackageId) — пакет, в котором сохраняются все изменения, внесенные в структуру разделов системы при помощи мастера разделов. Это могут быть, например, изменения, связанные с добавлением колонок в объект раздела либо добавление нового раздела в систему. Тип: справочник. По умолчанию в данной системной настройке установлен пакет [Custom]. Если доработки, выполненные в мастере разделов, нужно перенести в другое приложение, текущий пакет необходимо изменить. Для этого в поле [Значение по умолчанию] выберите из справочника тот пакет, который вы планируете переносить.

Алла, спасибо за ответ, но в этой системной настройке и так стоит мой пакет, а не Custom...

А страница в Вашем пакете тоже замещающая? Или это Вами разработанная страница? А руками (не мастером) в своем пакете эту страницу править можете?

Есть подозрение, что у Вас издатели разные

Лопатин Константин Николаевич пишет:

А страница в Вашем пакете тоже замещающая? Или это Вами разработанная страница? А руками (не мастером) в своем пакете эту страницу править можете?

Есть подозрение, что у Вас издатели разные

Лопатин Константин Николаевич, 

Руками править могу в пакете, с издателем тоже уже проверяли, издатель один. Есть страница casepage, она является родителем для моей страницы.

Натали Вишня,

Попробуйте указать Ваш пакет ещё в системной настройке CustomPackageId.

После изменения системной настройки перезайдите в срм.

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

Раздел создан сторонним пользователем

ошибка вылетает в методе, когда он пытается обратиться к элементу name контейнера в файле all-combined.js

needFlatten: function(e, t) {
        var a = t || !1;
        return (a = !Ext.isEmpty(e.name)) || (Ext.isArray(e) && e.length > 0 ? a = !Ext.isEmpty(e[0].name) : Ext.isObject(e) && Terrasoft.each(e, function(e) {
            a = this.needFlatten(e, a)
        }, this)),
        a
    },

трэйс начинается условно от ViewModelSchemaValidationMixin.js в методе getSchemaDuplicates 

здесь соотвественно всё останавливается на методе Terrasoft.JsonDiffer.getFlatObject

getSchemaDuplicates: function(schema) {
				const viewConfig = schema.viewConfig;
				const messageConfig = {};
				const result = [];
				const pathDelimiter = Terrasoft.JsonDiffer.pathDelimiter;
				const flatViewConfig = Terrasoft.JsonDiffer.getFlatObject(viewConfig, {identifyItemByPath: true});
				Object.keys(flatViewConfig).forEach(function(path) {
					const name = path.split(pathDelimiter).pop();
					const formattedPath = path.split(pathDelimiter).join(".");
					const diffObject = flatViewConfig[path];
					const caption = diffObject.caption ||
						(diffObject.labelConfig && diffObject.labelConfig.caption) ||
						"";
					messageConfig[name] = messageConfig[name] || [];
					messageConfig[name].push({
						path: formattedPath,
						caption: caption
					});
				});
				Object.keys(messageConfig).forEach(function(name) {
					if (messageConfig[name].length > 1) {
						result.push({
							name: name,
							items: messageConfig[name]
						});
					}
				});
				return result;
			},

В чем может быть причина? И буду рад советами по отладке такого клиентского кода, когда я пытался в all-combined.js ставить брэйкпоинты, у меня словно всё зависало просто

Нравится

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

Посмотрите тут и тут

Григорий Чех,

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

"contentType": Terrasoft.ContentType.DROPDOWN

после того, как закомментировал его, всё заработало. Только теперь я не могу найти что это за свойство и какие значения оно может принимать помимо DROPDOWN и есть ли вообще у него такое значение?

{
	"operation": "insert",
	"name": "ITExecutor",
	"values": {
		"enabled": false,
		"layout": {
			"contentType": Terrasoft.ContentType.DROPDOWN,
			"colSpan": 12,
			"rowSpan": 1,
			"column": 12,
			"row": 0,
			"layoutName": "Header"
				  },
		"bindTo": "ITExecutor"
				},
	"parentName": "Header",
	"propertyName": "items",
	"index": 1
}

 

Григорий Чех,

разобрался. свойство "contentType" должно находится внутри "values", а не "layout"

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

У меня запускается некоторый БП, в котором почти на старте открывается страница на редактирование, соответственно там создается задача с заголовком, который я прописываю.

Необходимо отлавливать момент, когда пользователь, не сохранив страницу пытается еще раз запустить этот же БП.

Я пытался сделать это по задаче, но она никак не ссылается на страницу/объект редактирования. 

Как быть?

Нравится

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

БП запускается как по сигналу по какому то действию оператора?

Самое простое решение перед открытием окна менять статус задачи (как вариант добавить в объект какой то признак Передан в работу) И не запускать (или завершать) БП у которых этот признак установлен.

Те

старовый сигнал

проверка что признак не установен

и либо выход

либо установка признака и затем открытие  странички редактирования!

БП запускается как по сигналу по какому то действию оператора?

Самое простое решение перед открытием окна менять статус задачи (как вариант добавить в объект какой то признак Передан в работу) И не запускать (или завершать) БП у которых этот признак установлен.

Те

старовый сигнал

проверка что признак не установен

и либо выход

либо установка признака и затем открытие  странички редактирования!

Григорий Чех,

по меню Действия. Хотелось как проще, ведь система как-то видит какая задача связана с этой страницей и завершает ее после сохранения? Почему мы не можем это увидеть?

Можно, но очень не советую вам на них завязыватся. Они активно изменяются от версии к версии.

Добрый день, как отметил Григорий лучше иметь признак запуска процесса, но вы можете просматривать текущие задачи по процессам они отображаются у клиента из таблицы  SysProcessElementToDo или через js найти и распарсить элемент(если он есть) такого типа там вшит id записи к которой относится страница редактирования id="ProcessDashboardSchemaNotificationContainer-cce9076d-fa47-49a3-bec5-e53450fc421b-ViewModule_RightSideBarModule_ProcessDashboardModule"

В начале БП свяжите процесс с записью. И затем можно искать такие связи

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

Добрый день!

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

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

Но после переноса пакета через svn на тестовую среду, в кнопке добавления продукта появляется следующее http://prntscr.com/jixdiu

Более того, зависимость страницы редактирования от типа не отображается в мастере раздела http://prntscr.com/jixfxu и в настройках страницы меняется radiobutton на "Использовать одну страницу для всех записей"

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

Кто сталкивался с подобным кейсом и как его можно решить?

Нравится

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

Здравствуйте, есть 2 детали: заказы и курьеры.

Заказы связываются с разделом Обращения и связывается с деталью курьеры.

Деталь заказы добавлена на странице редактирования обращения.

Как сделать переход на страницу редактирования курьера через деталь заказы?

Нравится

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

Здравствуйте, Сергей!

Для того, чтоб иметь возможность прямо со страницы обращения из детали "Заказы" переходить на страницу курьера, нужно вывести колонку, которая ссылается на курьера, на деталь. Тогда, если для курьеров зарегистрирован раздел, то в колонке будут ссылки на карточки курьеров (если курьер = контакт, то на карточки контактов). Но должно быть однозначное соответствие курьера заказу (то есть, курьер должен быть в поле, а не n курьеров на детали).

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

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

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

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

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

 

Одеяненко Юлия пишет:

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

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

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

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

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

Подскажите, нигде не могу найти ответ. Есть страница для двухуровневого справочника (По аналогии со справочником "Результат активности по категориям" в интерфейсе 5.х). Из дизайнера страниц запускается, работает (добавляет, удаляет). Как привязать страницу к самому справочнику, чтобы она открывалась из раздела "Справочники"? 

Прикрепленные файлы

Нравится

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

Здравствуйте, Лидия!

Системные составные справочники, основанные на устаревших aspx страницах еще функционируют благодаря таблице «SysLookup». Которая содержит необходимую информацию по страницам редактирования. На пользовательском уровне указать их уже нельзя задать.

 

Вы можете посмотреть, как устроен справочник:

SELECT * FROM [Lookup] WHERE Name = 'Communication option types'

И увидеть у него в последней колонке SysLookupId ссылку на:

SELECT * FROM SysLookup WHERE Id = 'BE01987D-37FE-DF11-B154-001D60E938C6'

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

 

Также aspx страницы не рекомендуются к использованию, если вам необходим справочник на старом интерфейсе, смотрите, как устроен 'Communication option types', но лучше придумать обходное решение на новом интерфейсе.

 

Ниже примерный алгоритм реализации:

 

1. создаете новый справочник, у Вас должна появиться запись в Lookup;

2. добавляете в старую таблицу SysLookup запись:

                -  в SysGridPageSchemaUid это Uid схемы из таблицы SysSchema;

                -  в SysEntitySchemaUid это Uid объекта, который выступает в качестве справочника;

                - в другие колонки заполняете советующими значениями;

3. в таблице Lookup нужного справочника в колонке SysLookupId заполняете Id из пункта 2.

 

Также подобная тема была на community - https://community.terrasoft.ru/questions/sloznyi-spravocnik-v-bpmonline…

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

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

Возникла необходимость доработать стандартный справочник, а именно - реализовать реестр в справочнике и страницу редактирования записей справочника. Реестр реализовать получилось, а страницу он почему-то не видит. При попытке добавления или открытия записи в консоли браузера появляется ошибка "message: Uncaught Terrasoft.ItemNotFoundException: Элемент с ключом null Не существует". Подскажите, возможно кто-нибудь с этим сталкивался?

Нравится

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

Здравствуйте, Сергей!

Без отладки и по описанию сложно сказать в чем проблема, также:

- нет полного листинга кода;
- нет полного понимая, что прописано в БД.

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

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

В БП в элементе "Страница редактирования" в блоке "считать элемент выполненным" стоят условия - поле с датой не равно этому же полю из элемента "Читать данные" в начале БП. По сути условие - должна быть изменена дата. При сохранении карточки в журнале выдает ошибку "Неправильный синтаксис около конструкции ">"". Если извлечь из элемента текст запроса, то после ">" ничего нет. При сравнении даты с параметром - тоже самое.

Нравится

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

В версии 7.8.0 такого нет.

Возможно у чтения данных не установлен признак "Сериализовать в БД"

Признак "Сериализовать в БД" установлен.

Версия какая? Нами выявлены множественные ошибки при работе с параметрами в БП 7.8.2. Решение вырубить проверку корректности заполнения поля. Наибольшие проблемы с элементом "Читать данные". Проявляется, если используется несколько полей из "Читать данные" в рамках одного элемента БП. Есть скрипт, который надо пустить в консоли браузера. Побочный эффект - процесс станет обязательно компилируемым.

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

В продукте sales enterprice 7.8 нужно добавить на страницу раздела "Звонки" поле с типом "файл" для сохранения одной записи звонка.
В конфигурации , в объекте раздела "Звонки" я добавила поле с типом "файл". В мастере раздела это поле недоступно для добавления в схему.
Как добавить это поле на страницу редактирования раздела "Звонки"?

Нравится

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

Здравствуйте, Анастасия!

Мастер раздела bpm'online не умеет работать с полями с типом "Изображение", "Файл".
Для решения Вы можете сделать следующее:
1) Создать поле с типом "Справочник", которое будет ссылаться на объект "Файл и ссылка звонка"
2) Прикрепить запись разговора на деталь "Файлы и ссылки"
3) Реализовать логику переноса ссылки на добавленный файл в созданное Вами поле.

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

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