Имя: Пароль:
1C
 
Как перенести элементы формы из одной страницы, в другую ?
0 TDI
 
10.09.09
21:16
В форме программно создаётся ещё одна страница на панели.

Вопрос, как наиболее грамотно перенести все элементы формы которые располагались на предыдущей странице (эти элементы формы созданы в конфигураторе), в вновь полученную?
Это первый вопрос...

А ещё, в дополнение к этому вопросу...как сделать так, чтобы просто все элементы формы предыдущей страницы стали видны на вновь созданной?

Спасибо за ответы.
1 Fragster
 
гуру
10.09.09
21:26
ctrl+c-ctrl-v
2 TDI
 
10.09.09
21:28
(1)
:)
нет, програмным способом, в режиме исполнения ...
3 Fragster
 
гуру
10.09.09
21:30
ну... вообще не понятна необходимость использования страниц...
4 TDI
 
10.09.09
21:32
да мне тоже непонятна....
но задание такое, типо тестовое,нужно решить :)
5 Икогнито
 
10.09.09
21:32
Недокументированная возможность.

СелектнутыеЭлементы=ЭлементыФормы.Select();
КоптнутыеЭлементы=СелектнутыеЭлементы.Copy();
ТекущаСтраницаПанели.Paste();
6 TDI
 
10.09.09
21:35
(5) :)
7 Икогнито
 
10.09.09
21:37
(6) не работает разве?

А, забыл

ТекущаСтраницаПанели.Paste(КоптнутыеЭлементы);
8 TDI
 
10.09.09
21:38
не, у нас платформы разные наверное )
9 TDI
 
10.09.09
21:47
ау, народ,
есть кто нибудь кто дельное подсказать может ? :)
10 ll13
 
10.09.09
22:13
Ну ... насчет грамотно не знаю.
Как вариант, если страницы всего две старая и новая.
ЭлементыФормы.Панель1.Страницы.Добавить("НоваяСтраница","НоваяСтраница");
ЭлементыФормы.Панель1.РаспределятьПоСтраницам = Ложь;
СтараяСтраница = ЭлементыФормы.Панель1.Страницы["СтараяСтраница"];
ЭлементыФормы.Панель1.Страницы.Удалить(СтараяСтраница);
ЭлементыФормы.Панель1.РаспределятьПоСтраницам = Истина;
11 TDI
 
10.09.09
22:23
(10)
ЭлементыФормы.Панель1.Страницы.Удалить(СтараяСтраница);
Зачем её удалять?
она должна остаться, пользователь может назад переключится на неё....

Если делаеш ЭлементыФормы.Панель1.РаспределятьПоСтраницам = Ложь;
то тогда элементыформы ислезают и из первой панели....которая в конфигураторе создана....
12 ll13
 
10.09.09
22:28
(11) Так создайте её заново ) если нужна.
А Вы как хотите, что бы элементы "НЕ исчезали" с первой страницы?
Что Вам не нравиться ? По условию вашей задачи на странице есть элементы, программно создаётся ещё одна страница ВСЕ элементы с первой ПЕРЕНОСЯТСЯ на вторую, то есть они появляются на второй и исчезают с первой.
Или я что то не так понял ?
13 TDI
 
10.09.09
22:34
(12)
вот смотрите
Рис1: http://i077.radikal.ru/0909/70/e5c28775f94e.jpg
Рис2: http://i071.radikal.ru/0909/8d/776a76a1dc5c.jpg

вот стр2 создаётся программно, после нажатия кнопки,
нужно чтобы на ней были видны теже элементы управления, что и на Стр1
14 ll13
 
10.09.09
22:50
(13) Ах вот оно что... Так зачем же писать "что элементы надо ПЕРЕНЕСТИ"?
Вы понимаете смысл слова "перенести" ?
"нужно чтобы на ней были видны теже элементы управления, что и на Стр1"
Тогда просто
ЭлементыФормы.Панель1.РаспределятьПоСтраницам = Ложь;
15 TDI
 
10.09.09
22:53
(14)
так если
ЭлементыФормы.Панель1.РаспределятьПоСтраницам = Ложь;
тогде вообще элементы пропадают, даже с 'стр1'
16 ll13
 
10.09.09
22:59
(15) Ничего не пропадает, только что пробовал:
ЭлементыФормы.Панель1.Страницы.Добавить("НоваяСтраница");
ЭлементыФормы.Панель1.РаспределятьПоСтраницам=Ложь;
Ищите у себя ошибку ...
17 BOZKURT
 
11.09.09
00:03
18 TDI
 
11.09.09
00:09
(17)
это что за файл ?
просто html какой=то непонятный...
19 BOZKURT
 
11.09.09
00:10
//////////////////////////////////////////
/// Извращенец (с)
//////////////////////////////////////////

Перем ТаблицаРеквизитовЭлементовФормы;
Перем СписокЭлементовФормыДляКопирования;

Процедура ПриОткрытии()
   
   //сделаем список элементов 1-й страницы
   СписокЭлементовФормыДляКопирования = Новый СписокЗначений;
   Для Каждого ЭлементФормы Из ЭлементыФормы Цикл
       Если РазрешенДляКопирования(ЭлементФормы) Тогда
           СписокЭлементовФормыДляКопирования.Добавить(ЭлементФормы);
       КонецЕсли;
   КонецЦикла;
   
КонецПроцедуры


Процедура ДобавитьЗакладку()
   
   Индекс = Формат(ЭлементыФормы.ПанельНаФорме.Страницы.Количество() + 1, "ЧГ=");
   ИмяСтраницы = "Страница" + Индекс;
   ЭлементыФормы.ПанельНаФорме.Страницы.Добавить(ИмяСтраницы, ИмяСтраницы);
   ЭлементыФормы.ПанельНаФорме.ТекущаяСтраница = ЭлементыФормы.ПанельНаФорме.Страницы[ИмяСтраницы];
   
   //перенос элементов с 1-й страницы
   //поехали...
   Для Каждого ЭлементСписка Из СписокЭлементовФормыДляКопирования Цикл
       ЭлементФормы = ЭлементСписка.Значение;
       ТипЭлементаФормы = Строка(ЭлементФормы);
       ИмяЭлементаФормы = Сред(ЭлементФормы.Имя, 1, СтрДлина(ЭлементФормы.Имя) - 3) + Индекс + "_" + Прав(ЭлементФормы.Имя, 1); //свыше 10 придется шаманить...
       НовыйЭлемент = ЭлементыФормы.Добавить(Тип(ТипЭлементаФормы), ИмяЭлементаФормы, Истина, ЭлементыФормы.ПанельНаФорме);
       // \/ отладка
       НовыйЭлемент["Подсказка"] = ИмяЭлементаФормы;
       Если ТипЭлементаФормы="Надпись" Тогда
           НовыйЭлемент["Заголовок"] = ИмяЭлементаФормы;
       КонецЕсли;
       // /\ отладка
       Для Каждого Строка Из ТаблицаРеквизитовЭлементовФормы Цикл
           Если Строка.Тип=ТипЭлементаФормы Тогда
               НовыйЭлемент[Строка.Реквизит] = ЭлементФормы[Строка.Реквизит];
           КонецЕсли;
       КонецЦикла;
   КонецЦикла;
   
КонецПроцедуры

Процедура УдалитьЗакладку()
   
   //удаляем текущую страницу
   КоличествоСтраниц = ЭлементыФормы.ПанельНаФорме.Страницы.Количество();
   Если КоличествоСтраниц>1 Тогда
       Для Сч=1 По КоличествоСтраниц Цикл
           Если ЭлементыФормы.ПанельНаФорме.ТекущаяСтраница=ЭлементыФормы.ПанельНаФорме.Страницы[Сч] Тогда
               ЭлементыФормы.ПанельНаФорме.Страницы.Удалить(Сч);
               Прервать;
           КонецЕсли;
       КонецЦикла;
   КонецЕсли;
   
КонецПроцедуры

Функция РазрешенДляКопирования(ЭлементФормы)
   
   Разрешен = Сред(ЭлементФормы.Имя,1,6)="ёпрст_";
   Возврат Разрешен;
   
КонецФункции


Процедура КоманднаяПанель1ДобавитьЗакладку(Кнопка)
   
   ДобавитьЗакладку();
   
КонецПроцедуры

Процедура КоманднаяПанель1УдалитьЗакладку(Кнопка)
   
   УдалитьЗакладку();
   
КонецПроцедуры

ТаблицаРеквизитовЭлементовФормы = Новый ТаблицаЗначений;
ТаблицаРеквизитовЭлементовФормы.Колонки.Добавить("Тип");
ТаблицаРеквизитовЭлементовФормы.Колонки.Добавить("Реквизит");
//Надпись
НС = ТаблицаРеквизитовЭлементовФормы.Добавить(); НС.Тип = "Надпись"; НС.Реквизит = "Видимость";
НС = ТаблицаРеквизитовЭлементовФормы.Добавить(); НС.Тип = "Надпись"; НС.Реквизит = "Лево";
НС = ТаблицаРеквизитовЭлементовФормы.Добавить(); НС.Тип = "Надпись"; НС.Реквизит = "Верх";
НС = ТаблицаРеквизитовЭлементовФормы.Добавить(); НС.Тип = "Надпись"; НС.Реквизит = "Ширина";
НС = ТаблицаРеквизитовЭлементовФормы.Добавить(); НС.Тип = "Надпись"; НС.Реквизит = "Высота";
//ПолеВвода
НС = ТаблицаРеквизитовЭлементовФормы.Добавить(); НС.Тип = "ПолеВвода"; НС.Реквизит = "Видимость";
НС = ТаблицаРеквизитовЭлементовФормы.Добавить(); НС.Тип = "ПолеВвода"; НС.Реквизит = "Лево";
НС = ТаблицаРеквизитовЭлементовФормы.Добавить(); НС.Тип = "ПолеВвода"; НС.Реквизит = "Верх";
НС = ТаблицаРеквизитовЭлементовФормы.Добавить(); НС.Тип = "ПолеВвода"; НС.Реквизит = "Ширина";
НС = ТаблицаРеквизитовЭлементовФормы.Добавить(); НС.Тип = "ПолеВвода"; НС.Реквизит = "Высота";
20 BOZKURT
 
11.09.09
00:35
(18) отправил на почту (добавил обработчики событий).
21 TDI
 
11.09.09
00:51
(20)
ой, Спасибо огромное!
у меня начало получаться....
а можно ещё маленький вопрос...посмотрите на майл :)
22 BOZKURT
 
11.09.09
00:56
(21) ответил )
Программист всегда исправляет последнюю ошибку.