Имя: Пароль:
1C
1С v8
Определение программно выбранной закладки (станицы)
0 sidalexsandr
 
15.10.12
13:44
Есть закладки “Основная”, “Бухгалтерия”. Пытаюсь программно определить на какую закладу шелкнул пользователь. 1с выдает ошибку Вот текст:
Процедура Панель1ПриСменеСтраницы(Элемент, ТекущаяСтраница)
   Если ЭлементыФормы.Панель1.Бухгалтерия.Раскрыта() Тогда
       Сообщить("Бухгалтерия");    
     ИначеЕсли ЭлементыФормы.Панель1.Основная.Раскрыта() Тогда
       Сообщить("Основная");
   КонецЕсли;
КонецПроцедуры

Вопрос: Как узнать текущую выбранную закладку (Основная или Бухгалтерия)?
1 Alex S D
 
15.10.12
13:45
ТекущаяСтраница в параметрах для кого спрашивается?
2 vmv
 
15.10.12
13:46
правило простое - опредяеляешь по индексу, показываешь по синониму, все
3 Alex S D
 
15.10.12
13:46
а не, перепутал
4 vmv
 
15.10.12
13:47
Раскрыта() как бы намекает, что это не УФ
5 zladenuw
 
15.10.12
13:48
ПриСменеСтраницы(<ТекущаяСтраница>)
Параметры:

<ТекущаяСтраница>

Тип: Число.
Индекс страницы, на которую произошло переключение панели.
6 Zmich
 
15.10.12
13:49
ЭлементыФормы.Панель1.ТекущаяСтраница
7 Infsams654
 
15.10.12
13:59
УФ. Вопрос не засыпку. Как определить какая страница текущая - к примеру, действия происходят в левой части (группе) , в зависимомости от от действий в правой части на открытой странице должно происходить отображение изменения ?
8 vmv
 
15.10.12
14:05
(7) типа так, я извращалось, причем главные страницы ввобще не отображались в закладках

&НаКлиенте
Процедура СтраницыГлавнаяПриСменеСтраницы(Элемент, ТекущаяСтраница)
   
   ТекущаяСтраницаИмя = ТекущаяСтраница.Имя;
   
   Если ТекущаяСтраницаИмя = "СтраницаСвод" Тогда
       ПредыдущаяСинхроннаяСтраницаИмя = Элементы.СтраницыВвод.ТекущаяСтраница.Имя;
   ИначеЕсли ТекущаяСтраницаИмя = "СтраницаВвод" Тогда    
       ПредыдущаяСинхроннаяСтраницаИмя = Элементы.СтраницыСвод.ТекущаяСтраница.Имя;
   Иначе
       ПредыдущаяСинхроннаяСтраницаИмя = "";
   КонецЕсли;
   
   Если ПредыдущаяСинхроннаяСтраницаИмя = "СтраницаСводРежим" Тогда
       ГруппаСтраницТекущаяСинхронная = Элементы.СтраницыВвод;
       СтраницаТекущаяСинхронная      = ГруппаСтраницТекущаяСинхронная.ПодчиненныеЭлементы.СтраницаВводРежим;
       
       ТекущаяСинхроннаяЭтоСвод = Ложь;
       
   ИначеЕсли ПредыдущаяСинхроннаяСтраницаИмя = "СтраницаСводСкважины" Тогда
       ГруппаСтраницТекущаяСинхронная = Элементы.СтраницыВвод;
       СтраницаТекущаяСинхронная      = ГруппаСтраницТекущаяСинхронная.ПодчиненныеЭлементы.СтраницаВводСкважины;
       
       ТекущаяСинхроннаяЭтоСвод = Ложь;
       
   ИначеЕсли ПредыдущаяСинхроннаяСтраницаИмя = "СтраницаСводОстатки" Тогда
       ГруппаСтраницТекущаяСинхронная = Элементы.СтраницыВвод;
       СтраницаТекущаяСинхронная      = ГруппаСтраницТекущаяСинхронная.ПодчиненныеЭлементы.СтраницаВводОстатки;
       
       ТекущаяСинхроннаяЭтоСвод = Ложь;
       
   ИначеЕсли ПредыдущаяСинхроннаяСтраницаИмя = "СтраницаВводРежим" Тогда
       ГруппаСтраницТекущаяСинхронная = Элементы.СтраницыСвод;
       СтраницаТекущаяСинхронная      = ГруппаСтраницТекущаяСинхронная.ПодчиненныеЭлементы.СтраницаСводРежим;
       
       ТекущаяСинхроннаяЭтоСвод = Истина;
       
   ИначеЕсли ПредыдущаяСинхроннаяСтраницаИмя = "СтраницаВводСкважины" Тогда
       ГруппаСтраницТекущаяСинхронная = Элементы.СтраницыСвод;
       СтраницаТекущаяСинхронная      = ГруппаСтраницТекущаяСинхронная.ПодчиненныеЭлементы.СтраницаСводСкважины;
       
       ТекущаяСинхроннаяЭтоСвод = Истина;
       
   ИначеЕсли ПредыдущаяСинхроннаяСтраницаИмя = "СтраницаВводОстатки" Тогда
       ГруппаСтраницТекущаяСинхронная = Элементы.СтраницыСвод;
       СтраницаТекущаяСинхронная      = ГруппаСтраницТекущаяСинхронная.ПодчиненныеЭлементы.СтраницаСводОстатки;
       
       ТекущаяСинхроннаяЭтоСвод = Истина;
       
   Иначе
       ГруппаСтраницТекущаяСинхронная = Неопределено;
       ТекущаяСинхроннаяЭтоСвод       = Неопределено;
   КонецЕсли;
   
   Если ГруппаСтраницТекущаяСинхронная <> Неопределено Тогда
       ГруппаСтраницТекущаяСинхронная.ТекущаяСтраница = СтраницаТекущаяСинхронная;
       Если ТекущаяСинхроннаяЭтоСвод Тогда
            СтраницыСводПриСменеСтраницы(ГруппаСтраницТекущаяСинхронная, СтраницаТекущаяСинхронная);
       Иначе    
            СтраницыВводПриСменеСтраницы(СтраницаТекущаяСинхронная, СтраницаТекущаяСинхронная);
       КонецЕсли;
   КонецЕсли;
   
