Переключение на Главную Страницу Страницы: 1 2 3 [4] 5 6  ОтправитьПечать
Очень популярная тема (более 25 ответов) Класс "УправлениеФормой" (число прочтений - 37669 )
dimm73
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 414
Зарегистрирован: 03. Июля 2006
Пол: Мужской
Re: Класс "УправлениеФормой"
Ответ #45 - 25. Октября 2011 :: 11:18
Печать  
Есть несколько похожих обработок где на разных закладках на форме выведены таблицы значений. Все ТЗ на формах растягиваются с помощью привязок.

Все работает нормально если я работаю только с одной обработкой , но стоит параллельно открыть второю с привязками , то во второй обработке привязки перестают работать.

привязки назначаются в ПослеОткрытия()

Код
Выбрать все
		УправлениеФормой = СоздатьОбъект("УправлениеФормой");

	Привязка = УправлениеФормой.ПривязкаЭлементов; //Привязка:УправлениеФормой.Привязка
	Параметры = Привязка.Добавить("ТЗ3");
	Параметры.Право.Вид = Привязка.ПраваяГраница;
	Параметры.Право.Элемент = "Форма";
	Параметры.Низ.Вид = Привязка.НижняяГраница;
	Параметры.Низ.Элемент = "Форма";

	Параметры = Привязка.Добавить("ТЗ4");
	Параметры.Право.Вид = Привязка.ПраваяГраница;
	Параметры.Право.Элемент = "Форма";
	Параметры.Низ.Вид = Привязка.НижняяГраница;
	Параметры.Низ.Элемент = "Форма";

	Параметры = Привязка.Добавить("ТЗ11");
	Параметры.Право.Вид = Привязка.ПраваяГраница;
	Параметры.Право.Элемент = "Форма";
	Параметры.Низ.Вид = Привязка.НижняяГраница;
	Параметры.Низ.Элемент = "Форма";

	Привязка.Привязать();

 



Пробовал переносить привязки в ПослеСозданияФормы() - то же самое

Как исправить ситуацию?
  
Наверх
 
IP записан
 
zk96
Senior Member
****
Отсутствует


1C++ rocks!

Сообщений: 320
Местоположение: Киев
Зарегистрирован: 15. Ноября 2009
Пол: Мужской
Re: Класс "УправлениеФормой"
Ответ #46 - 25. Октября 2011 :: 11:25
Печать  
Создавай в "ПриОткрытии".
  
Наверх
 
IP записан
 
dimm73
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 414
Зарегистрирован: 03. Июля 2006
Пол: Мужской
Re: Класс "УправлениеФормой"
Ответ #47 - 25. Октября 2011 :: 12:14
Печать  
zk96 писал(а) 25. Октября 2011 :: 11:25:
Создавай в "ПриОткрытии".



Тогда ТЗ по форме криво разъезжаются, выше обсуждалось
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Класс "УправлениеФормой"
Ответ #48 - 26. Октября 2011 :: 06:00
Печать  
Используй класс Общие.Форма.Привязка или Общие.Форма.Привязки - там таких проблем нет.

ЗЫ: вероятно, в том классе, что ты используешь, неправильно определяется контекст формы в классе-перехватчике, в тех двух, что я сказал - перехватчик не используется вообще.
  
Наверх
 
IP записан
 
dimm73
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 414
Зарегистрирован: 03. Июля 2006
Пол: Мужской
Re: Класс "УправлениеФормой"
Ответ #49 - 26. Октября 2011 :: 07:10
Печать  
Eprst писал(а) 26. Октября 2011 :: 06:00:
Используй класс Общие.Форма.Привязка или Общие.Форма.Привязки - там таких проблем нет.

ЗЫ: вероятно, в том классе, что ты используешь, неправильно определяется контекст формы в классе-перехватчике, в тех двух, что я сказал - перехватчик не используется вообще.


спасибо, все заработало нормально с классом Общие.Форма.Привязки
  
Наверх
 
IP записан
 
Vit
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 7
Зарегистрирован: 24. Июля 2006
Re: Класс "УправлениеФормой"
Ответ #50 - 31. Октября 2011 :: 04:44
Печать  
доброе время суток!
При попытке создания объекта "УправлениеФормой" вываливается ошибка :
Код
Выбрать все
Класс: УправлениеФормой.Привязки - ошибка синтаксиса
Строка №622  Расстояние = ЛевоС-Право<<?>>;
Ожидается скалярное выражение (Право)
{R:\1C_ADMIN\Classes\УправлениеФормой\УправлениеФормой.Привязки.ert(622) }
Класс: УправлениеФормой.Привязки Файл: R:\1C_ADMIN\Classes\УправлениеФормой\УправлениеФормой.Привязки.ert компиляция не выполнена!
УправлениеФормой::Конструктор() : Внимание! Инициализация класса: УправлениеФормой.Привязки закончилась неудачно!
 



версия 1С++ 3.2.3.1
версия FormEx 2.0.5.92
версия 1sqlite 1.0.2.3
1C  7.70.027

