Вопрос

На странице добавлены две детали с редактируемым реестром. Создал первую и понял, что неправильно. Потом создал вторую корректно и захотел первую удалить (создавал кодом). В мастере ее удалить нельзя. Открыл конфигурацию и удалил строки из схемы раздела, а именно details и diff, касающихся этой детали. Сохранил и очистил кэш. После этого перестали отображаться детали вообще и в консоли появилась ошибка cannot read property "findPrimary". После возвращения кода детали обе появились и работают. Как убрать первую деталь? 

У меня такой же вопрос

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

Очень похоже, что как-то не так удаляете деталь со страницы. Если корректно удалить из details и diff, делать должна удалиться.

Очень похоже, что как-то не так удаляете деталь со страницы. Если корректно удалить из details и diff, делать должна удалиться.

Тёскин Дмитрий Валерьевич,

Проблема в том, что даже ошибиться негде

Вот код страницы полностью:
define("UsrConcertProgram1Page", [],
function() {
    return {
        entitySchemaName: "UsrConcertProgram",
        attributes: {
            "UsrActiveEveryday": {
                    "dataValueType": Terrasoft.DataValueType.INTEGER,
                    "type": Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN,
                    "caption": "UsrActiveEveryday",
                    "value" : "0"
                }
        },
        modules: /**SCHEMA_MODULES*/{}/**SCHEMA_MODULES*/,
        details: /**SCHEMA_DETAILS*/{
            "Files": {
                "schemaName": "FileDetailV2",
                "entitySchemaName": "UsrConcertProgramFile",
                "filter": {
                    "masterColumn": "Id",
                    "detailColumn": "UsrConcertProgram"
                }
            },
            "UsrPerformanceDetail": {
                "schemaName": "UsrPerformanceDetail",
                "entitySchemaName": "UsrPerformance",
                "filter": {
                    "detailColumn": "UsrConcertProgram",
                    "masterColumn": "Id"
                },
            },
            "UsrSchema1Detail660d66ee": {
                "schemaName": "UsrSchema1Detail",
                "entitySchemaName": "UsrConcertPerformance",
                "filter": {
                    "detailColumn": "UsrConcertProgram",
                    "masterColumn": "Id"
                }
            }
        }/**SCHEMA_DETAILS*/,
        businessRules: /**SCHEMA_BUSINESS_RULES*/{}/**SCHEMA_BUSINESS_RULES*/,
        methods: {
            getActiveEverydayConcerts: function() {
                var esq = this.Ext.create("Terrasoft.EntitySchemaQuery", {
                    rootSchemaName: "UsrConcertProgram"
                });
                
                var filterGroup = this.Terrasoft.createFilterGroup();
                
                filterGroup.logicalOperation = this.Terrasoft.LogicalOperatorType.AND;
                filterGroup.add("concertsIsActive",
                this.Terrasoft.createColumnFilterWithParameter(this.Terrasoft.ComparisonType.EQUAL, "UsrIsActive", "1"));
                filterGroup.add("performancePeriodEveryday",
                this.Terrasoft.createColumnFilterWithParameter(this.Terrasoft.ComparisonType.EQUAL,
                "UsrPerformancePeriod", "85A8C133-FF83-4290-9F69-B34EAF627F8C"));
                
                esq.filters = filterGroup;
                
                esq.getEntityCollection(function(result) {
                    if (result.success)
                    {
                        this.set("UsrActiveEveryday", result.collection.getCount());
                    }
                }, this);
            },
            maxEverydayActive: function() {
                var invalidMessage = "";
                var maxActiveEverydayConcertCount = 0;
                var activeEverydayConcertCount = this.get("UsrActiveEveryday");
                this.Terrasoft.SysSettings.querySysSettingsItem("UsrMaxEverydayActiveProgram", function(value) {
                    maxActiveEverydayConcertCount = value;
                }, this);
                
                if (this.get("UsrPerformancePeriod").value == "85A8C133-FF83-4290-9F69-B34EAF627F8C".toLowerCase() &&
                this.get("UsrIsActive") && (activeEverydayConcertCount > maxActiveEverydayConcertCount) && !this.isAddMode()) {
                    invalidMessage = "Допускается не более " + maxActiveEverydayConcertCount +
                    " активных ежедневных концертных программ.";
                }
                if(this.get("UsrPerformancePeriod").value == "85A8C133-FF83-4290-9F69-B34EAF627F8C".toLowerCase() &&
                this.get("UsrIsActive") && (activeEverydayConcertCount >= maxActiveEverydayConcertCount) && this.isAddMode()) {
                    invalidMessage = "Допускается не более " + maxActiveEverydayConcertCount +
                    " активных ежедневных концертных программ.";
                }
                return {
                    fullInvalidMessage: invalidMessage,
                    invalidMessage: invalidMessage
                };
            },
            setValidationConfig: function() {
                this.callParent(arguments);
                this.addColumnValidator("UsrIsActive", this.maxEverydayActive);
                this.addColumnValidator("UsrPerformancePeriod", this.maxEverydayActive);
            },
            onEntityInitialized: function() {
                this.callParent(arguments);
                this.getActiveEverydayConcerts();
            }
        },
        dataModels: /**SCHEMA_DATA_MODELS*/{}/**SCHEMA_DATA_MODELS*/,
        diff: /**SCHEMA_DIFF*/[
            {
                "operation": "insert",
                "name": "UsrName9ed0e254-4ab5-4862-9e79-b18e052d92ab",
                "values": {
                    "layout": {
                        "colSpan": 24,
                        "rowSpan": 1,
                        "column": 0,
                        "row": 0,
                        "layoutName": "ProfileContainer"
                    },
                    "bindTo": "UsrName"
                },
                "parentName": "ProfileContainer",
                "propertyName": "items",
                "index": 0
            },
            {
                "operation": "insert",
                "name": "STRING3bea7972-86d7-4d0e-b4d7-5731d5a6a6b6",
                "values": {
                    "layout": {
                        "colSpan": 24,
                        "rowSpan": 1,
                        "column": 0,
                        "row": 1,
                        "layoutName": "ProfileContainer"
                    },
                    "bindTo": "UsrConcertCode",
                    "enabled": true
                },
                "parentName": "ProfileContainer",
                "propertyName": "items",
                "index": 1
            },
            {
                "operation": "insert",
                "name": "LOOKUP2c6c3d90-34b5-4a43-9b28-26c5c29c6c48",
                "values": {
                    "layout": {
                        "colSpan": 24,
                        "rowSpan": 1,
                        "column": 0,
                        "row": 2,
                        "layoutName": "ProfileContainer"
                    },
                    "bindTo": "UsrOwner",
                    "enabled": true,
                    "contentType": 3
                },
                "parentName": "ProfileContainer",
                "propertyName": "items",
                "index": 2
            },
            {
                "operation": "insert",
                "name": "UsrIsActive3354c9f0-c35f-4c7c-85ec-0b3cc01376b8",
                "values": {
                    "layout": {
                        "colSpan": 12,
                        "rowSpan": 1,
                        "column": 0,
                        "row": 0,
                        "layoutName": "Header"
                    },
                    "bindTo": "UsrIsActive"
                },
                "parentName": "Header",
                "propertyName": "items",
                "index": 0
            },
            {
                "operation": "insert",
                "name": "CreatedOn770eb82e-0b06-4f93-be35-bdd0ddac28b8",
                "values": {
                    "layout": {
                        "colSpan": 12,
                        "rowSpan": 1,
                        "column": 12,
                        "row": 0,
                        "layoutName": "Header"
                    },
                    "bindTo": "CreatedOn"
                },
                "parentName": "Header",
                "propertyName": "items",
                "index": 1
            },
            {
                "operation": "insert",
                "name": "UsrActiveEveryday",
                "values": {
                    "bindTo": "getActiveEverydayConcerts",
                    "caption": "UsrActiveEveryday",
                    "layout": {
                        "colSpan": 12,
                        "rowSpan": 1,
                        "column": 0,
                        "row": 1
                    }
                },
                "parentName": "Header",
                "propertyName": "items",
                "index": 2
            },
            {
                "operation": "insert",
                "name": "Tab75eff25dTabLabel",
                "values": {
                    "caption": {
                        "bindTo": "Resources.Strings.Tab75eff25dTabLabelTabCaption"
                    },
                    "items": []
                },
                "parentName": "Tabs",
                "propertyName": "tabs",
                "index": 0
            },
            {
                "operation": "insert",
                "name": "Tab75eff25dTabLabelGroup46c8d52b",
                "values": {
                    "caption": {
                        "bindTo": "Resources.Strings.Tab75eff25dTabLabelGroup46c8d52bGroupCaption"
                    },
                    "itemType": 15,
                    "markerValue": "added-group",
                    "items": []
                },
                "parentName": "Tab75eff25dTabLabel",
                "propertyName": "items",
                "index": 0
            },
            {
                "operation": "insert",
                "name": "Tab75eff25dTabLabelGridLayoutd14f72b6",
                "values": {
                    "itemType": 0,
                    "items": []
                },
                "parentName": "Tab75eff25dTabLabelGroup46c8d52b",
                "propertyName": "items",
                "index": 0
            },
            {
                "operation": "insert",
                "name": "UsrTeama25e968a-f7f0-4c80-bde3-ed860af75538",
                "values": {
                    "layout": {
                        "colSpan": 12,
                        "rowSpan": 1,
                        "column": 0,
                        "row": 0,
                        "layoutName": "Tab75eff25dTabLabelGridLayoutd14f72b6"
                    },
                    "bindTo": "UsrTeam"
                },
                "parentName": "Tab75eff25dTabLabelGridLayoutd14f72b6",
                "propertyName": "items",
                "index": 0
            },
            {
                "operation": "insert",
                "name": "UsrComment8c10205e-2bf8-42d0-b7fa-605cc32a37af",
                "values": {
                    "layout": {
                        "colSpan": 12,
                        "rowSpan": 2,
                        "column": 12,
                        "row": 0,
                        "layoutName": "Tab75eff25dTabLabelGridLayoutd14f72b6"
                    },
                    "bindTo": "UsrComment",
                    "enabled": true,
                    "contentType": 0,
                    "labelConfig": {
                        "caption": {
                            "bindTo": "Resources.Strings.UsrComment8c10205e2bf842d0b7fa605cc32a37afLabelCaption"
                        }
                    }
                },
                "parentName": "Tab75eff25dTabLabelGridLayoutd14f72b6",
                "propertyName": "items",
                "index": 1
            },
            {
                "operation": "insert",
                "name": "UsrPerformancePeriod8fdfacd0-81ef-4bf3-9ccc-4cb9ab0f5b7b",
                "values": {
                    "layout": {
                        "colSpan": 12,
                        "rowSpan": 1,
                        "column": 0,
                        "row": 1,
                        "layoutName": "Tab75eff25dTabLabelGridLayoutd14f72b6"
                    },
                    "bindTo": "UsrPerformancePeriod",
                    "enabled": true,
                    "contentType": 5
                },
                "parentName": "Tab75eff25dTabLabelGridLayoutd14f72b6",
                "propertyName": "items",
                "index": 2
            },
            {
                "operation": "insert",
                "name": "UsrSchema1Detail660d66ee",
                "values": {
                    "itemType": 2,
                    "markerValue": "added-detail"
                },
                "parentName": "TabsContainer",
                "propertyName": "items",
                "index": 1
            },
            {
                "operation": "insert",
                "name": "NotesAndFilesTab",
                "values": {
                    "caption": {
                        "bindTo": "Resources.Strings.NotesAndFilesTabCaption"
                    },
                    "items": []
                },
                "parentName": "Tabs",
                "propertyName": "tabs",
                "index": 1
            },
            {
                "operation": "insert",
                "name": "Files",
                "values": {
                    "itemType": 2
                },
                "parentName": "NotesAndFilesTab",
                "propertyName": "items",
                "index": 0
            },
            {
                "operation": "insert",
                "name": "NotesControlGroup",
                "values": {
                    "itemType": 15,
                    "caption": {
                        "bindTo": "Resources.Strings.NotesGroupCaption"
                    },
                    "items": []
                },
                "parentName": "NotesAndFilesTab",
                "propertyName": "items",
                "index": 1
            },
            {
                "operation": "insert",
                "name": "Notes",
                "values": {
                    "bindTo": "UsrNotes",
                    "dataValueType": 1,
                    "contentType": 4,
                    "layout": {
                        "column": 0,
                        "row": 0,
                        "colSpan": 24
                    },
                    "labelConfig": {
                        "visible": false
                    },
                    "controlConfig": {
                        "imageLoaded": {
                            "bindTo": "insertImagesToNotes"
                        },
                        "images": {
                            "bindTo": "NotesImagesCollection"
                        }
                    }
                },
                "parentName": "NotesControlGroup",
                "propertyName": "items",
                "index": 0
            },
            {
                "operation": "insert",
                "name": "UsrPerformanceDetail",
                "values": {
                    "itemType": 2,
                    "markerValue": "added-detail"
                },
                //"parentName": "TabsContainer",
                "propertyName": "items",
                "index": 2
            }
        ]/**SCHEMA_DIFF*/
    };
});

 

Удаляю я все с деталью UsrPerformanceDetail

 

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

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

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

Реализовал деталь с редактируемым реестром и карточкой редактирования записи код ниже:

define("AbAccountProductDetail",
	["ConfigurationEnums", "ConfigurationGrid", "ConfigurationGridGenerator", "ConfigurationGridUtilities"],
	function (enums) {
		return {
			entitySchemaName: "AbAccountProduct",
			attributes: {
				"IsEditable": {
					dataValueType: Terrasoft.DataValueType.BOOLEAN,
					type: Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN,
					value: true
				}
			},
			mixins: {
				ConfigurationGridUtilities: "Terrasoft.ConfigurationGridUtilities"
			},
			methods:{
				init: function() {
					this.callParent(arguments);
					this.sandbox.subscribe("[AbAccountProductEntityEventListner]:[RequestToPlatform]:[Exception]", this.accountProductEntityListnerMsgHandler, this);
				},
				
				/*Overrided "BaseGridDetailV2"*/
				editRecord: function(record) {
					var activeRow = record || this.getActiveRow();
					if (!activeRow) {
						return;
					}
					if (!this.getIsCardValid()) {
						return;
					}
					var isCardChanged = this.getIsCardChanged();
					var primaryColumnValue = typeof activeRow === "object" ? activeRow.get(activeRow.primaryColumnName) : activeRow;
					var typeColumnValue = this.getTypeColumnValue(activeRow);
					this.setLastActiveRow(primaryColumnValue);
					if (isCardChanged) {
						this.set("CardState", enums.CardStateV2.EDIT);
						this.set("EditPageUId", typeColumnValue);
						this.set("PrimaryValueUId", primaryColumnValue);
						var args = {
							isSilent: true,
							messageTags: [this.sandbox.id]
						};
						this.sandbox.publish("SaveRecord", args, [this.sandbox.id]);
					} else {
						this.openCard(enums.CardStateV2.EDIT, typeColumnValue, primaryColumnValue);
					}
				},

				accountProductEntityListnerMsgHandler: function() {
					Terrasoft.ServerChannel.on(Terrasoft.EventName.ON_MESSAGE,
					function(scope, message){
							if (!message || message.Header.Sender !== "[AbAccountProductEntityEventListner]:[RequestToPlatform]:[Exception]") {
							return;
						}
						var message2 = message.Body;
						if (!this.Ext.isEmpty(message2)) {
							window.console.info(message2);
							this.Terrasoft.showInformation(message2);
						}
					}, this);
				}
			},
			diff: [
				{
					"operation": "merge",
					"name": "DataGrid",
					"values": {
						"className": "Terrasoft.ConfigurationGrid",
						"generator": "ConfigurationGridGenerator.generatePartial",
						"generateControlsConfig": { "bindTo": "generateActiveRowControlsConfig" },
						"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": "card",
								"markerValue": "card",
								"imageConfig": { "bindTo": "Resources.Images.CardIcon" }
							},
							{
								"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
					}
				}
			]
		};
	});

