Привет.

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

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

В БД скорей всего всё нормально, потому что при создании/открытии записей из данного раздела всё ок.

Идеи?

7.14.0.597

Нравится

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

Андреев Андрей Сергеевич,

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

Также рекомендую задуматься об обновлении, сейчас уже актуальной является версия 7.14.3.

Добрый день.

Что значит открывается неверная карточка редактирования?

Уточните, для данного раздела несколько карточек редактирования?

Алла Савельева, Есть "Карточка 1" которая открывается если поле "Категория 1" и аналогично есть "Карточка 2" для "Категории 2" .

При открытии/добавлении из раздела открывается правильная карточка(для Категории 1 - Карточка 1, для Категории 2 - Карточка 2). При открытии записи через лукапное поле из раздела/карточки открывается всегда "Карточка 1" независимо от категории. 

Андреев Андрей Сергеевич,

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

Также рекомендую задуматься об обновлении, сейчас уже актуальной является версия 7.14.3.

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

Добрый день.

Есть задача добавлять в продукт сопряженные продукты (нечто вроде матрицы). При этом есть требование, чтобы при добавлении сопряженных продуктов были доступны все способы фильтрации и поиска - как в разделе Продукты (в том числе, Группы и Каталог). В связи с этим было принято решение создать страницу CrossProductSectionV2, унаследованную от ProductSectionV2. Эта страница открывается при нажатии нужной копки на странице ProductPageV2. Пробовали два подхода к открытию, но оба сопряжены с определенными проблемами. 

1. Через this.sandbox.loadModule

			addProductsExtended: function() {
				/// <summary>Открывает раздел продуктов для выбора и добавления в матрицу.</summary>
				var parameters = {
					viewModelConfig: {
						NrbBaseProduct: this.getBaseProduct()
					}
				};
 
				var instanceConfig = {
					schemaName: "CrossProductSectionV2",
				    isSchemaConfigInitialized: true,
				    entitySchemaName: "Product",
				    useHistoryState: true,
				    isSeparateMode: true,
				    isInChain: true
				};
				var config = {
					renderTo: "centerPanel",
				    id: this.getCrossProductSectionModuleId(),
				    instanceConfig: instanceConfig,
				    parameters: parameters,
				    keepAlive: true
				};
 
				this.sandbox.loadModule("SectionModuleV2", config); 
 
			},
 
			getCrossProductSectionModuleId: function() {
				/// <summary>Формирует идентификатор модуля для добавления продуктов в матрицу.</summary>
				return this.sandbox.id + "_CrossProductSectionV2";
			},
 
			getBaseProduct: function() {
				/// <summary>Вовзращает идентиификатор базового продукта для матрицы.</summary>
				var value = this.get("Id") || this.get("PrimaryColumnValue");
				var displayValue = this.get(this.primaryDisplayColumnName);
				var baseProduct = {
					value: value,
					displayValue: displayValue
				};
				return baseProduct;
			}

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

Немного некорректно отображается содержимое GridUtilsContainer (съедена верхняя часть), также показан какой-то toggle при нажатии на который - чистый лист (хеш при этом сменяется на что-то невразумительное - без имени страницы ProductPageV2)

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

 

 

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

 

Ровно то же самое происходит и при нажатии кнопки Закрыть - разве что toggle также исчезает

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

На кнопку Закрыть в CrossProductSectionV2 повешен простой обработчик

			onCloseButtonCustomClick: function() {
				/// <summary>Обработчки нажатия на кнопку Закрыть.</summary>
 
				this.sandbox.publish("BackHistoryState");
			},

 

2. Другой способ открытия - через PushHistoryState

			addProductsExtended: function() {
				/// <summary>Открывает раздел продуктов для выбора и добавления в матрицу.</summary>
				var parameters = {
					viewModelConfig: {
						NrbBaseProduct: this.getBaseProduct()
					}
				};
				var stateObj;
				var requestUrl;
		  		var params = this.sandbox.publish("GetHistoryState");
				stateObj = {
					schemaName: "CrossProductSectionV2",
				    isSchemaConfigInitialized: true,
				    entitySchemaName: "Product",
				    useHistoryState: true,
				    isSeparateMode: true,
				    isInChain: true,
				    parameters: parameters,
				    id: this.getCrossProductSectionModuleId()
				};
				requestUrl = "SectionModuleV2/CrossProductSectionV2";
 
				this.sandbox.publish("PushHistoryState", {
					hash: requestUrl,
					stateObj: stateObj
				});
			},

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

Также Закрытие, в случае если, открывались и закрывались Группы и/или Расширенная фильтрация произойдет только после n-го нажатия на кнопку Закрыть, где n - число раз когда открывали Группы или Расширенную фильтрацию.

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

Нравится

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

Что в это время отображается в консоли и на панели Network? Все запросы корректны? Ошибок никаких нет?

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

Можно ещё третий подход: сделать в разделе продуктов действие «Сопрячь» с выбором нескольких записей. Выбираете два продукта, пользуясь группами, каталогом и прочим, затем запускаете действие, а оно создаёт запись в объекте детали связи многих ко многим одного продукта с другим.

Александр, спасибо за ответ. Эту задачу на текущий момент решили способом 2, устранив вот этот момент

Также Закрытие, в случае если, открывались и закрывались Группы и/или Расширенная фильтрация произойдет только после n-го нажатия на кнопку Закрыть, где n - число раз когда открывали Группы или Расширенную фильтрацию.

Устранили путем переопределения пары методов на пустые

			removeCardHistoryState: Terrasoft.emptyFn,
 
			setInitialHistoryState: Terrasoft.emptyFn,

Но дальше  - больше. Теперь хотят, чтобы во всех местах, где есть lookup поля Продукт - была возможность поиска по группам и Каталогу. А если пойти еще далее, то, пожалуй, во всех справочниках, по которым в системе зарегистрирован раздел, чтобы была возможность отображать группы с возможностью управления через lookupListConfig - по аналогии с действиями, которые можно скрыть, указав hideActions: true. Но это уже, пожалуй, идея для будущих улучшений продукта.

Орленко Андрей Николаевич пишет:

Теперь хотят, чтобы во всех местах, где есть lookup поля Продукт - была возможность поиска по группам и Каталогу. А если пойти еще далее, то, пожалуй, во всех справочниках, по которым в системе зарегистрирован раздел, чтобы была возможность отображать группы с возможностью управления через lookupListConfig - по аналогии с действиями, которые можно скрыть, указав hideActions: true. Но это уже, пожалуй, идея для будущих улучшений продукта.

В таком случае стоит завести на этом сайте идею. Просмотрел существующие, вроде бы никто такого не предлагал. 

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