КонецПроцедуры
9 sidalexsandr
 
15.10.12
14:22
Всем спасибо. Наткнулся на ответ, в процедуре обработчике событие панели (в панель входят закладки Основная,Бухгалтерия) есть ТекущаяСтраница:
Процедура Панель1ПриСменеСтраницы(Элемент, ТекущаяСтраница)
   
КонецПроцедуры

Вот ТекущаяСтраница и показывает номер закладки.

Всем спасибо.
10 vmv
 
15.10.12
14:23
(9) не номер, а индекс, неуч
11 vmv
 
15.10.12
14:23
+(10) тебе от этом сразу сказали - долго доганяешь
12 sidalexsandr
 
15.10.12
14:24
(10) Согласен.

Подскажите теперь как по индексу получить имя закладки?
13 sidalexsandr
 
15.10.12
14:24
(11) Я отходил, а потом сразу в пофигуратор, а потом на форум
14 sidalexsandr
 
15.10.12
14:25
(11) Понял. Спасибо (1).
15 sidalexsandr
 
15.10.12
14:25
Подскажите теперь как по индексу получить имя закладки?
16 YF
 
15.10.12
14:25
(12) ЭлементыФормы.Панель1[ИндексСтраницы] - Не?
17 sidalexsandr
 
15.10.12
14:29
(16) Выдает обшибку: {Документ.Ведомость.Форма.ФормаДокумента.Форма(33)}: Получение элемента по индексу для значения не определено
18 Molinor
 
15.10.12
14:36
ЭлементыФормы.Панель1.СтраницыПанели[ИндексСтраницы]
19 Molinor
 
15.10.12
14:37
А вообще ЭлементыФормы.Панель1.ТекущаяСтраница должен выдавать уже саму страницу.
20 sidalexsandr
 
15.10.12
14:37
(18) Спасибо и я только что нашел в документации Част 4. Сейчас проверяю.
21 sidalexsandr
 
15.10.12
14:41
Сообщить(ЭлементыФормы.Панель1.Страницы.Получить(ТекущаяСтраница));
Сообщить(ЭлементыФормы.Панель1.ТекущаяСтраница);


Оба оператора не дают название страницы
22 vmv
 
15.10.12
14:47
(21) в оталдчике смотрищь тип получаемого значения, потом шевелишь извилиной и ищешь этот тип в сп - тупо набирая имя типа из отладки

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

вот же ж ленивец и эти люди с тезисом "8-ка на марще"
23 sidalexsandr
 
15.10.12
14:51
(22) Тип Число.
24 vmv
 
15.10.12
14:53
(23) бестолочь, извини но я всегда говорю как есть, когда вижу похабное нежелание читать сп

Синтаксис:

Получить(<Индекс>)
Параметры:

<Индекс> (обязательный)

Тип: Число.
Индекс страницы.
Вариант синтаксиса: По имени

Синтаксис:

Получить(<Имя>)
Параметры:

<Имя> (обязательный)

Тип: Строка.
Имя страницы.
Возвращаемое значение:

Тип: СтраницаПанели.

Описание:

Получает значение. Работает аналогично оператору [].

Доступность:

Толстый клиент.
Примечание:

Применяется в случаях, когда использование оператора [] невозможно.
25 vmv
 
15.10.12
14:55
СтраницаПанели (PanelPage)
Свойства:

Видимость (Visible)
Доступность (Enabled)
Заголовок (Caption)
Значение (Value)
Имя (Name)
КартинкаЗаголовка (TitlePicture)
Раскрыта (IsOpen)
26 sidalexsandr
 
15.10.12
14:57
(24) Я в (21) это пробовал. Не получает имя страницы
27 sidalexsandr
 
15.10.12
14:59
(25) Сообщить(ТекущаяСтраница.Имя);

Выдает ошибку: {Документ.Ведомость.Форма.ФормаДокумента.Форма(33)}: Значение не является значением объектного типа (Имя)
28 sidalexsandr
 
15.10.12
15:01
Сообщить(ЭлементыФормы.Панель1.Получить(ТекущаяСтраница));


Выдает ошибку: {Документ.Ведомость.Форма.ФормаДокумента.Форма(33)}: Метод объекта не обнаружен (Получить)
29 hhhh
 
15.10.12
15:07
Сообщить(ЭлементыФормы.Панель1.СТРАНИЦЫ.Получить(ТекущаяСтраница));
30 sidalexsandr
 
15.10.12
15:20
Отладчик показывает, а программно не получить. Вот ссылка на отладку

[URL=http://www.radikal.ru][IMG]http://s004.radikal.ru/i207/1210/da/14353a7de080.jpg[/IMG][/URL]
31 sidalexsandr
 
15.10.12
15:20
32 sidalexsandr
 
15.10.12
15:36
Может кому поможет. Вот : Сообщить(ЭлементыФормы.Панель1.ТекущаяСтраница.Заголовок);
33 sidalexsandr
 
15.10.12
15:37
Ветку можно закрывать. Спасибо всем помагавшим и отладчику.
34 Infsams654
 
15.10.12
15:47
(8) это что было ? Вопрос то понял ?