Пришлось переопределить editRecord():
 

var primaryColumnValue = typeof activeRow === "object" ? activeRow.get(activeRow.primaryColumnName) : activeRow;

т.к. дальше не срабатывало.
сейчас работает - http://prntscr.com/lfe61n
но при переходе на страницу редактирования поле для связи не заполняется - http://prntscr.com/lfe6k4
Подскажите в чем может быть дело?
Заранее благодарен.

У меня такой же вопрос

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

Попробуйте например вызывать openCardInChain и передавать туда значения по умолчанию
 

addChildRecord: function(typeColumnValue, date) {
var selectedItem = this.get("ActiveRow");
var defaultValues = [];
defaultValues.push({
	name: "ParentId",
	value: typeColumnValue
});
defaultValues.push({
	name: "UsrDate",
	value: date
});
var config = {
	sandbox: this.sandbox,
	schemaName: this.getEditPageSchemaName(typeColumnValue),
	operation: ConfigurationEnums.CardStateV2.ADD,
	moduleId: this.getChainCardModuleSandboxId(typeColumnValue),
	defaultValues: defaultValues
};
this.openCardInChain(config);
},

 

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

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

Попробуйте например вызывать openCardInChain и передавать туда значения по умолчанию
 

addChildRecord: function(typeColumnValue, date) {
var selectedItem = this.get("ActiveRow");
var defaultValues = [];
defaultValues.push({
	name: "ParentId",
	value: typeColumnValue
});
defaultValues.push({
	name: "UsrDate",
	value: date
});
var config = {
	sandbox: this.sandbox,
	schemaName: this.getEditPageSchemaName(typeColumnValue),
	operation: ConfigurationEnums.CardStateV2.ADD,
	moduleId: this.getChainCardModuleSandboxId(typeColumnValue),
	defaultValues: defaultValues
};
this.openCardInChain(config);
},

 

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

Версия 7.11.3. Sales Team

Кейс для воспроизведения:
1. в детали с редактируемым реестром открыть существующую запись на редактирование (действия детали - Изменить)
2. Закрыть карточку записи.
При этом в консоли отобразится ошибка "Элемент с ключом [object Object] Не существует "

Анализ ошибки  показал, что в базовой схеме BaseGridDetailV2 (метод getActiveRow в строка primaryColumnValue = this.get("ActiveRow")) в атрибуте ActiveRow содержится объект а не строка с идентификатором, т.о. данный метод отрабатывает с ошибкой при попытке определить выделенную строку в редактируемом реестре. 
Также выявлено, что объект присваивается атрибуту ActiveRow в методе restoreActiveRow (схема BaseGridDetailV2 ).

Когда будет исправлена эта ошибка?

У меня такой же вопрос

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

Игорь, добрый день!

Проверили описанное Вами поведение на базовых деталях с редактируемым реестром - ошибка не воспроизводится. 

Если у Вас есть точный кейс воспроизведения ошибки на чистой сборке, пожалуйста, опишите его нам, мы обязательно возьмем его в работу. Также мы можем рассмотреть данную ошибку на кастомной детали (для этого напишите нам на support@terrasoft.ru), но только при наличии оплаченного "Бизнес" или "Премиум" пакета поддержки, а также сертификата по разработке на платформе bpm’online уровня "Продвинутый".

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

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

