Неясність з AdministrationUnitsGridPage

Займався створенням нового розділу за принципом розділу "Пользователи" (того, що в робочих місцях не відображено).
Потрібно було в процесі відладки подивитись, як веде себе "Страница реестра вхождения в роли" (AdministrativeUserInRoleGridPage).
В дизайнері схеми був присутній пул з доріжкою й субпроцесом, в якому шаблонами були внесені "Начальное сообщение" зв"язане з "Промежуточным генерирующим сообщением", причому обидва не проініціалізовані. При збереженні схеми в такій ситуації видається помилка на обидва елементи.
Як на мене, весь цей пул з доріжкою, субпроцесом і пустипи елементами був зайвий і я його зтер.
Схему опублікував.
Після цього, при спробі відкрити розділ "Администрирование.Пользователи" отримую помилку в
AdministrationUnitsGridPageEventsProcess.ScriptChildDataSourceLoadRowsResponseRegisteredExecute
в коді:

var buttonMenu = Page.AddButton.Menu;
var organizationMenuItem = buttonMenu.Find(item => item.Name.Contains(new Guid("DF93DCB9-6BD7-DF11-9B2A-001D60E938C6").ToString("N")));
var unitMenuItem = buttonMenu.Find(item => item.Name.Contains(new Guid("B659F1C0-6BD7-DF11-9B2A-001D60E938C6").ToString("N")));
var chiefMenuItem = buttonMenu.Find(item => item.Name.Contains(new Guid("B759F1C0-6BD7-DF11-9B2A-001D60E938C6").ToString("N")));
var teamMenuItem = buttonMenu.Find(item => item.Name.Contains(new Guid("462E97C7-6BD7-DF11-9B2A-001D60E938C6").ToString("N")));

Власне помилку генерує наступний код:
organizationMenuItem.Enabled = true;
unitMenuItem.Enabled = true;
chiefMenuItem.Enabled = !hasUnitChief;
teamMenuItem.Enabled = true;

По тій причині, що всі означені об'єкти = NULL.

(Зауважу, що дану схему я не чіпав)

Я не схильний новоотриману помилку пов'язувати із знищенням того самого пулу з доріжкою (хоча й не буду це категорично заперечувати).

Я ще попередньо спочатку створив вже існуючий розділ "Администрирование", потім вилучив його, далі виявив, що він і в таблиці [SysModule] зник, тому запис імпортував з оригінальної БД.
Потім я так само створив вже існуючий розділ "Пользователи", який відобразився зо всім пакетом деталей.
Вже після цього я вилучав порожні елементи й публікував схему.

На даний момент ще не вдається розібратися, в чому ж справа ...

Нравится

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

Якщо потрібен скан помилки - можу відправити в приват

Посмотрел на коробке эту страницу, там только 3 подпроцесса по сообщениям: «OpenRoles», «DeleteButtonClick» и «PageLoad».

процесс

Возможно, Вы смотрите на версию страницы с чьими-то доработками.

Шукаю зараз, де формується меню для кнопки "Добавить" для розділу "Администрирование.Элементы организационной структуры"
(те, що читається в AdministrationUnitsGridPageEventsProcess.ScriptChildDataSourceLoadRowsResponseRegisteredExecute)

Игорь, это стандартный механизм для раздела с несколькими карточками для разных типов. В BaseGridPage в скрипте ScriptTaskBaseGridPageInit:

var editPages = GetEditPages();
if (TypeColumnUId != Guid.Empty && Page.DataSource.CurrentStructure.Columns.FindByMetaPath(TypeColumnUId.ToString()) == null) {
	var typeColumn = Page.DataSource.Schema.Columns.GetByUId(TypeColumnUId);
	var column = Page.DataSource.CurrentStructure.AddColumnByPath(typeColumn.Name);
	column.IsVisible = false;
	column.IsAlwaysSelect = true;
}
foreach (var item in editPages) {
	var addMenuItem = CreateAddButtonMenuItem(item.Value, item.Key);
	Page.AddButton.Menu.Add(addMenuItem);
	if (!IsContextHelpButtonInitialized) {
		string formatString = "{0}.on('click', function(el) {{ {1} }}, this)";
		var parameters =  item.Key.Split('&');
		var typeEditPageUId = new Guid(parameters[0]);
		var typeEntityId = new Guid(parameters[1]);
		var typeEditPageUIds = TypeEditPageUIds as Dictionary<Guid, Dictionary<string, Guid>>;
		string script = GetRegisterAddPageScript(typeEditPageUId, typeEditPageUIds[typeEntityId]["SysModuleEditId"], typeEntityId);
		Page.AddScript(string.Format(formatString, addMenuItem.ClientID, script));		
	}
}

Я вже теж дійшов висновку, що щось не так з типами карточок.
Перевірив запис розділу [Пользователи], - виявилось, що в результаті маніпуляцій з розділами (в робочих місцях) збилися параметри
[Использовать отдельные карточки для работы с записями разного типа]
[Тип записи указан в колонке]

При спробі відновити значення через стандартну форму виходило повідомлення:

Необходимые элементы конфигурации не найдены
Для использования групп необходимы следующие объекты: AdministrativeUsersFolder, AdministrativeUsersInFolder

Подивився на робочій - відсутні такі об'єкти, тому відновив значення через SQL - все запрацювало.
Дякую за підказку :smile:.

Цікаво, а як формувався запис розділу [Пользователи], зважаючи на те, що в оригінальній версії він відсутній у списку робочих місць, і навіть якщо його добавити, то для збереження все одно ще треба створювати два додаткових об'єкти
[AdministrativeUsersFolder] та [AdministrativeUsersInFolder]
які, як видно, насправді не були створені і тим не менше, розділ чудово функціонує без вказаних об'єктів.

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

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