Добрый день!

Реализовал объект залог в заявке, у которого может быть 2 типа залога: Депозит и Недвижимость. Для каждого типа создал свою деталь, в котором выводятся только записи соотв. типа. Мне нужно, чтобы при редактировании записи из детали открывалась страница с типом залога, который в детали. Создал две разные страницы для редактирования сущности.

Далее выполнил привязку в таблицах SysDetail, SysModuleEntity, SysModuleEdit.

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

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

Нравится

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

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

Либо же сделать две полностью разных детали, информация с которых хранится в двух отдельных объектах и таблицах БД.

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

Мною была создана деталь по это инструкции: https://academy.terrasoft.ru/documents/technic-sdk/7-10/sozdanie-detali-s-redaktiruemym-reestrom

 

С помощью SQL запроса деталь была зарегистрирована. И затем добавлена на вкладку [Доставка] страницы заказа, через мастер.  По полям Колонка детали: запрос и колонка объекта: id.

В схему детали был добавлен код:

        attributes: {            
            "UsrOrder": {
                dependencies: [
                    {
                        columns: ["UsrOrder"],
                        methodName: "calculateBalance"
                    }
                ]
            }
        },
 
        methods: {
            calculateBalance: function() {
                var param1 = this.get("UsrOrder");
console.log(param1);
            }
        },

 

В результате метод  calculateBalance не срабатывает.

Как реализовать отлов события изменения значения колонки и изменение соседних колонок в методе сработавшим на изменение.

Нравится

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

У меня абсолютно такой же способ срабатывает. Вы компилировали конфигурацию после регистрации страницы через sql?

Варфоломеев Данила,  полностью перекомпилировал конфигурацию, не помогло. А так же не знаю, плохо ли, такая ошибка после нажатия на кнопку обновить выбранные в базе данных: Не удалось обновить структуру для схем: UsrCourierServiceDetail ....   

Такой вопрос, нужно ли, где-либо прописывать bindTo на атрибут, может поэтому событие не происходит?

То что осталась ошибка "Не удалось обновить структуру для схем: UsrCourierServiceDetail" - плохо. Поскольку структура БД не была обновлена, и там попросту нет таблицы с актуальными колонками UsrCourierServiceDetail. Потому сначала нужно решить проблему с обновлением структуры БД, после выполнить перекомпиляцию приложения. После внесенных изменений должен отрабатывать метод calculateBalance.

Привет

Внимательно разберитесь с примером https://academy.terrasoft.ru/documents/technic-sdk/7-10/dobavlenie-vych…

Вы пытаетесь использовать вычисляемый атрибут, который пересчитывается с помощью метода calculateBalance при изменении колонки UsrOrder. А так как колонка детали UsrOrder никогда  не меняется после создания, то и метод не вызывается :)

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

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

Всем привет!

Я столкнулся со странной ошибкой: добавил деталь с редактируемым реестром на карточку Продажи и при нажатии на +, пропадает надпись "нет данных" и появляется ошибка в консоли: "Uncaught Terrasoft.UnsupportedTypeException: null is unsupported type".

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

Кто-нибудь сталкивался с такой ошибкой и такими странностями? В какую сторону копать, чтобы решить проблему?

Заранее спасибо за ответы!

Нравится

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

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

Выход один: жамкаете на all-combined.js, делаете prettyPrint и вперед, дебажить всю свалку, смотреть в каком из параметров null.

Ставлю на то, что в defaultValues не приходит колонка связи с карточкой :)

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

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

Нравится

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

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

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

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

В 7,9 делал аналогично и работало....на что обратить внимание?

Нравится

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

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

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

В случае, если данная рекомендация не решит Вашей проблемы, пожалуйста, напишите письмо с детальным описанние проблемы в службу поддержки - support@terrasoft.ru

Андрей. в моем случае.
1. Создаю объект
2. Создаю деталь
3. Добавляю деталь через мастер раздела
4. Проверяю, появление детали, настраиваю колонки
5. Меняю код в детали который указан в инструкции
6. Детали нет в отображении раздела, а через мастер раздела она показывается и настроить можно.

в тех.поддержке мой тикет забрили т.к. я не разработчик

"Юсупов Марат" написал: Детали нет в отображении раздела

Деталь должна быть в карточке. В консоли тоже нет ошибок?

В консоли пусто по ошибкам.

Должно работать, попробуйте все еще раз почистить, перезапустить, итд. Редис, Кеш. Посмотрите в крайнем случае как сделаны базовые детали с ред. реесстром, может где-то опечатались. Если не поможет, попробуйте еще раз. Сделайте в соседнем разделе, тестовую деталь с ред. реестром. Без ошибок, без доступа к сайту, сложно что либо подсказать.

Коллеги, добрый день!
Та же проблема в 7.10
Пытаюсь создать деталь с редактируемым реестром на карточке ConfItem, по аналогии с деталью ServiceEngineer на ServiceItem.
Деталь видна только в мастере раздела ConfItem, а в отображении пусто.

Схема детали:

define("UsrServiceEngineerCiDetail", ["terrasoft", "ConfigurationGrid", "ConfigurationGridGenerator", "ConfigurationGridUtilities"],
	function(Terrasoft) {
		return {
			entitySchemaName: "UsrServiceEngineerCI",
			attributes: {
				"IsEditable": {
					"dataValueType": Terrasoft.DataValueType.BOOLEAN,
					"type": Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN,
					"value": true
				}
			},
			mixins: {
				ConfigurationGridUtilites: "Terrasoft.ConfigurationGridUtilities",
				OrderUtilities: "Terrasoft.OrderUtilities"
			},
			messages: {},
			methods: {},
			diff: [
				{
					"operation": "merge",
					"name": "DataGrid",
					"values": {
						"className": "Terrasoft.ConfigurationGrid",
						"generator": "ConfigurationGridGenerator.generatePartial",
						"generateControlsConfig": {"bindTo": "generateActiveRowControlsConfig"},
						"changeRow": {"bindTo": "changeRow"},
						"unSelectRow": {"bindTo": "unSelectRow"},
						"onGridClick": {"bindTo": "onGridClick"},
						"initActiveRowKeyMap": {"bindTo": "initActiveRowKeyMap"},
						"activeRowActions": [
							{
								"className": "Terrasoft.Button",
								"style": this.Terrasoft.controls.ButtonEnums.style.TRANSPARENT,
								"tag": "save",
								"markerValue": "save",
								"imageConfig": {"bindTo": "Resources.Images.SaveIcon"}
							},
							{
								"className": "Terrasoft.Button",
								"style": this.Terrasoft.controls.ButtonEnums.style.TRANSPARENT,
								"tag": "cancel",
								"markerValue": "cancel",
								"imageConfig": {"bindTo": "Resources.Images.CancelIcon"}
							},
							{
								"className": "Terrasoft.Button",
								"style": this.Terrasoft.controls.ButtonEnums.style.TRANSPARENT,
								"tag": "remove",
								"markerValue": "remove",
								"imageConfig": {"bindTo": "Resources.Images.RemoveIcon"}
							}
						],
						"listedZebra": true,
						"activeRowAction": {"bindTo": "onActiveRowAction"},
						"multiSelect": false
					}
				}
			]
		};
	});

Схема ConfItemPage:

define("ConfItemPage", [], function() {
	return {
		entitySchemaName: "ConfItem",
		details: /**SCHEMA_DETAILS*/{
			"UsrServiceEngineerCiDetail": {
					"schemaName": "UsrServiceEngineerCiDetail",
					"entitySchemaName": "UsrServiceEngineerCI",
					"filter": {
						"detailColumn": "UsrConfItem",
						"masterColumn": "Id"
					}
				}
		}/**SCHEMA_DETAILS*/,
		diff: /**SCHEMA_DIFF*/[
	{
					"operation": "insert",
					"name": "UsrServiceEngineerCiDetail",
					"values": {
						//"itemType": this.Terrasoft.ViewItemType.DETAIL
						"itemType": 2,
						"markerValue": "added-detail"
					},
					"parentName": "GeneralInfoTab",
					"propertyName": "items",
					"index": 4
				}
]/**SCHEMA_DIFF*/,
		methods: {},
		rules: {},
		businessRules: /**SCHEMA_BUSINESS_RULES*/{}/**SCHEMA_BUSINESS_RULES*/
	};
});

Бакалов Павел очистите кэш. Иногда бывает что не отображается изза старых данных.
И еще момент смотрите в консоли ошибки.

Кэш и редис чистил - не помогает.

Напишите письмо с детальным описанние проблемы в службу поддержки - support@terrasoft.ru и предоставлением доступа к сайту. Пускай посмотрят на деталь по факту, дальше гадать что могло пойти не так на форуме сложно.

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

Добрый день!

Создала деталь с редактируемым реестром согласно инструкции из документации https://academy.terrasoft.ru/documents/technic-sdk/7-9/sozdanie-detali-s...
Деталь создалась корректно. Единственное, что меня смутило, что когда я выбрала вариант "Выбрать несколько записей" для данной детали, то деталь никак не изменилась. Для обычной детали появляется поле типа checkbox.
Как я могу включить возможность множественного выбора?
Пробовала добавить в attributes
// Признак множественного выбора
"multiSelect": {
// Тип данных — логический.
dataValueType: Terrasoft.DataValueType.BOOLEAN,
// Тип атрибута — виртуальная колонка модели представления.
type: Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN,
// Устанавливаемое значение.
value: true
}
но ничего не изменилось.

Попутно возник второй вопрос: а что можно делать с несколькими выбранными записями? Видела возможность удаления. А есть какие-то еще варианты использования выбора нескольких записей детали?

Нравится

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

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

Для реализации множественного выбора для детали необходимо замещать действие нажатия кнопки добавления, в её обработчике открывать справочник с параметром мультивыбора, и в колбеке выбранные записи уже программно добавлять на деталь.
Пример был в соседней теме:
http://www.community.terrasoft.ru/forum/topic/24705
По поводу что еще можно делать с выбираемыми галочками записями, в принципе, что угодно, список айдишников у вас есть, можете их хоть менять, хоть удалять, статьи по EntitySchemaQuery на академии вам в помощь.

"Максим Шевченко" написал:Для реализации множественного выбора для детали необходимо замещать действие нажатия кнопки добавления, в её обработчике открывать справочник с параметром мультивыбора, и в колбеке выбранные записи уже программно добавлять на деталь.

Мне кажется, мы говорим о разных вещах. Я имела в виду функциональность, которая реализована для детали График поставок и оплат вкладки Итоги раздела Заказы. Во вложении скрины 1 и 2. Я создала деталь с редактируемым реестром Курьерская служба по инструкции. Вариант "Выбрать несколько записей" у меня есть (скрин 3), но после его выбора чекбоксы не вышли(результат на скрине 4, ожидалось, что будет как на скрине 2)

"Максим Шевченко" написал:По поводу что еще можно делать с выбираемыми галочками записями, в принципе, что угодно, список айдишников у вас есть, можете их хоть менять, хоть удалять, статьи по EntitySchemaQuery на академии вам в помощь.

Спасибо!

"Zaitova Liubov" написал:"Выбрать несколько записей"

Теперь понял. К сожелению такой возможности для ред. реестра на данный момент еще нет.

"Максим Шевченко" написал:
Zaitova Liubov пишет:

"Выбрать несколько записей"

Теперь понял. К сожелению такой возможности для ред. реестра на данный момент еще нет.


А как же деталь "График поставок и оплат" вкладки "Итоги" раздела "Заказы"? Там же эта функциональность есть.
Или она есть только в некоторых базовых деталях,а сами мы не можем создать такую деталь?

Деталь "График поставок и оплат" является уникальной и создать подобную базовыми средствами (без доработок на уровне схем) невозможно. Код самой детали Вы можете посмотреть в схеме SupplyPaymentDetailV2 из пакета Passport.

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

Коллеги, доброго времени суток.

Создали деталь с редактируемым реестром, всё по примеру: https://academy.terrasoft.ru/documents/technic-sdk/7-8/sozdanie-detali-s... + к детали добавлен выбор из справочника.

Вопрос - можно ли одну из колонок детали сделать только для чтения? Колонка нужна для отображения данных, но их нельзя изменять.

Версия 7.8.

Заранее спасибо за ответ.

Нравится

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

Здравствуйте
Нужно в схеме детали для этой колонки установить свойство "enabled": false

Роман, здравствуйте! Можете пояснить - вот например, массив модификаций в схеме детали с редактируемым реестром:

// Массив модификаций.
            diff: /**SCHEMA_DIFF*/[
                {
                    // Тип операции — слияние.
                    "operation": "merge",
                    // Название элемента схемы, над которым производится действие.
                    "name": "DataGrid",
                    // Объект, свойства которого будут объединены со свойствами элемента схемы.
                    "values": {
	                    "className": "Terrasoft.ConfigurationGrid",
	                    "generator": "ConfigurationGridGenerator.generatePartial",
	                    "generateControlsConfig": {"bindTo": "generatActiveRowControlsConfig"},
	                    "changeRow": {"bindTo": "changeRow"},
	                    "unSelectRow": {"bindTo": "unSelectRow"},
	                    "onGridClick": {"bindTo": "onGridClick"},
	                    "activeRowActions": [
	                            {
	                                    "className": "Terrasoft.Button",
	                                    "style": this.Terrasoft.controls.ButtonEnums.style.TRANSPARENT,
	                                    "tag": "save",
	                                    "markerValue": "save",
	                                    "imageConfig": {"bindTo": "Resources.Images.SaveIcon"}
	                            },
	                            {
	                                    "className": "Terrasoft.Button",
	                                    "style": this.Terrasoft.controls.ButtonEnums.style.TRANSPARENT,
	                                    "tag": "cancel",
	                                    "markerValue": "cancel",
	                                    "imageConfig": {"bindTo": "Resources.Images.CancelIcon"}
	                            },
	                            {
	                                    "className": "Terrasoft.Button",
	                                    "style": this.Terrasoft.controls.ButtonEnums.style.TRANSPARENT,
	                                    "tag": "remove",
	                                    "markerValue": "remove",
	                                    "imageConfig": {"bindTo": "Resources.Images.RemoveIcon"}
	                            }
	                    ],
	                    "initActiveRowKeyMap": {"bindTo": "initActiveRowKeyMap"},
	                    "activeRowAction": {"bindTo": "onActiveRowAction"},
	                    "multiSelect": {"bindTo": "MultiSelect"},
	                    "type": "listed",
			    "listedConfig": {
			    "name": "DataGridListedConfig",
							"items": [
								{
									"name": "UsrRoomNameLinkListedGridColumn",
									"bindTo": "UsrRoomNameLink",
                                                                        "enabled":false, 
									"position": {
										"column": 1,
										"colSpan": 10
									}
								},
								{
									"name": "UsrRoomsCountListedGridColumn",
									"bindTo": "UsrRoomsCount",
									"position": {
										"column": 11,
										"colSpan": 5
									}
								}
							]
						},
	            	}
                }
            ]/**SCHEMA_DIFF*/

UsrRoomNameLink - название той самой колонки, для которой требуется запретить редактирование. Если я там указываю enabled:false - это не срабатывает.

Попробуйте на том месте
"values": { "enabled":false}
только с запятой

Роман, всё равно не помогло.

Роман, всё равно не помогло.

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

Денис, колонку можно (и нужно) сделать недоступной для редактирования на странице редактирования детали.
Посмотрите как это реализовано в детали "Продукт в заказе" (OrderProductDetailV2). Реализация недоступности поля для редактирования происходит в OrderProductPageV2.

Всем спасибо за советы, задачу решил при помощи бизнес-правил.

"Смородинов Денис" написал:OrderProductDetailV2

Денис, подскажите как?

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

Добрый день!
Работаю в версии 7.8. В разделе "Продажи" есть вкладка "Продукты" внутри которой есть базовая деталь "Продукты в продаже". Цель: сделать базовую деталь "Продукты в продаже" с редактируемым реестром и добавить туда дополнительные поля.
Для этого:
- создал замещающий объект OpportunityProductInterest, куда добавил свои необходимые поля;
- создал замещающий клиентский модуль OpportunityProductPageV2, куда добавил свои поля;
- создал свою схема детали "Продукт в продаже" SuOpportunityProductDetailV2 (родительский объект Базовая схема детали с реестром ( NUI )), куда добавил следующий код:

define("SuOpportunityProductDetailV2", ["ConfigurationGrid", "ConfigurationGridGenerator",
   "ConfigurationGridUtilities"],
   function() {
   return {
      entitySchemaName: "OpportunityProductInterest",
      attributes: {
         "IsEditable": {
            dataValueType: Terrasoft.DataValueType.BOOLEAN,
            type: Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN,
            value: true
         }
      },
      details: {},
      diff: [
         {
            "operation": "merge",
            "name": "DataGrid",
            "values": {
               "className": "Terrasoft.ConfigurationGrid",
               "generator": "ConfigurationGridGenerator.generatePartial",
               "generateControlsConfig": {"bindTo": "generatActiveRowControlsConfig"},
               "changeRow": {"bindTo": "changeRow"},
               "unSelectRow": {"bindTo": "unSelectRow"},
               "onGridClick": {"bindTo": "onGridClick"},
               "activeRowActions": [
                  {
                     "className": "Terrasoft.Button",
                     "style": this.Terrasoft.controls.ButtonEnums.style.TRANSPARENT,
                     "tag": "save",
                     "markerValue": "save",
                     "imageConfig": {"bindTo": "Resources.Images.SaveIcon"}
                  },
                  {
                     "className": "Terrasoft.Button",
                     "style": this.Terrasoft.controls.ButtonEnums.style.TRANSPARENT,
                     "tag": "cancel",
                     "markerValue": "cancel",
                     "imageConfig": {"bindTo": "Resources.Images.CancelIcon"}
                  },
                  {
                     "className": "Terrasoft.Button",
                     "style": this.Terrasoft.controls.ButtonEnums.style.TRANSPARENT,
                     "tag": "remove",
                     "markerValue": "remove",
                     "imageConfig": {"bindTo": "Resources.Images.RemoveIcon"}
                  }
               ],
               "initActiveRowKeyMap": {"bindTo": "initActiveRowKeyMap"},
               "activeRowAction": {"bindTo": "onActiveRowAction"},
               "multiSelect": false
            }
         }
      ],
      mixins: {
         ConfigurationGridUtilites: "Terrasoft.ConfigurationGridUtilities"
      },
      methods: {
                addRecord: function() {
                                        var defValues = this.get("DefaultValues") || [];
                                        defValues.push({
                                                name: "Quantity",
                                                value: 1
                                        });
                                        defValues.push({
                                                name: "OfferDate",
                                                value: new Date()
                                        });
                                        this.set("DefaultValues", defValues);
                                        this.callParent(arguments);
                                },

                               
                                getFilterDefaultColumnName: function() {
                                        return "Product";
                                },

                                getGridDataColumns: function() {
                                        return {
                                                "Product.Name": {path:  "Product.Name"}
                                        };
                                }
      }
   };
});
;

- в OpportunityPageV2 переопределил базовую деталь

//Переопределение базовой детали "Продукт в продаже(OpportunityProduct)"
                        OpportunityProduct: {
                                "schemaName": "SuOpportunityProductDetailV2",
                                "entitySchemaName": "OpportunityProductInterest",
                                "filter": {
                                        "detailColumn": "Opportunity",
                                        "masterColumn": "Id"
                                }
                        }

В результате:
- поля добавились;
- имею ту же деталь, только вместо нередактируемых полей выводится строка с редактируемыми полями. То что мне и нужно, но когда я нажимаю на +, то не открывается карточка для добавления полей, а вместо этого добавляется строка с полями.
Хотелось бы сделать, чтобы октрывалась карточка, как это было в базовой детали. Возможно ли это?

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

Нравится

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

Здравствуйте, Кирилл.

За функционал открытия новой страницы редактирования, при нажатии кнопки "+" отвечает метод addRecord из схемы "BaseGridDetailV2". Вам стоит смотреть в сторону переноса логики данного метода в схему детали "SuOpportunityProductDetailV2".

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