Есть редактируемая деталь Материалы (аналог деталей Продукты). В карточку детали добавлено поле Изображение. 

Подскажите как вывести в реестр этой редактируемой детали картинку с карточки детали.

Спасибо!!)

 

У меня такой же вопрос

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

Здравствуйте, Елена

 

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

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

Denys Diachenko, А с привлечением разработчиков  думаете у нас получиться это сделать?)

 

Передал Ваш вопрос разработчикам для дальнейшего анализа и предоставления решения.

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

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

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

Был бы реестр нередактируемый, было, конечно, проще.

Вывести картинку можно и не одну.

Добавляем в diff 

{
	"operation": "merge",
	"name": "DataGrid",
	"values": {
		"activeRowActions":
		[
			{
				"className": "Terrasoft.ImageView",
				"imageSrc": { bindTo: "UsrPhotoLargeURL" },
				"visible": true,
				"wrapClasses": ["gallery-image"]
			}
		]
	}
}

Делаем функцию

clickAllRows: function() {
	var scope = this;
	this.getGridData().collection.keys.forEach(function(item) {
		scope.setActiveRow(item);
	});
 
	this.setActiveRow("");
 
},
 
onRender: function() {
	this.callParent(arguments);
 
	this.clickAllRows();
},

Т.е. в OnRender мы делаем "раскрываем" все строки.

Алексей-Карягин,

Но картинка-то будет только при выделении) Костыльно как-то получается. У меня была идея на основе детали с проектами сделать: рендерить кнопку с изображением в грид, а при выделении контрола в ряде - imageView. Но тоже хз что получится по итогу)

Золотарев Артем Андреевич,

Артем, добрый день! Можете посоветовать, что нам почитать из документации, чтобы сделать такую разработку? Спасибо!

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

Войдите или зарегистрируйтесь, чтобы комментировать

Добрый день!

Реализовал объект залог в заявке, у которого может быть 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.

Войдите или зарегистрируйтесь, чтобы комментировать