Переключение на Главную Страницу Страницы: 1 [2] 3 4  ОтправитьПечать
Очень популярная тема (более 25 ответов) Обновление реквизитов на форме (число прочтений - 23005 )
ostap
Junior Member
**
Отсутствует



Сообщений: 32
Зарегистрирован: 31. Мая 2006
Пол: Мужской
Re: Обновление реквизитов на форме
Ответ #15 - 26. Июля 2006 :: 13:47
Печать  
ты видимо не понял
сзАтрибутов.ДобавитьЗначение(тГруппа.Наименование,"ТекстГруппа");
нормально все отсюда получается
а вот какой смысл в Значение=ИмяАтрибута?
Если потом
АтрФормы.УстановитьАтрибут(Форма,ИмяАтрибута);
     АтрФормы.Заголовок=Значение;
  
Наверх
 
IP записан
 
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: Обновление реквизитов на форме
Ответ #16 - 26. Июля 2006 :: 13:55
Печать  
ostap писал(а) 26. Июля 2006 :: 13:47:
ты видимо не понял
сзАтрибутов.ДобавитьЗначение(тГруппа.Наименование,"ТекстГруппа");
нормально все отсюда получается
а вот какой смысл в Значение=ИмяАтрибута?
Если потом
АтрФормы.УстановитьАтрибут(Форма,ИмяАтрибута);
    АтрФормы.Заголовок=Значение;

Вот кусочек твоего кода:
Код
Выбрать все
Значение=сзАтрибутов.ПолучитьЗначение(ъ,ИмяАтрибута); 


Я еще удивился второму параметру (без кавычек).
Думал, может ты описАлся.
Все должно обновляться нормально.
Хочешь, вышли обработку на мыло, поковыряюсь.
  
Наверх
ICQ  
IP записан
 
ostap
Junior Member
**
Отсутствует



Сообщений: 32
Зарегистрирован: 31. Мая 2006
Пол: Мужской
Re: Обновление реквизитов на форме
Ответ #17 - 26. Июля 2006 :: 14:03
Печать  
я не понял: как должно обновляться?
как у меня или как у тебя?

и все-таки, цитата из ссылки в #14:

"Фигня такова: Если процедура вызывается из любой из vtools'освких процедур (типа ПриДвойномНажатииЛевойКнопки и т.п.), то обнолвение формы не происходит... совсем.... И даже если в реквизит на форме заносится значение, то оно там есть но не показывается (точнее не обновляется) - в этом и была моя проблема: я думал что строка кода не срабатывает, а просто форма не обновлялась.. Приходится принудительно обновлять форму.
И соответственно, если та же процедура вызвается штатными средствами, то обновление формы происходит штатно и реквизит нормально отображается."

оно реально так?
  
Наверх
 
IP записан
 
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: Обновление реквизитов на форме
Ответ #18 - 26. Июля 2006 :: 14:11
Печать  
Цитата:
я не понял: как должно обновляться?
как у меня или как у тебя?

Как у меня. Как у тебя Значение=Пусто
А вот это:
Цитата:
Приходится принудительно обновлять форму.

Ты же это и делаешь.
Мне кажется, у тебя ошибка в коде.
Надумаешь прислать, присылай.
  
Наверх
ICQ  
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Обновление реквизитов на форме
Ответ #19 - 26. Июля 2006 :: 14:53
Печать  
Так. Я кажется врубился в чем дело.
А дело в том, что при вызове предопределенных процедур ТП выполняется "m_pDoc->OnEndBatch(0);" и вот этот 0 в параметре как раз и показывает, что все изменения внутренних переменных не отражаются на контролах (нет между ними обмена данными). И что бы вы не делали в событиях ТП, по окончании отработки события будет вызвана эта строка и обновления контролов не произойдет.
  

