Добрый день!

На кастомной странице редактирования в БП разместил обычную деталь с карточкой редактирования (наследует от Базовая схема детали с реестром). На onRender карточки повесил метод updateDetails(). Однако при добавлении записи в деталь обновления не происходит. Добавленная запись отображается в гриде только после настройки колонок. Подскажите, пожалуйста, как решить проблему обновления грида детали.

Нравится

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

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

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

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

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

subscriber пробовали повесить?

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

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

Пробовал, не попадает в отладчике в метод, указанный в subscriber.

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

"DepositInFinApplicationDetail": {
	"schemaName": "snGoldDepositDetail",
	"filter": {
		"masterColumn": "Id",
		"detailColumn": "Id"
	},
	"filterMethod": "goldDetailFilter",
	"subscriber": {
		"methodName": "updateGoldDetail"
	}
},
 
goldDetailFilter: function() {
	var finApplication =  this.get("Id");
	var goldType = ""
	var filterGroup = new this.Terrasoft.createFilterGroup();
	filterGroup.logicalOperation = this.Terrasoft.LogicalOperatorType.AND;
	filterGroup.add("DepositFilter", this.Terrasoft.createColumnFilterWithParameter(
			this.Terrasoft.ComparisonType.EQUAL, "[snDepositInFinApplication:Deposit:Id].FinApplication.Id", finApplication));
	filterGroup.add("DepositTypeFilter", this.Terrasoft.createColumnFilterWithParameter(
			this.Terrasoft.ComparisonType.EQUAL, "[snDepositInFinApplication:Deposit:Id].Deposit.Type.Id", this.goldTypeId));
	return filterGroup;
},
 
	updateGoldDetail: function() {
				var detailId = this.getDetailId("DepositInFinApplicationDetail");
				this.sandbox.publish("UpdateDetail", {
					reloadAll: true
				}, [detailId]);
	},

 

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

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

Александр, дополнительная логика нужна для реализации бизнес-логики.

Бизнес-логику можно реализовать и на уровне объекта, серверной логикой.

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

Добрый день!

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

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

Нравится

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

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

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

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

В детали я добавляю свои пункты меню в функции addToolsButtonMenuItems, делаю пункты

this.getButtonMenuItem({
   Caption: item.Name,
   Click: {"bindTo": "OnTypeMenuClick"},
   tag: item.Id
})

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

Нравится

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

"этот метод не передается" - that's where you're wrong, kiddo.

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

this.getButtonMenuItem({
   Caption: item.Name,
   Click: {"bindTo": "OnTypeMenuClick"},
   tag: {id: item.Id, typeId:item.UsrType.value}
})

 

Варфоломеев Данила,опытным путем удалось выяснить, что Tag надо писать с большой буквы.

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

https://prnt.sc/iv7ddn - есть деталь созданная в конструкторе, как в нее записывать значение в коде.

Например, текст детали = текст из "Адрес места работы" + " 100500" 

 

Юзаркейс: юзар открывает страницу и видит в поле: вычисленный текст при условии что он до этого был пуст

Нравится

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

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

Похожий кейс описан на Академии: https://academy.terrasoft.ru/documents/technic-sdk/7-12/ustanovka-dlya-polya-znacheniya-po-umolchaniyu. Можно попробовать по примеру реализовать Вашу задачу.

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

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

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

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

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

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

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

Нравится

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

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

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

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

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

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

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

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

 

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

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

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

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

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

Приветы, подскажите плиз, делаю деталь по инструкции - https://academy.terrasoft.ru/documents/technic-sdk/7-11/sozdanie-detali…

 

И потом в настройках она видна, но пишет что не зарегистрирована, что и как делать?

Как в https://academy.terrasoft.ru/documents/technic-sdk/7-11/sozdanie-detali… (пункт пять) или как-то иначе?

Нравится

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

"Как в https://academy.terrasoft.ru/documents/technic-sdk/7-11/sozdanie-detali… (пункт пять) или как-то иначе?" - именно.

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

Варфоломеев Данила,

Спасибо.

Сегодня месяц как я узнал про существование Террасофт

Платформа обладает огромным количеством неисправимых преимуществ.

 

Подскажи:

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

https://prnt.sc/iq2cml - ошибка

https://prnt.sc/iq2cym - вроде как ее быть не должно

 

 

 

QArt пишет:

ошибка

Да вроде всё правильно... запрос случайно не в master уходит? или 100% к определённой базе?

Варфоломеев Данила,

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

https://prnt.sc/iqj91v опечатки или что-то не так сделал по образу из академии. 

Какой общий подход к исправлению подобных ошибок?