причем если пытаюсь создать в демо конфигурации (на базе md из класса ПоставщикДанных), то всё ок, если в своей конфигурации - выдает указанную ошибку. DLL в обоих случаях грузятся из одного места.  
В чем может быть проблема?
  
Наверх
 
IP записан
 
nicesc
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 52
Зарегистрирован: 13. Июня 2009
Пол: Мужской
Re: Класс "УправлениеФормой"
Ответ #51 - 31. Октября 2011 :: 04:52
Печать  
У тебя в коде используется переменная "ПРАВО" переименуй её и будет тебе счастье.
  
Наверх
 
IP записан
 
Vit
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 7
Зарегистрирован: 24. Июля 2006
Re: Класс "УправлениеФормой"
Ответ #52 - 31. Октября 2011 :: 05:03
Печать  
Нет, переменной "ПРАВО" точно нет (это первое что проверил).
  
Наверх
 
IP записан
 
pvase
God Member
*****
Отсутствует



Сообщений: 923
Местоположение: Киев
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Класс "УправлениеФормой"
Ответ #53 - 14. Ноября 2011 :: 11:34
Печать  
Можно ли както привязать подобные реквизиты указав их через запятую или как то еще (через список, коллекцию, вектор и т.д.)?

Сейчас пишу так:
Код
Выбрать все
Параметры = Привязка.Добавить("кСфЗаказы");
	Параметры.Низ.Вид = Привязка.ВерхняяГраница;
	Параметры.Низ.Элемент = "Форма";
	Параметры.Право.Вид = Привязка.ПраваяГраница;
	Параметры.Право.Элемент = "Форма";
	Параметры.Лево.Вид = Привязка.ПраваяГраница;
	Параметры.Лево.Элемент = "ТП_Отчета";

	Параметры = Привязка.Добавить("кИстория");
	Параметры.Низ.Вид = Привязка.ВерхняяГраница;
	Параметры.Низ.Элемент = "Форма";
	Параметры.Право.Вид = Привязка.ПраваяГраница;
	Параметры.Право.Элемент = "Форма";
	Параметры.Лево.Вид = Привязка.ПраваяГраница;
	Параметры.Лево.Элемент = "ТП_Отчета";

	Параметры = Привязка.Добавить("кПодчиненные");
	Параметры.Низ.Вид = Привязка.ВерхняяГраница;
	Параметры.Низ.Элемент = "Форма";
	Параметры.Право.Вид = Привязка.ПраваяГраница;
	Параметры.Право.Элемент = "Форма";
	Параметры.Лево.Вид = Привязка.ПраваяГраница;
	Параметры.Лево.Элемент = "ТП_Отчета";

	Параметры = Привязка.Добавить("кДерево");
	Параметры.Низ.Вид = Привязка.ВерхняяГраница;
	Параметры.Низ.Элемент = "Форма";
	Параметры.Право.Вид = Привязка.ПраваяГраница;
	Параметры.Право.Элемент = "Форма";
	Параметры.Лево.Вид = Привязка.ПраваяГраница;
	Параметры.Лево.Элемент = "ТП_Отчета";

	Параметры = Привязка.Добавить("кДвижения");
	Параметры.Низ.Вид = Привязка.ВерхняяГраница;
	Параметры.Низ.Элемент = "Форма";
	Параметры.Право.Вид = Привязка.ПраваяГраница;
	Параметры.Право.Элемент = "Форма";
	Параметры.Лево.Вид = Привязка.ПраваяГраница;
	Параметры.Лево.Элемент = "ТП_Отчета";

	Параметры = Привязка.Добавить("кРеестр");
	Параметры.Низ.Вид = Привязка.ВерхняяГраница;
	Параметры.Низ.Элемент = "Форма";
	Параметры.Право.Вид = Привязка.ПраваяГраница;
	Параметры.Право.Элемент = "Форма";
	Параметры.Лево.Вид = Привязка.ПраваяГраница;
	Параметры.Лево.Элемент = "ТП_Отчета";

	Параметры = Привязка.Добавить("кАвтор");
	Параметры.Низ.Вид = Привязка.ВерхняяГраница;
	Параметры.Низ.Элемент = "Форма";
	Параметры.Право.Вид = Привязка.ПраваяГраница;
	Параметры.Право.Элемент = "Форма";
	Параметры.Лево.Вид = Привязка.ПраваяГраница;
	Параметры.Лево.Элемент = "ТП_Отчета";

	Параметры = Привязка.Добавить("кРасходные");
	Параметры.Низ.Вид = Привязка.ВерхняяГраница;
	Параметры.Низ.Элемент = "Форма";
	Параметры.Право.Вид = Привязка.ПраваяГраница;
	Параметры.Право.Элемент = "Форма";
	Параметры.Лево.Вид = Привязка.ПраваяГраница;
	Параметры.Лево.Элемент = "ТП_Отчета";
 


Можно ли как то оптимизировать этот код, указав идентификаторы в какой то массив?
  
Наверх
IP записан
 
sava
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 56
Зарегистрирован: 18. Февраля 2010
Пол: Мужской
Re: Класс "УправлениеФормой"
Ответ #54 - 15. Ноября 2011 :: 05:51
Печать  
А чем не устраивает функция с передачей строки идентификаторов?
  
