Добрый вечер!
У окна есть 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 они отображаются нормально.
В приложении сервисы.
Нравится
Я бы Вам советовал:
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; }