Имя: Пароль:
1C
1С v8
Установить привязки программно
0 thomY100
 
01.03.12
09:27
Добрый день, есть такая проблема:
Добавил на панель формы страницу, а на нее табличное поле, указал для
него привязки:
ТабличноеПолеАгентские.УстановитьПривязку(ГраницаЭлементаУправления.Верх,ЭлементыФормы.ОсновнаяПанель,ГраницаЭлементаУправления.Верх);
           ТабличноеПолеАгентские.УстановитьПривязку(ГраницаЭлементаУправления.Низ,ЭлементыФормы.ОсновнаяПанель,ГраницаЭлементаУправления.Низ);
           ТабличноеПолеАгентские.УстановитьПривязку(ГраницаЭлементаУправления.Лево,ЭлементыФормы.ОсновнаяПанель,ГраницаЭлементаУправления.Лево);
           ТабличноеПолеАгентские.УстановитьПривязку(ГраницаЭлементаУправления.Право,ЭлементыФормы.ОсновнаяПанель,ГраницаЭлементаУправления.Право);

но при разворачивании формы на весь экран, размеры табличного поля не изменяются, подскажите в чем может быть причина?
1 GenV
 
01.03.12
09:35
(0) если элемент на странице, то привязываться нужно к "Панель"
2 thomY100
 
01.03.12
09:56
заменил везде ЭлементыФормы.ОсновнаяПанель на Панель, тот же эффект
3 thomY100
 
01.03.12
10:28
кто-нибудь может подсказать источник проблемы?
4 GenV
 
01.03.12
11:54
(3) Проверить правильность установления размера элемента !до! установки привязок, проверить, что элемент создан !внутри! панели.
5 thomY100
 
01.03.12
12:08
ну с размером вроде порядок, я его скопировал с размера другого табличного поля с другой страницы, а как проверить что элемент создан внутри панели?
6 Reset
 
01.03.12
12:11
(5) При копировании ("вставить") должна быть выделена (активна) панель
7 Reset
 
01.03.12
12:12
кроме того, он перемещаться будет вместе с панелью
8 Reset
 
01.03.12
12:13
Если создаешь программно, то в параметрах указывается панель
9 thomY100
 
01.03.12
12:15
создаю программно, а в каком именно параметре указывается панель?
10 Reset
 
01.03.12
12:15
В четвертом.
11 thomY100
 
01.03.12
12:16
создаю панель так:

ТабличноеПолеАгентские = ЭлементыФормы.Добавить(Тип("ТабличноеПоле"),"Агентские",Истина,ЭлементыФормы.ОсновнаяПанель);
12 GenV
 
01.03.12
12:18
(11) Текущая страница должна быть предварительно обязательно установлена. Размеры элемент не должны быть больше чем реальные у станицы панели (в момент добавления) иначе привязки игнорируются.
13 Reset
 
01.03.12
12:24
(12) А какие размеры у элемента (в момент добавления)? По моему, 0 высота/ширина (не помню)

Автору: А создание панели/ТП заранее в конфигураторе и при необходимости включение видимости нерассматриваешь? Просто не хочется гадать, что там у тебя в черном ящике
14 GenV
 
01.03.12
12:29
(13) Не у элемента в момента добавления, а у страницы панели в момент добавления на неё элемента ) Размеры же он будет устанавливать.
15 thomY100
 
01.03.12
13:29
вот весь код добавления

СтраницаАгентские=ЭлементыФормы.ОсновнаяПанель.Страницы.Вставить(3,"Агентские","Агентские");
           ЭлементыФормы.ОсновнаяПанель.ТекущаяСтраница = СтраницаАгентские;
           
           ТабличноеПолеАгентские = ЭлементыФормы.Добавить(Тип("ТабличноеПоле"),"Агентские",Истина,ЭлементыФормы.ОсновнаяПанель);
               
           ТабличноеПолеАгентские.Имя = "Агентские";
             ТабличноеПолеАгентские.Данные = "МКМ_Агентские";
           
           ТабличноеПолеАгентские.Верх = 24;
           ТабличноеПолеАгентские.Высота = 212;
           ТабличноеПолеАгентские.Ширина = 646;
           ТабличноеПолеАгентские.Лево = 6;
           ТабличноеПолеАгентские.СоздатьКолонки();

           ТабличноеПолеАгентские.Подвал = Истина;
           ТабличноеПолеАгентские.ТолькоПросмотр = Ложь;
           
           ТабличноеПолеАгентские.УстановитьПривязку(ГраницаЭлементаУправления.Верх,Панель,ГраницаЭлементаУправления.Верх);
           ТабличноеПолеАгентские.УстановитьПривязку(ГраницаЭлементаУправления.Низ,Панель,ГраницаЭлементаУправления.Низ);
           ТабличноеПолеАгентские.УстановитьПривязку(ГраницаЭлементаУправления.Лево,Панель,ГраницаЭлементаУправления.Лево);
           ТабличноеПолеАгентские.УстановитьПривязку(ГраницаЭлементаУправления.Право,Панель,ГраницаЭлементаУправления.Право);

что в нем поправить, размеры не больше чем у панели, их скопировал с другого табличного поля, добавляю программно чтобы не париться с обновлением
16 GenV
 
01.03.12
13:37
(15) Если поле занимает полностью всю страницу - программно не добавишь, нужно сделать небольшой отступ на рамку.
17 Mort
 
01.03.12
13:48
(15) Про панель тебя жестоко обманули.
18 GenV
 
01.03.12
13:57
(17) Может попробуешь сначала получить программно значения добавленных вручную привязок и сравнить? )
19 thomY100
 
01.03.12
13:59
немного разобрался, если табличное поле добавляется, когда документ не развернут на весь экран, то всё норм, и при разворачивании оно тоже растягивается, а вот если документ развернут, то оно создается маленькое, а при сворачивании становится ещё меньше, как это побороть?
20 Reset
 
01.03.12
14:09
Задавать относительный размер, а не абсолютный
21 Reset
 
01.03.12
14:10
т.е. не ТабличноеПолеАгентские.Высота = 212;
а увязать на текущие размеры панели
22 Mort
 
01.03.12
14:13
Пример размещения табличного поля с командной панелью на странице.

Лево = 6;
Верх = 6;
Низ  = ПанельСтраниц.Высота - 26;
ШиринаТаблицы = ПанельСтраниц.Ширина - 14;

   // Командная панель
   
   КоманднаяПанель = ЭлементыФормы.Добавить(Тип("КоманднаяПанель"), Ид + "_КП", Истина, ПанельСтраниц);
   КоманднаяПанель.Лево = Лево;
   КоманднаяПанель.Верх = Верх;
   КоманднаяПанель.Ширина = ШиринаТаблицы;
   КоманднаяПанель.Высота = 24;
   КоманднаяПанель.УстановитьПривязку(ГраницаЭлементаУправления.Право, ПанельСтраниц, ГраницаЭлементаУправления.Право);
   
   ИсточникДанных._ЭлементыУправления.Вставить("КоманднаяПанель", КоманднаяПанель);
   Верх = Верх + 26;
   
   // Табличное поле
   
   ТабличноеПоле = ЭлементыФормы.Добавить(Тип("ТабличноеПоле"), Ид + "_ТабличноеПоле", Истина, ПанельСтраниц);
   ТабличноеПоле.Лево = Лево;
   ТабличноеПоле.Верх = Верх;
   ТабличноеПоле.Ширина = ШиринаТаблицы;
   ТабличноеПоле.Высота = Низ - Верх;
   

   
   ТабличноеПоле.УстановитьПривязку(ГраницаЭлементаУправления.Право, ПанельСтраниц, ГраницаЭлементаУправления.Право);
   ТабличноеПоле.УстановитьПривязку(ГраницаЭлементаУправления.Низ,ПанельСтраниц, ГраницаЭлементаУправления.Низ);
   

   
   КоманднаяПанель.ИсточникДействий = ТабличноеПоле;
   КоманднаяПанель.Автозаполнение = Истина;
23 Mort
 
01.03.12
14:14
+(22) Примечание от К.О.: ПанельСтраниц это панель со страницами, а не панель формы, которая Форма.Панель (или просто Панель).
24 GenV
 
01.03.12
14:17
(22) Мою просьбу не осилил? ) Посмотреть как типовой механизм работает ...
25 Mort
 
01.03.12
14:17
(24) Накуй мне что-то смотреть, я на этих привязках упряжку собак сожрал.
26 GenV
 
01.03.12
14:19
(25) Ответь за свои слова (17), будь мужиком ...
27 Mort
 
01.03.12
14:20
http://infostart.ru/public/65473/
вот пример обработки, где ТП и прочие элементы с привязками размещаются на динамически создаваемых страницах. Версия древняя, но работает. Есть получше.
28 Mort
 
01.03.12
14:21
(26) А ты приведи пример где для привязки элементов на странице используется панель формы (реквизит "Панель").
29 thomY100
 
01.03.12
14:22
ок, всем спасибо, заработало
30 GenV
 
01.03.12
14:23
(27) И что? http://infostart.ru/public/22288/
Ты утверждает, что типовой механизм не работает. Обоснуй.
31 GenV
 
01.03.12
14:25
(28) Уже писал. Добавь вручную и получи программно привязки ...
32 Mort
 
01.03.12
14:38
(30) Ты то свою прогу хоть читал? Там привязки устанавливаются к панели на которой страницы. О чем так долго говорили большевики...
33 GenV
 
01.03.12
14:44
(32) Когда кончишь тупишь и осознаешь смысл ФормаВладелец.Панель попробуй (31)
34 Mort
 
01.03.12
15:01
(33) Вот оно чо. У тебя панели растягиваются вместе с формой, поэтому элементы в них не тупят, тягаются пропорционально.
Ну размести на панели со страницами (Которая растягивается пропорционально) поле ввода фиксированной длины, чтобы было привязано к правой стороне страницы панели.
35 Mort
 
01.03.12
15:04
+(34) Правда не очень пример. Можно выкрутится через привязку к правой стороне. Но можно придумать задачу когда привязками к форме не решишь.
36 Mort
 
01.03.12
15:19
Собсно достаточно и (34).
37 GenV
 
01.03.12
15:32
(34) http://narod.ru/disk/42432084001/Ext1.epf.html
Посмотри на сообщения и откуда они берутся
38 Mort
 
01.03.12
15:54
Ну платформа сама назначает панель если ей "подсунуть" панель формы (отдельный вопрос нафига). Отсюда монопенисуально что туда посылать, привязано будет к элементу - панели держателю элемента (а не панели формы). Откуда категоричность заявления в (1) - не представляю.
39 Mort
 
01.03.12
15:55
+(38) Автор изначально и так правильно написал.
40 Mort
 
01.03.12
15:58
(37) В своей обработке замени:

   Сообщить("Смотри! П1: " + П1);
   Сообщить("Смотри! П2: " + П2);
   Сообщить("Смотри! П3: " + П3);
   Сообщить("Смотри! П4: " + П4);

на
   Сообщить("Смотри! П1: " + П1.Имя);
   Сообщить("Смотри! П2: " + П2);
   Сообщить("Смотри! П3: " + П3.Имя);
   Сообщить("Смотри! П4: " + П4);
41 Mort
 
01.03.12
15:59
Значение "Панель", тип значения "Панель" - это все не свойство формы "Панель". Нужно на имя смотреть.
42 GenV
 
01.03.12
16:01
(38) Категоричность от невозможности вручную такую привязку установить.
43 GenV
 
01.03.12
16:04
(41) А не кто не говорит что это панель формы из реквизита. Мне интересует почему ты решил (17).
44 Mort
 
01.03.12
16:05
(42) Вручную как раз возможно установить только привязку к панели - держателю элементы, главная панель формы тут не приделах.
(43) Ввел заблуждение человека, что ошибка кроется именно там, когда там все правильно. И меня тоже.
45 GenV
 
01.03.12
16:10
(44) Где обманули? Не работает?
46 GenV
 
01.03.12
16:11
(44) Собственно замена "Панель" введенной вручную происходит платформой на нужный элемент.
47 Mort
 
01.03.12
16:14
(46) Это да, только заметь, что для привязок элементов находящихся непосредственно на форме, вручную указывается не "Панель" а "Форма" (а привязывается как раз к этой самой панели формы). так что Панель тут просто одинаковые слова.
48 GenV
 
01.03.12
16:15
(47) Согласен. Ладно, разобрались.