FormEx developer
Наверх
www  
IP записан
 
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: Обновление реквизитов на форме
Ответ #20 - 26. Июля 2006 :: 14:56
Печать  
Цитата:
И что бы вы не делали в событиях ТП, по окончании отработки события будет вызвана эта строка и обновления контролов не произойдет.

Ты хочешь сказать, что и Форма.Обновить() не сработает?
Проверил в процедуре ТабПолеВыбор()
Форма обновляется даже без принудительного обновления.
Код
Выбрать все
Процедура ТабПолеВыбор()
	  Форма.Текстуха.Заголовок(ТекущееВремя());
КонецПроцедуры
 

  
Наверх
ICQ  
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Обновление реквизитов на форме
Ответ #21 - 26. Июля 2006 :: 15:02
Печать  
vip писал(а) 26. Июля 2006 :: 14:56:
Цитата:
И что бы вы не делали в событиях ТП, по окончании отработки события будет вызвана эта строка и обновления контролов не произойдет.

Ты хочешь сказать, что и Форма.Обновить() не сработает?

Именно это и хочу сказать.
  

FormEx developer
Наверх
www  
IP записан
 
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: Обновление реквизитов на форме
Ответ #22 - 26. Июля 2006 :: 15:06
Печать  
Цитата:
Именно это и хочу сказать.

Я выше пост дополнил. Глянь.
Ты не прав.
  
Наверх
ICQ  
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Обновление реквизитов на форме
Ответ #23 - 26. Июля 2006 :: 15:15
Печать  
vip писал(а) 26. Июля 2006 :: 15:06:
Цитата:
Именно это и хочу сказать.

Я выше пост дополнил. Глянь.
Ты не прав.

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

FormEx developer
Наверх
www  
IP записан
 
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: Обновление реквизитов на форме
Ответ #24 - 26. Июля 2006 :: 15:24
Печать  
Цитата:
Хм... Вообще-то речь не о тексте на форме, который вообще при любом чихе меняется, а о реквизитах, которые привязаны к данным.

Проверил так.
Код
Выбрать все
Процедура ТабПолеВыбор()
	  ПВ=ТабПоле.ТекущиеДанные.Получить("МояКолонка");
	  Форма.Обновить();
КонецПроцедуры
 


ПВ это поле ввода.
Все работает.
Или я что-то недопонимаю?
  
Наверх
ICQ  
IP записан
 
ostap
Junior Member
**
Отсутствует



Сообщений: 32
Зарегистрирован: 31. Мая 2006
Пол: Мужской
Re: Обновление реквизитов на форме
Ответ #25 - 27. Июля 2006 :: 05:05
Печать  
вот примерно код
Код
Выбрать все
Процедура ПриНажатииЛевойКнопкиНадДеревом(НомерСтроки, НомерКолонки)
	АтрФормы.УстановитьАтрибут(Форма,"Дерево");
	ВремГруппа=АтрФормы.ЗначениеИзДерева(НомерСтроки,4);
	Если ВремГруппа<>тГруппа Тогда
		тГруппа=ВремГруппа;
		Обновить();
			    сзАтрибутов=СоздатьОбъект("СписокЗначений");
			    сзАтрибутов.ДобавитьЗначение(тГруппа.МинНац,"МинНац");
			    сзАтрибутов.ДобавитьЗначение(тГруппа.СредНац,"СредНац");
			    сзАтрибутов.ДобавитьЗначение(тГруппа.МаксНац,"МаксНац");
			    сзАтрибутов.ДобавитьЗначение(тГруппа.МаксКат,"МаксКат");
			    ОбновлениеФормы(сзАтрибутов);
	КонецЕсли;
КонецПроцедуры
 



в Обновить() обновляется ТП
vip, ты не прав, в моем варианте получаются и ИмяПоля и Значение
с текстовыми полями все верно, именно так и было у меня, просто стал
с полями ввода разбираться, решил все однообразно причесать, щас вернул текстухи
значения в поля ввода реально устанавливаются: если нажать на "педальку" любого поля,
все значения установленных полей обновляютя
  
Наверх
 
IP записан
 
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: Обновление реквизитов на форме
Ответ #26 - 27. Июля 2006 :: 05:27
Печать  
Да я не против. Просто я смотрел вот этот вчерашний кусок.
В нем ИмяАтрибута без кавычек, а это неправильно, наверное.
Цитата:
Вот кусочек твоего кода:
Код:
Значение=сзАтрибутов.ПолучитьЗначение(ъ,ИмяАтрибута);

А насчет обновления не пойму. Может, как-то мешает Обновить() для ТП?
Попробуй загнать код Обновить() в процедуру ОбновлениеФормы().
Почитай выше, я пробовал обновлять поле ввода при событиях ТП - все нормально.
АЛьФ не поверил, может сегодня чего скажет.
  
Наверх
ICQ  
IP записан
 
ostap
Junior Member
**
Отсутствует



Сообщений: 32
Зарегистрирован: 31. Мая 2006
Пол: Мужской
Re: Обновление реквизитов на форме
Ответ #27 - 27. Июля 2006 :: 05:34
Печать  
Уже почитал
попробовал у себя:
Код
Выбрать все
Процедура ТабПолеПриАктивизацииЯчейки()
ИмяТов=ТабПоле.ТекущиеДанные.Наименование;
КодТов=ТабПоле.ТекущиеДанные.Код;
Форма.ТекстТовар.Заголовок(Код+" | "+Наименование); //это нормально работает и без Форма.Обновить()
ПВ=ТабПоле.ТекущиеДанные.Розница; //значение установлено, но ...
Форма.Обновить();					    //в ПВ на форме =0,00
КонецПроцедуры
 



причем, повторюсь, что когда на форме нет Дерева, все работает
  
Наверх
 
IP записан
 
ostap
Junior Member
**
Отсутствует



Сообщений: 32
Зарегистрирован: 31. Мая 2006
Пол: Мужской
Re: Обновление реквизитов на форме
Ответ #28 - 27. Июля 2006 :: 05:37
Печать  
vip писал(а) 27. Июля 2006 :: 05:27:
Да я не против. Просто я смотрел вот этот вчерашний кусок.
В нем ИмяАтрибута без кавычек, а это неправильно, наверное.
Цитата:
Вот кусочек твоего кода:
Код:
Значение=сзАтрибутов.ПолучитьЗначение(ъ,ИмяАтрибута);



Почему неправильно?
из СП  Подмигивание :
ПолучитьЗначение(<?>,)
Синтаксис:
ПолучитьЗначение(<Позиция>,<Строка>)
...
<Строка> - идентификатор переменной, в которой возвращается символьное представление получаемого значения.
  
Наверх
 
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Обновление реквизитов на форме
Ответ #29 - 27. Июля 2006 :: 05:50
Печать  
vip писал(а) 26. Июля 2006 :: 14:56:
Цитата:
И что бы вы не делали в событиях ТП, по окончании отработки события будет вызвана эта строка и обновления контролов не произойдет.

Ты хочешь сказать, что и Форма.Обновить() не сработает?
Проверил в процедуре ТабПолеВыбор()
Форма обновляется даже без принудительного обновления.
Код
Выбрать все
Процедура ТабПолеВыбор()
	  Форма.Текстуха.Заголовок(ТекущееВремя());
КонецПроцедуры
 


Угу. Тогда дополнение к тому, что я говорил выше:
m_pDoc->OnEndBatch(0) вызывается все же не для всех событий, для события ПриАктивизацииСтроки вызывается m_pDoc->OnEndBatch(1) и это фиксирует обмен данными между контролами и внутренними переменными.
Ну, или все мои измышления неверны Улыбка

  

FormEx developer
Наверх
www  
IP записан
 
Переключение на Главную Страницу Страницы: 1 [2] 3 4 
ОтправитьПечать