Имя: Пароль:
1C
1С v8
УФ, как корректно определить текущую страницу?
,
0 БигБаг
 
03.09.22
03:48
Свойство ТекущаяСтраница у элемента с закладками не всегда содержит корректное значение. В частности, если при открытии формы делать манипуляции с закладками, типа поскрывать лишнии указав Видимость = Ложь. И когда позже вызывается какая-либо команда по нажатию кнопки на форме, то во время выполнения этой команды, это свойство не содержит корректного значения.

И вопрос, есть ли способ определить корректно текущую закладку для такого случая?
1 Конструктор1С
 
03.09.22
06:58
Что-то не так ты делаешь. Никогда не было проблем с текущей страницей
2 БигБаг
 
03.09.22
13:33
Значит ты никогда не использовал описанную ситуацию.
3 RomanYS
 
03.09.22
13:37
(2) ну подожди тех, кто сталкивался.
(0) и что оно содержит? Может оно просто не соответствует твоим ожиданиям
4 СеменовСемен
 
03.09.22
13:39
Ну это глюк же платформы. Пишите в 1с
5 БигБаг
 
03.09.22
13:56
Если скрыть активную страницу путем программной установки ее видимости в ложь, то свойство ТекущаяСтраница остается ссылаться на эту уже не видимую страницу. А интерфейс переключается на видимую, без генерации события ПриСменеСтраницы.
6 RomanYS
 
03.09.22
14:14
(5) ну так явно устанавливай текущую и вызывай обработчик
7 БигБаг
 
03.09.22
15:05
(6) ну так я и говорю, что не работает
8 СеменовСемен
 
03.09.22
15:07
(7) мначала коди ставь страницу, а потом отключай
9 RomanYS
 
03.09.22
15:22
(7) а должно было? Что документация говорит о скрывании текущей страницы?
10 БигБаг
 
03.09.22
16:29
(9) А зачем здесь документация по скрыванию текущей страницы? Есть документация по свойству ТекущаяСтраница, про которое я говорю. Там немного, всего одна строка в описании, можешь сам прочитать. На экране я вижу одну страницу, а в свойстве сидит другая. Что не соответствует описанию.
11 RomanYS
 
03.09.22
16:42
(10) хорошо, пиши в 1С или спортлото.
Альтернатива вроде очевидна, как и то, что видимое тобой - результат твоей же работы
12 БигБаг
 
03.09.22
17:08
(11) Сдулся? А спорил много.
13 Святой Нос
 
03.09.22
20:33
(12) Дай-ка догадаюсь. Ты уже спрашивал на партнерском и тебя послали на мисту.
14 БигБаг
 
04.09.22
02:11
(13) Не угадал.
15 Мимохожий Однако
 
04.09.22
06:17
(0) Не стесняйся, снимай покровы со своего кода. Может и подскажут
16 PuhUfa
 
04.09.22
08:48
(5) Скрывание страницы установив видимость = ложь не отменяет того факта что она по прежнему текущая.
17 Cyberhawk
 
04.09.22
10:07
(5) А в ЭтаФорма.ТекущийЭлемент что лежит после скрытия страницы?
18 СеменовСемен
 
04.09.22
10:18
(16)  а должно
19 СеменовСемен
 
04.09.22
10:19
(18) система же отрисовывает новую страницу, значит по факту смена произошла
20 ildary
 
04.09.22
14:05
(19) "Восьмерка ещё сырая" - Вы ведь за этим сюда пришли, нет?
21 БигБаг
 
04.09.22
17:45
(16) А что должно означать фраза "Текущая страница", которым описывается это свойство ТекущаяСтраница в СП? На чтение оно доступно, никаких специфических ограничений не описано.
22 СеменовСемен
 
04.09.22
18:01
(20) пришли за тем, что может кто-то знает, что
Ошибка исправлена в релизе 8.3.х.х.
23 RomanYS
 
04.09.22
19:02
(22) ТС например считает, что при этом ещё интерактивное событие должно отработать...
И почему текущая страница не может быть невидимой?
24 СеменовСемен
 
04.09.22
19:10
(23) конечно должно
25 Святой Нос
 
04.09.22
19:33
(22) > может кто-то знает

Своего доступа на https://bugboard.v8.1c.ru/ у самоуверенных искателей истины, конечно же нет. Даже не удивительно.
26 sitex
 
naïve
04.09.22
19:37
(21) Вы что то перепутали ,СП что нужно то говорит. А то что вы там себе в голове интерпретировали СП не знает
27 sitex
 
naïve
04.09.22
19:38
(23) ТС - считает что 1С ему ДОЛЖНА, а не то что с ней надо работать.
28 Гость из Мариуполя
 
гуру
04.09.22
19:52
(0) встречный вопрос - можно ли сделать текущей невидимую страницу? любую, из тех, для кого Видимость=Ложь?
29 БигБаг
 
04.09.22
19:58
(28) Не пробовал. Вероятно можно, но смысла проверять не вижу.
30 БигБаг
 
04.09.22
20:01
В результате тяжелых раздумий мой не-до-гений родил такую банальность:

Процедура УстановитьВидимостьЗакладки(ЭлЗакладка, Видимость, Доступность)
    
    Если Видимость и Доступность Тогда
        ЭлЗакладка.Видимость = Видимость;
        ЭлЗакладка.Доступность = Доступность;
        возврат;
    КонецЕсли;
    
    ГрЗакладки = ЭлЗакладка.Родитель;
    Если ЭлЗакладка <> ГрЗакладки.ТекущаяСтраница Тогда
        ЭлЗакладка.Видимость = Видимость;
        ЭлЗакладка.Доступность = Доступность;
        возврат;
    КонецЕсли;
        
    Подчиненные = ГрЗакладки.ПодчиненныеЭлементы;
    
    колич = Подчиненные.Количество();
    ИндексТекущей = Подчиненные.Индекс(ЭлЗакладка);
    
    Для смещение = 1 по колич-1 Цикл
        ПроверитьЭту = Подчиненные[(ИндексТекущей + смещение) % колич];
        Если ПроверитьЭту.Видимость и ПроверитьЭту.Доступность Тогда
            ГрЗакладки.ТекущаяСтраница = ПроверитьЭту;
            прервать;
        КонецЕсли;
    КонецЦикла;
    
    ЭлЗакладка.Видимость = Видимость;
    ЭлЗакладка.Доступность = Доступность;
КонецПроцедуры
31 RomanYS
 
04.09.22
20:18
(24) Это про событие? Интересненько, тогда ещё вопросик:
Должно ли событие отрабатывать при программной смене текущей страницы?
32 RomanYS
 
04.09.22
20:19
(30) Сдался))? Забыл событие вызвать ПриСменеСтраницы после ГрЗакладки.ТекущаяСтраница = ПроверитьЭту;
33 RomanYS
 
04.09.22
20:20
+(31) и ещё вопросик: какая страница должна стать текущей после прятания текущей?
34 БигБаг
 
04.09.22
20:37
(32) Это ты придумал. Мне ПриСменеСтраницы в текущем вопросе не была нужна. Читай тему.

(33) Для моего случая это не важно, т.к. эта настройка формы при открытии формы. Для прочих случаев думаю это то же не сильно важно, если кто задумал настраивать видимость по другим интерактивным событиям. Согласно процедуре будет активной следующая за скрываемой, если скрываемая была активной.
35 СеменовСемен
 
04.09.22
20:37
(33) та которая видна. С отображением то проблемы нет
36 СеменовСемен
 
04.09.22
20:37
(32) событие само вызовется
37 RomanYS
 
04.09.22
21:01
(35) Ну видно допустим 10, какая именно?
(36) Само!? Это только для этого события или для всех событий верно(например установка текуущей строки, удаление строки, добавление строки...)?
38 СеменовСемен
 
04.09.22
21:04
(37) что 10? ты когда активную скроешь - у тебя что пустой квадрат останется? нет, какая то страница отобразится. Вот она и должна быть текущей и событие должно вызваться
39 RomanYS
 
04.09.22
21:04
(34) >>Мне ПриСменеСтраницы в текущем вопросе не была нужна
Значит мне показалось, что ты жаловался, что событие не отработало в (5).
40 RomanYS
 
04.09.22
21:04
(38) Что значит какая-то. Случайная что ли?
41 СеменовСемен
 
04.09.22
21:05
(40) ну уже в платформе какой то алгоритм есть. какой именно - не важно
42 RomanYS
 