Наверх
 
IP записан
 
pvase
God Member
*****
Отсутствует



Сообщений: 923
Местоположение: Киев
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Класс "УправлениеФормой"
Ответ #55 - 15. Ноября 2011 :: 06:59
Печать  
sava писал(а) 15. Ноября 2011 :: 05:51:
А чем не устраивает функция с передачей строки идентификаторов?

Извините, а что это за функция?
В Классе метод "Добавить" не предусматривает передачу больше одного атрибута, да и возвращает он только ссылку на один элемент. Т.е. если даже взять и подправить метод Добавить чтобы добавлялись атрибуты из строки через запятую, то в конце вернется ссылка только на последний и все привязки выполняться только для последнего добавленного.
  
Наверх
IP записан
 
pvase
God Member
*****
Отсутствует



Сообщений: 923
Местоположение: Киев
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Класс "УправлениеФормой"
Ответ #56 - 16. Ноября 2011 :: 08:06
Печать  
Нашел интересное поведение привязки. Если правые кнопки и сплитер привязать не по ширине формы а сделать ширину неизменяемой, и при этом левый край привязать с вертикальному сплитеру, то при перемещении сплитера вправо до конца - реквизиты скрываются (и это правильно), но обратно их показать двигая сплитер влево уже нельзя.

Прикладываю пример. Попробуйте в примере передвинуть вертикальный сплитер вправо до конца, а потом попробуйте подвигать влево.
  

attachments.ert ( 58 KB | Загрузки )
Наверх
IP записан
 
elkpro
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 145
Зарегистрирован: 19. Мая 2006
Re: Класс "УправлениеФормой"
Ответ #57 - 23. Декабря 2011 :: 13:37
Печать  
Что может быть такого, что у меня сплиттер вообще не работает?
В вышеупомянутом примере вообще ничего не могу подвигать, т.к. он даже никак не выделяется при подведении курсора.
  
Наверх
 
IP записан
 
mozer
Senior Member
****
Отсутствует


1C++ rocks!

Сообщений: 324
Местоположение: Пермь
Зарегистрирован: 14. Января 2011
Пол: Мужской
Re: Класс "УправлениеФормой"
Ответ #58 - 19. Января 2012 :: 06:30
Печать  
,1,0);
{Обработка.СправочникСписокКлиенты.Форма.Модуль(110)}: УправлениеФормой.Привязки::УстановитьГраницыПоФорме(Строка ИмяАтрибута=КоманднаяПанельМногострочнойЧастиКлиенты, Число Лево=1, Число Право=1, Число Верх=1, Число Низ=0) : УправлениеФормой.ЭлементПривязки::Установить(Строка ГраницаЭлементаФормы=Право, Строка Вид=П, Строка Элемент=Форма) : Коллекция::ИнформироватьОЗаписиКлюча(Строка Ключ=Вид, Строка Значение=П, Число ФСО=1) : Не найдена функция обратного вызова ОбработкаСобытияОтКласса()
вирт().ОтправитьСообщениеМодулюХоз("Коллекция","ПриЗаписи",Структура);
{D:\База_1С\Рабочая_SQL\SystemData\Classes\Объекты_V8\Коллекция.ert(25) }

Право.Вид = Вид;
ментПривязки.ert(93) }

ЭлементФормы.Установить("Право","П","Форма");


Вот такая ошибка при выполнении
Код
Выбрать все
ВидыСравнения = СоздатьОбъект("ПоставщикДанных.ВидыСравнения"); // для удобства работы с отборами

	УправлениеФормой = СоздатьОбъект("УправлениеФормой");
	Привязка = УправлениеФормой.ПривязкаЭлементов;
	,1,0);
	,0);
	,1,0);
	,1);
	ЭлементПривязки = Привязка.Добавить("КоманднаяПанельМногострочнойЧастиКарты");

	ЭлементПривязки.Установить("Низ","Н","ТабличноеПолеМногострочнойЧастиКлиенты");
	ЭлементПривязки.Установить("Лево","Л","Форма");
	ЭлементПривязки.Установить("Право","П","Форма");

	ЭлементПривязки = Привязка.Добавить("ТабличноеПолеМногострочнойЧастиКарты");

	ЭлементПривязки.Установить("Низ","Н","Форма");
	ЭлементПривязки.Установить("Лево","Л","Форма");
	ЭлементПривязки.Установить("Право","П","Форма");

	Привязка.Привязать();

	// есть некоторые нюансы если не указать конкретно слой
	Форма.ИспользоватьСлой("Основной",2);
 

  
Наверх
 
IP записан
 
mozer
Senior Member
****
Отсутствует


1C++ rocks!

Сообщений: 324
Местоположение: Пермь
Зарегистрирован: 14. Января 2011
Пол: Мужской
Re: Класс "УправлениеФормой"
Ответ #59 - 19. Января 2012 :: 07:45
Печать  
Разобрался спасибо, что то с V8 было заменил на другой и все заработало
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 2 3 [4] 5 6 
ОтправитьПечать