Имя: Пароль:
1C
1С v8
Красивое определение текущей таблицы
,
0 VarIzo
 
02.07.18
17:44
Доброго дня.
Есть форма управляемая, на ней три страницы, на каждой странице по таблице (таблицы в реквизитах формы).

Как красивее определять текущую таблицу?

Для чего: есть общее для всех поле при изменение которого в текущей таблице надо поменять значение колонки.

Пока просто после изменением значения в общем поле, проверяю имя текущей страницы, но имхо гореть мне за это в аду.
1 runoff_runoff
 
02.07.18
17:52
ПараметрыВыбора и СвязиПараметровВыбора скорей всего нужно юзать
2 Eiffil123
 
02.07.18
17:53
в элементе форм страниц проверить текущую страницу. но это не кошерно.
3 Akela has missed
 
02.07.18
17:53
Если имя таблицы будет совпадать с именем страницы:
ИмяТаблицы = Элементы.ГруппаСтраниц.ТекущаяСтраница.Имя;
Таблица = ЭтотОбъект[ИмяТаблицы];
4 Tonik992
 
02.07.18
17:54
Что в вашем понимании "Красиво" - это какие критерии?
5 Eiffil123
 
02.07.18
17:55
(4) но гравное, чтобы юзер не менял расположение элементов формы. А то перетащит все таблицы на одну страницу и привет.
6 _Дайвер_
 
02.07.18
17:56
(4) Не знает как , вот  и все
7 Akela has missed
 
02.07.18
17:58
(5) Как запретить изменять форму?)
8 Eiffil123
 
02.07.18
18:01
(7) в настройках формы конечно. там галка же была вроде. Но запрещать нельзя, этож управляемый интерфейс, пользователь должен себе жизнь облегчать настройками и всё такое.
9 Tonik992
 
02.07.18
18:02
(5) хы. Представляю, как бухгалтер думает, как бы озадачить бездельников программистов. И тут начинает переставлять таблицы местами
10 Вафель
 
02.07.18
18:03
(9) если это не учитывать, то мы реализуем костыль
11 Akela has missed
 
02.07.18
18:04
(8) Да, нашел. Еще в свойствах самой группы есть свойство "Разрешить пользовательское изменение состава группы".
12 singlych
 
02.07.18
19:06
Три элемента для отображения общего поля?
13 pablo_escobar
 
02.07.18
19:33
(0) Так раз поле общее нужно менять во всех 3-х таблицах. Например пользователь выбрал что то в общем поле, изменилась "активная таблица". Пользователь меняет страницу и активной становится другая таблица. Почему она не изменена, хотя общее поле заполнено?
14 VarIzo
 
03.07.18
09:31
>"ПараметрыВыбора и СвязиПараметровВыбора скорей всего нужно юзать"
- спасибо за совет сейчас попробую.

>"в элементе форм страниц проверить текущую страницу. но это не кошерно."
- это и ыбл рабочий вариант. Выглядело примерно так:
<code>
Если Элементы.Страницы.ТекущаяСтраница.Имя = "Страница1" Тогда
    Возврат Таблица1;
ИначеЕсли Элементы.Страницы.ТекущаяСтраница.Имя = "Страница2" Тогда
    Возврат Таблица2
Иначе
    Возврат Неопределено;
КонецЕсли;
</code>

Но юзерам захотелось внутрь второй страницы засунуть еще две!!!
И вышло так:
<code>
Если Элементы.Страницы.ТекущаяСтраница.Имя = "Страница1" Тогда
    Возврат Таблица1;
ИначеЕсли Элементы.Страницы.ТекущаяСтраница.Имя = "Страница2" Тогда
    Если Элементы.Страницы.ТекущаяСтраница.ПодчиненныеЭлементы.Страницы2.ТекущаяСтраница.Имя = "Страница3" Тогда
        Возврат Таблица2
    ИначеЕсли Элементы.Страницы.ТекущаяСтраница.ПодчиненныеЭлементы.Страницы2.ТекущаяСтраница.Имя = "Страница4" Тогда    
        Возврат Таблица3
    Иначе
        Возврат Неопределено;
    КонецЕсли;
Иначе
    Возврат Неопределено;
КонецЕсли;
</code>
При виде такого кода мне становится неприятно. А это для меня знак что код явно не "красивый" - с ним явно что то не то.

>"Если имя таблицы будет совпадать с именем страницы: "
- надо попробовать.

>"но гравное, чтобы юзер не менял расположение элементов формы. А то перетащит все таблицы на одну страницу и привет."
- этого не будет, и то хорошо.
15 Tonik992
 
03.07.18
10:12
Чтобы сделать "красиво", определи переменную Соответствие,
в которой будешь хранить сопоставление названия страницы и таблицы.
И далее делай рекурсивный вызов, т.к. у тебя могут быть вложенный таблицы.
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший