Создал миникарточку, опираясь на https://academy.terrasoft.ru/documents/technic-sdk/7-16/kak-sozdat-mini-kartochku-dobavleniya. Только в моём случае это было редактирование имени существующего объекта. 

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

onButtonClick: function () {
				debugger;
				var activeRowId = this.get("ActiveRow");
				if (activeRowId) {
					this.openMiniPage({
						recordId: activeRowId,
						operation: Terrasoft.ConfigurationEnums.CardOperation.EDIT,
						entitySchemaName: this.entitySchemaName,
						isFixed: true,
						showDelay: 0,
						miniPageSchemaName: "MyUsrMorpheusMiniPage",
					});
				}
			}

Вот код миникарточки, название сущности MyUsrCar2

define("MyUsrMorpheusMiniPage", [
	"terrasoft",
	"MyUsrCar2File",
	"ConfigurationConstants",
	"css!MyUsrMorpheusMiniPageCss"
], function (Terrasoft, MyUsrCar2File, ConfigurationConstants) {
	return {
		entitySchemaName: "MyUsrCar2",
		attributes: {
			"MiniPageModes": {
				"value": [this.Terrasoft.ConfigurationEnums.CardOperation.EDIT]
			}
		},
		methods: {},
		diff: [
			{
				"operation": "insert",
				"parentName": "MiniPage",
				"propertyName": "items",
				"name": "Name",
				"values": {
					"isMiniPageModelItem": true,
					"layout": {
						"column": 0,
						"row": 0,
						"colSpan": 24
					},
					"controlConfig": {
						"focused": true
					}
				}
			}
		]
	};
 
});

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

 

1. Заголовок для подписи "Name" не был найден.

2. Невозможно найти колонку по конфигурации: "{"layout":{"colSpan":24,"rowSpan":1,"column":0,"row":0},"controlConfig":{"focused":true},"name":"Name"}" .

 

3. MiniPageViewGenerator.js:308 Uncaught TypeError: Cannot read property 'name' of undefined

    at i.getNeedGenerateHyperLink (MiniPageViewGenerator.js:308)

core-base.js:704 user: Supervisor/7f3b869f-34f3-4f20-ab4d-7480a5fdf647

 file: http://localhost:82/0/configuration/6560b43f8738c260f612822f729cc099ru-…

 line: 308

 column: 82



 4. message: Uncaught TypeError: Cannot read property 'name' of undefined 

 date: Tue Jul 07 2020 11:19:54 GMT+0300 (Москва, стандартное время)

 stack: TypeError: Cannot read property 'name' of undefined

    at i.getNeedGenerateHyperLink

 

Пытался решить, как описано тут https://community.terrasoft.ua/questions/dobavlenie-email-kontakta-v-kartocku-obrasenia - не помогло.

Нравится

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

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

Там для других случаев есть статьи Создание мини-карточки и Добавление мини-карточки к произвольному модулю.

 

Судя по сообщению, ошибка в функции getNeedGenerateHyperLink в схеме MiniPageViewGenerator. Эта схема есть в конфигурации, её код виден:

/**
 * @private
 * @param {Object} clonedConfig
 * @returns {Boolean}
 */
getNeedGenerateHyperLink: function(clonedConfig) {
	var itemDataValueType = this.getItemDataValueType(clonedConfig);
	var viewModelColumn = this.findViewModelColumn(clonedConfig);
	var primaryDisplayColumnName = this.getPrimaryDisplayColumnName();
	var isEditable = this.isSchemaEditable(viewModelColumn);
	var isLookup = itemDataValueType === Terrasoft.DataValueType.LOOKUP;
	var isSimpleLookup = viewModelColumn && viewModelColumn.isSimpleLookup;
	var isPrimaryDisplayColumnName = primaryDisplayColumnName === viewModelColumn.name;
	return isPrimaryDisplayColumnName || (isLookup && isEditable && !isSimpleLookup);
 
},

Видимо, в третьей строчке в переменную viewModelColumn попадает не объект, а пустое или объект без свойства name, из-за чего третья с конца строка падает при обращении к нему.

 

Не пробовали в браузере отладиться в этой функции, почему так выходит? Я всю Вашу логику не воспроизводил, а при открытии стандартной мини-карточки добавления контакта эта функция getNeedGenerateHyperLink не выполняется.

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

Почему не опубликовали публичный образ, что мешает сделать и опубликовать соответствующий docker-compose.yml файл? 

Нравится

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

Здравствуйте, Богдан!

 

Docker мы поддерживаем только для .NET Core приложения.

Задача создания (и публикации) образов при сборке .NET Core приложения — в roadmap разработки системы.

 

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

 

Файл docker-compose.yaml делаться не будет, будет только 1 поставка через helm v 3.0.

 

helm хорошо, но не у всех есть k8s. 

Все равно людям придется писать docker-compose.yaml

Отказаться от  docker-compose в пользу helm решено по причине необходимости отказоустойчивости.

 

PS: Планируется публикация  helm v 3.0 пакета для продуктов на платформе .NET Core в сентябре-ноябре.

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

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

Пытался разобраться как добавить кнопку в раздел в мобильном приложении, но пример, как здесь : https://community.terrasoft.ru/articles/kak-dobavit-knopku-v-mobilnom-prilozenii-na-stranice-redaktirovania, ссылается уже на существующие схемы, такие как XGridPageControllerV2 и XGridPageViewV2

но при добавлении новых разделов таких схем нет

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

Нравится

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

Егор, по ссылке приведены схемы для мобильного раздела активностей MobileActivityGridPageControllerV2 и MobileActivityGridPageViewV2. Для других разделов есть аналогичные названия, но без V2: MobileCaseGridPageView и MobileCaseGridPageController, MobileSocialMessageGridPageView и MobileSocialMessageGridPageController. Может, для Вашего раздела такие тоже уже есть?

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

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

Есть раздел Заявка, в нем деталь Габариты, при создании записи на детали читается поле клиент(справочник контрагент) заявки и подставляется в поле, которое находится в Габариты. Это рабоатет.

Этим кодом в UsrMobileqrtRequestDimensionsRecordPageSettings002:

{

       "operation": "insert",

       "name": "CounterpartyOfTheApplication",

       "values": {

          "row": 4,

          "content": "Контрагент в заявке",

          "columnName": "qrtCounterpartyOfTheApplication",

          "dataValueType": 10,

          "operation": "insert"

       },

       "parentName": "settings",

       "propertyName": "groupItems",

       "index": 1

    }

Добавляю поле на страницу Габариты в мобильном приложении, но поле не отображается...в чем может быть проблема?

Пробовал еще обратиться к полу Клиент в UsrMobileqrtRequestDimensionsGridPageSettings002:

{

        "operation": "insert",

        "name": "c18595dd-0c34-426b-b8df-42c76d8bf749",

        "values": {

            "row": 0,

            "content": "Заявка",

            "columnName": "qrtOrder.qrtCustomer",

            "dataValueType": 10,

            "operation": "insert"

        },

        "parentName": "settings",

        "propertyName": "items",

        "index": 0

    },

но без успешно

как можно подобным образом обратиться к полю?

Нравится

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

Приветствую. Я новичок в Creatio. В мастере разделов создал развел с полями, которые имеют тип "Справочник". Но у созданных справочников есть дефолтные поля. как переопределить\добавить свои поля в справочнике?

Нравится

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

В конфигураторе найти объект справочника, добавить нужные поля

Если такой справочник находится в другом пакете, создать замещающий объект, указав родителя имя объекта

В конфигураторе найти объект справочника, добавить нужные поля

Если такой справочник находится в другом пакете, создать замещающий объект, указав родителя имя объекта

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

Возможно кто-то сталкивался с таким кейсом - в бизнеспроцессе открывается страница редактирования, в ней кнопка "Сохранить" при нажатии сразу закрывает страну. Про не закрывание страницы при добавлении на делать даных есть описание кейса на странице академии https://academy.terrasoft.ru/documents/technic-sdk/7-16/kak-sohranyat-ne-zakryvaya-otkrytuyu-biznes-processom-stranicu-redaktirovaniya , но ножно ли сделать что бы поля на странице можно быть сохранить не закрывая страницу? Другими словами при нажатии "Сохранить" страница не закрывалась а кнопка заменялась на "Закрыть"?

Нравится

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

Александр, в статье по той ссылке в начале предлагается, как такое сделать:

Если необходимо сохранить запись несколько раз, не закрывая страницу редактирования, то необходимо методу this.save() в качестве аргумента передавать конфигурационный объект со свойством isSilent равным true. Например:

this.save({isSilent : true});

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

Александр, в статье по той ссылке в начале предлагается, как такое сделать:

Если необходимо сохранить запись несколько раз, не закрывая страницу редактирования, то необходимо методу this.save() в качестве аргумента передавать конфигурационный объект со свойством isSilent равным true. Например:

this.save({isSilent : true});

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

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

Доброго времени суток!

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

Нравится

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

Добрый день!

 

На клиентской части в карточке редактирования Вы можете переопределить метод BasePageV2#onSaved

onSaved: function() {
	this.callParent(arguments);
},

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

Добрый день!

 

На клиентской части в карточке редактирования Вы можете переопределить метод BasePageV2#onSaved

onSaved: function() {
	this.callParent(arguments);
},

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

Если учитывать изменения на объекте процессами, интеграциями (или одновременно разными пользователями), лучше реализовать логику на событии вставки на уровне БП, а затем на сторону браузера передавать по ClientMessageBridge.

Лопатин Константин, Благодарю за совет! 

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

В редакторе страницы есть функция вывода web-cтраницы. Вопрос: как проще всего в URL этой страницы добавить параметр из crm (к примеру ID контрагента)? если можно - как для полного чайника =(

Нравится

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

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

 

Если самостоятельно дорабатывать, вероятно, нужно будет делать свой аналог WebPageModule для отображения и WebPageDesigner для его настройки. А затем дорабатывать DashboardEnums, где задаются все типы элементов итогов. Но это модуль, его так просто не заместить, придётся слишком много всего переделывать.

 

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

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

Добрый день!

Как снять признак этот в схеме:

Изображение удалено.

 

Нравится

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

Добрый день.

 

Можно это сделать запросом на sql:

update SysSchema
set
	IsLocked = 0
where Name = '<Имя схемы>'

 

Добрый день.

 

Можно это сделать запросом на sql:

update SysSchema
set
	IsLocked = 0
where Name = '<Имя схемы>'

 

Это поле IsLocked в таблице SysSchema, можно попробовать снять через базу.

 

Другое дело, какую задачу этим снятием решаете?

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

 

О предназначении поля см. тут, тут и тут.

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

Подскажите на портале пользователь не видит заявку, хотЯ роли в которой он состоит права даны и в заявке она есть.

 

Нравится

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

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

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

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