Можешь подсказать как "правильнее" вести разработку? (где надо писать не на js, а нас c# и как сие потом из js вызывать) Нужно ли EntityShemaQuery пытаться писать на c# и если да то как их потом пробрасывать в js? Проект wcf? Как и куда его добавлять, есть рыба? :)

Помоги крестьянину добраться до города.

QArt,

Здравствуйте, что касается вопросов разработки то Вы сможете найти достаточно богатое описание вместе с примерами на сайте Академии Террасофт по ссылке https://academy.terrasoft.ru/documents/technic-sdk/7-11/dokumentaciya-p…

 

Что касается ошибки, то вероятнее всего это возникает из-за не полностью сгенерированного статического контента.

Для решения попробуйте зайти в конфигурацию приложения и выполнить следующие действия:

1. Обновление структуры БД

2. Генерация исходного кода

3. Полная компиляция приложения

 

После выполнения данных действий выполнить повторное тестирование Вашего кода.

Denys Diachenko,

Спасибо!

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



На данный момент при просмотре  практически любого списка элементов, с ним можно взаимодействовать посредством стандартных кнопок:

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

 

Однако при взаимодействии с деталями приходится пользоваться сложной системой — выделить строчку с элементом, нажать на троеточие над деталью и только потом выбрать интересующий элемент:

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

Нельзя ли в будущих версиях «прикрутить» к элементам детали такие же кнопки/подобные элементы взаимодействия?

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

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

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

Здравствуйте, Денис, Владимир. Данная функция запланирована на ближайшие релизы. Планируем улучшить UX работы с данными в деталях.

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

Добрый день!

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

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

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

Нравится

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

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

 

Ниже приблизительный алгоритм реализации (возможно необходимо будет его доработать): 

Создаем новую схему UsrAccountBillingInfoModuleConfig, подключаем ее в манифесте

там пишем: 

Terrasoft.sdk.Actions.add("AccountBillingInfo", {

    name: "MyActionName",

    title: "MyLocalizibleTitle",

    isVisibleInGrid: true,

    isDisplayTitle: true,

    iconCls: "cf-action-my-icon",

    position: 3,

    actionClassName: "Terrasoft.configuration.MyAction",

});

 

AccountBillingInfo - имя модели, которая используется в детали

isVisibleInGrid - означает, будет ли действие показываться в реестре

Terrasoft.configuration.MyAction - имя класса кастомного действия (нужно создать свой новый класс. Пример можно глянуть тут Terrasoft.configuration.OpenPortalMessagePublisherPageAction)

cf-action-my-icon - название CSS стиля, который добавится к элементу иконки, на вкладке less можно будет иконку для него прописать

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

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

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

Итог. Теперь 4 детали с одинаковым именем зарегестрировано + выдают ошибку при заполнении детали и дальнейшем сохранении.

Как пофиксить?

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

Нравится

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

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

Инструкцию по удалению детали Вы найдете на Академии: https://academy.terrasoft.ru/documents/sales-enterprise/7-11/chasto-zadavaemye-voprosy-po-masteru-razdelov

Ошибка, скриншот которой Вы предоставили, может возникать в том случае, если одно из полей, которое заполняется на детали, ссылается или на несуществующий справочник, или на удаленное значение справочника. Для более детального анализа проблем напишите нам на support@terrasoft.ru, и мы обязательно рассмотрим Ваше обращение.

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

Спасибо, со справочником, да, накосячил frown

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

Возможно ли расположить кнопку напротив каждой строки детали? Например кнопку "Удалить".

Примерно так:

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

Нравится

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

И "Редактировать"!

Не знаю как с кнопками в конце, но в схеме разделов можно подсмотреть код и реализовать такой вариант:

Чисто теоретически можно забиндаться к добавлению записи в грид и вставлять свой контейнер с кнопкой на то место что вам требуется. Ну и конечно придётся поиграться со стилями. Что-то подобное мы уже пытались делать. Одно могу сказать что к добавлению элемента в DOM мы уже имели опыт биндинга и выполнения своей логики, а так же создания произвольных HTML элементов на странице.

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

{
	id: "duplicateGrid",
	className: "Terrasoft.Grid",
	type: "tiled",
	primaryColumnName: "Id",
	activeRow: {bindTo: "activeRow"},
	columnsConfig: [columnsConfig],
	collection: {bindTo: "gridData"},
	activeRowAction: {bindTo: "onActiveRowAction"},
	activeRowActions: [
		{
			className: "Terrasoft.Button",
			style: Terrasoft.controls.ButtonEnums.style.BLUE,
			caption: resources.localizableStrings.IsNotDuplicateCaption,
			tag: "IsNotDuplicate",
			visible: {bindTo: "getGridButtonIsNotDuplicateVisible"}
		},
		{
			className: "Terrasoft.Button",
			style: Terrasoft.controls.ButtonEnums.style.BLUE,
			caption: resources.localizableStrings.IsDuplicateCaption,
			tag: "IsDuplicate",
			visible: {bindTo: "getGridButtonIsDuplicateVisible"}
		}
	]
}

 

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