Ошибка отображения страниц сервиса окна

Добрый вечер!

У окна есть 3 элемента Page: A1, A2, B.
В зависимости от значения поля датасета (X, Y1, Y2) меняются настройки видимости:

тип Х - видны страницы A1 и A2
тип Y1, Y2 - видна страница B и различные для этих двух типов контролы на странице.

При открытии приложение TS если сначала открыть запись типа X, то страницы A1, A2 отобраэжаются правильно, а если потом открыть запись типа Y1 или Y2, то страница B отображаестя пустой, без контролов.

Если при закгрузке приложения сначала открыть записи типа Y1 или Y2, То страница B отображается правильно. Затем если открыть запись типа X, то активная страница пустая, а при переключении между страницами A1 и A2 они отображаются нормально.

В приложении сервисы.

desktop.7z

Нравится

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

Я бы Вам советовал:
1) выделить Вашу логику в отдельную функцию и вставить ее в OnPrepare, а также и на изменение поля типа, чтобы при изменении типа карточка перерисовывалась
2) у элемента окна Pages есть свойство ActivePage(страница по-умолчанию, сменяемая потом последней открытой страницей) и, насколько я понимаю, если ActivePage ссылается на скрытую страницу, то Вы и получаете пустую страницу - меняйте также и ActivePage в скрипте. А может и нет, надо проверить :confused:
3) все изменяемые свойства контролов должны быть явно заданы для каждого типа - т.е. если вы пишете IF то пишите и ELSE и вкладывайте в него другой IF и т.д., а лучше всего пишите вот так:

Dataset.DataFields('PIBudgetTo').IsRequired = ( (DatasetTypeID == '{1F52D168-87FF-4970-911F-5FA697E7B3A9}') || (DatasetTypeID == '{B183C72D-FFC3-4702-BAA8-CECF92E3B414}'))

(для конструкций (DatasetTypeID == '{B183C72D-FFC3-4702-BAA8-CECF92E3B414}') можно задать переменные, чтобы лучше читалось)

Иначе при переключениями между типами (при открытии карточек с разными типами) у Вас будет что-нибудь теряться или появляться

Попробуйте использовать конструкцию if else if (у Вас только if)
Например:

if (dlData.Dataset.Values('AccountTypeID') = '{3EAC7195-607B-4DAC-A832-8954E3201031}'){
	    pgFinance.IsVisible = false;
	    pgMain.IsVisible = true;
	    Page.IsVisible = false;
	}  else if (dlData.Dataset.Values('AccountTypeID') = '{2229B3B7-9210-4B3A-AAAD-2A4168678CA1}'){
	    pgFinance.IsVisible = true;
	    pgMain.IsVisible = false;
	    Page.IsVisible = true;
	}
Показать все комментарии