04.09.22
21:05
(38) интерактивные события не вызываются (автоматом) при программных действиях.
43 СеменовСемен
 
04.09.22
21:06
(42) для страницы вызвается
44 RomanYS
 
04.09.22
21:07
(43) НЕТ
45 СеменовСемен
 
04.09.22
21:07
(44) ты эксперимент проводил?
46 RomanYS
 
04.09.22
21:08
(45) Уже да. Но это и так было очевидно
47 БигБаг
 
04.09.22
21:08
событие только при интерактивной смене. Это даже в СП кажется было.
48 БигБаг
 
04.09.22
21:11
Кстати, между делом, та процедура решила еще одно маленькое неудобство. Есть документ, со множеством закладок, и при открытии так же первая закладка в некоторых случаях скрывалась. В результате активным элементом становилась кнопка, которая не должна становиться, и не срабатывал Ins для табличной части текущей закладки. После применения этой процедуры, этот эффект исчез, и кнопка Ins работает без дополнительных манипуляций.
49 БигБаг
 
04.09.22
21:12
Я кажется до этого пробовал в том числе принудительно активизировать табличную часть, но это не давала эффекта. А теперь работает без доп.манипуляций.
50 RomanYS
 
04.09.22
21:17
(48) О необходимости явной смены страницы с начала ветки писали. А вы с Семёном какие-то глюки нашли))
51 БигБаг
 
04.09.22
21:23
Это просто восьмерка еще сырая. Вот и приходится выдумывать костыли. Нужно подождать, и они все допилят.
52 БигБаг
 
04.09.22
21:29
Из СП для ПриСменеСтраницы:

Описание:
Возникает при переключении с одной страницы на другую.

Ничего не говорится про интерактивность. Но по факту работает только при интерактивной смене.
53 RomanYS
 
04.09.22
21:30
(51) но ты сдался и ждать не стал)
(52) Все (интерактивные) события так работают, странно ожидать другого именно от этого
54 СеменовСемен
 
04.09.22
21:36
про событие оказался не прав. Но текущая страница должна соответствовать той, что отображается
55 RomanYS
 
04.09.22
21:45
(54) >>  Но текущая страница должна соответствовать той, что отображается
Это в том числе и твоя задача как разработчика. ТС как-то справился в (30)
56 СеменовСемен
 
04.09.22
21:47
(55) это понятно что глюки платформы нужно обходить, но они от этого не перестают быть глюками
57 СеменовСемен
 
04.09.22
21:50
Кстати на обычных формах событие отрабатывает при програмной установке
58 RomanYS
 
04.09.22
21:53
(56) Не согласен. "Глюк" в данном случае в прикладном коде (или его отсутствии). Но рассудить тут только вендор может, зарегистрированной ошибки я так понимаю никто не видел.
59 RomanYS
 
04.09.22
21:54
(57) Забавно. А например смена текущей строки таблицы вызовет ПриАктивизацииСтроки?
60 СеменовСемен
 
04.09.22
21:55
(58) ты же не устанавливаешь страницу когда форму открываешь. она сама.
и когда скрываешь страницу - она сама.
Но в первом случае свойство текущаястраница верное, а во втором - нет
61 RomanYS
 
04.09.22
21:55
(57) Вот это кстати реально глюк, придётся ещё в обработчике проверять вызвано оно программно или интерактивно.
62 СеменовСемен
 
04.09.22
21:58
(61) зачем?
63 RomanYS
 
04.09.22
21:58
(62) Например я хочу сменить страницу без вызова обработчика
64 СеменовСемен
 
04.09.22
22:00
(59) Тоже вызывается
65 RomanYS
 
04.09.22
22:02
(60) упражняться в логике смыла нет. Если 1С ошибку признает, значит ты прав.
По моей логике ТекущаяСтраница просто некая ссылка, которая меняется при выборе страницы. На этом функционал платформы заканчивается и этого достаточно. Никаких глюков.
66 СеменовСемен
 
04.09.22
22:03
(65) те она никак не связана с той страницей что отображается?
67 RomanYS
 
04.09.22
22:07
(66) Связаны они именно "меняется при выборе страницы", ну и в обратную сторону конечно при установке свойства меняется видимая закладка. Этого достаточно для нормальной работы.
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн