Переключение на Главную Страницу Страницы: [1] 2  ОтправитьПечать
Очень популярная тема (более 25 ответов) Почему нельзя получить значение атрибута формы если Ид=Наименование? (число прочтений - 7901 )
CaSH
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 43
Зарегистрирован: 02. Мая 2011
Почему нельзя получить значение атрибута формы если Ид=Наименование?
03. Октября 2011 :: 14:43
Печать  
Организовал проверка разных полей на форме элемента справочника

Проверяю разные поля, в том числе предопределенные Наименование и Код
АтрФормы = СоздатьОбъект("АтрибутФормы");
АтрФормы.УстановитьАтрибут(КонтФормы.Форма, ИмяРеквизита);
Сообщить(АтрФормы.Значение);
И получается чудо:
Пока ИмяРеквизита=люой реквизит справочника или формы все нормально, но предопределенные реквизиты Наименование и Код у него всегда пустые
Может есть выход а? Нерешительный Нерешительный
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Почему нельзя получить значение атрибута формы если Ид=Наименование?
Ответ #1 - 03. Октября 2011 :: 15:04
Печать  
Есть. Использовать штатные методы.
А так, это баян, который АЛьФ/Артур никак не поправят
Предопределенные атрибуты - НомерДок,Наименование,Код,ДатаДок не возвращаются через атрибуты формы.
ЗЫ: и не устанавливаются
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Почему нельзя получить значение атрибута формы если Ид=Наименование?
Ответ #2 - 03. Октября 2011 :: 15:07
Печать  
  
Наверх
 
IP записан
 
CaSH
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 43
Зарегистрирован: 02. Мая 2011
Re: Почему нельзя получить значение атрибута формы если Ид=Наименование?
Ответ #3 - 03. Октября 2011 :: 15:45
Печать  
очень жаль и спасибо за ответ, а то бы гадал
  
Наверх
 
IP записан
 
mszsuz
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 33
Зарегистрирован: 18. Октября 2010
Re: Почему нельзя получить значение атрибута формы если Ид=Наименование?
Ответ #4 - 03. Октября 2011 :: 15:51
Печать  
Один из вариантов:
Код
Выбрать все
//_____________________________________________________________________________

Процедура УстановитьПеременнуюКонтекста(Конт, Имя, Значение) Экспорт

	ВМ = СоздатьОбъект("ВыполняемыйМодуль");

	ВМ.УстановитьМодуль("
	|
	|Процедура _УстановитьПеременную(Значение)
	|	Попытка
	|		"+Имя+" = Значение;
	|	Исключение
	|	КонецПопытки;
	|КонецПроцедуры");

	ВМ.НазначитьКонтекст(Конт);
	ВМ.КомпилироватьИВыполнитьМодуль();
	ВМ._УстановитьПеременную(Значение);

КонецПроцедуры
//_____________________________________________________________________________

Функция ПолучитьПеременнуюКонтекста(Конт, Имя) Экспорт

	ВМ = СоздатьОбъект("ВыполняемыйМодуль");

	ВМ.УстановитьМодуль("
	|
	|Функция _ПолучитьПеременную()
	|	Попытка
	|		Возврат "+Имя+";
	|	Исключение
	|	КонецПопытки;
	|КонецФункции");

	ВМ.НазначитьКонтекст(Конт);
	ВМ.КомпилироватьИВыполнитьМодуль();

	Возврат ВМ._ПолучитьПеременную();

КонецФункции
 

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


1C++ rocks!

Сообщений: 43
Зарегистрирован: 02. Мая 2011
Re: Почему нельзя получить значение атрибута формы если Ид=Наименование?
Ответ #5 - 03. Октября 2011 :: 15:54
Печать  
А не подскажете почему при установке цвета если у Атрибута нет ревизита, то вываливается ошибка? Ведь атрибут то получен
Например:
Цитата:
FormEx_External.УстановитьФорму(Форма);
Для Счетчик=0 По FormEx_External.КоличествоАтрибутов()-1 Цикл
FormEx_External.ПолучитьАтрибут(Счетчик);
Атрибут.ЦветФона = 16777215; // белый


тут вылетает с ошибкой памяти если Атрибут.Идентификатор=""
  
Наверх
 
IP записан
 
mszsuz
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 33
Зарегистрирован: 18. Октября 2010
Re: Почему нельзя получить значение атрибута формы если Ид=Наименование?
Ответ #6 - 03. Октября 2011 :: 15:57
Печать  
В доке написано, что ЦветФона и ЦветТекста нестабильные.
  
Наверх
 
IP записан
 
CaSH
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 43
Зарегистрирован: 02. Мая 2011
Re: Почему нельзя получить значение атрибута формы если Ид=Наименование?
Ответ #7 - 03. Октября 2011 :: 16:01
Печать  
mszsuz, за пример спасибо, я так еще не делал, хотя видел аналогичный способ типовыми средствами
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Почему нельзя получить значение атрибута формы если Ид=Наименование?
Ответ #8 - 03. Октября 2011 :: 16:06
Печать  
Цвет можно только у текста менять и привет.
  
Наверх
 
IP записан
 
CaSH
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 43
Зарегистрирован: 02. Мая 2011
Re: Почему нельзя получить значение атрибута формы если Ид=Наименование?
Ответ #9 - 03. Октября 2011 :: 16:08
Печать  
Eprst писал(а) 03. Октября 2011 :: 16:06:
Цвет можно только у текста менять и привет.

Точно можно еще у Поля ввода, тип=2 [1CEDIT (Поле ввода)]
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Почему нельзя получить значение атрибута формы если Ид=Наименование?
Ответ #10 - 03. Октября 2011 :: 18:18
Печать  
неа, хоть и в описалове стоит что можно , но будет вылет всегда.
  
Наверх
 
IP записан
 
CaSH
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 43
Зарегистрирован: 02. Мая 2011
Re: Почему нельзя получить значение атрибута формы если Ид=Наименование?
Ответ #11 - 04. Октября 2011 :: 07:00
Печать  
Eprst писал(а) 03. Октября 2011 :: 18:18:
неа, хоть и в описалове стоит что можно , но будет вылет всегда.

Я делаю вот так и се работает, наверно из-за того что типовыми средствами:
Цитата:
FormEx_Attributes.УстановитьАтрибут(Форма, ИмяРеквизита);
FormEx_Attribs.ЦветФона = ЦветФона;
Форма.ПолучитьАтрибут("Надпись"+ИмяРеквзита).Цвет(ЦветНадписи);
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Почему нельзя получить значение атрибута формы если Ид=Наименование?
Ответ #12 - 04. Октября 2011 :: 07:38
Печать  
в описалове стоит, что цвет фона можно поменять у 2-х контролов - текст и едит. На практике - только у одного (какого именно не помню)
У другово будет вылет всегда.
  
Наверх
 
IP записан
 
CaSH
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 43
Зарегистрирован: 02. Мая 2011
Re: Почему нельзя получить значение атрибута формы если Ид=Наименование?
Ответ #13 - 04. Октября 2011 :: 08:41
Печать  
Eprst писал(а) 04. Октября 2011 :: 07:38:
в описалове стоит, что цвет фона можно поменять у 2-х контролов - текст и едит. На практике - только у одного (какого именно не помню)
У другово будет вылет всегда.


Наверно так и есть, потому что по своему коду смотрю что сделал через типоую смену цвета у поля Текст (надпись), это достаточно универсально.

А не подскажете почему в разных базах подключил свой модуль Переватчик событий и вывел что они перехватывают, раньше как то не сравнивал а теперь сравнил:
1 база: Цитата:
-> ПерехватСобытий.Событие_ПриИзмененииРазмераОкна()
-> ПерехватСобытий.Событие_ПриЗакрытии()
-> ПерехватСобытий.Событие_ПриИзмененииРазмераОкна()
-> ПерехватСобытий.Событие_ПриИзмененииРазмераОкна()
-> ПерехватСобытий.Событие_ПриИзмененииРазмераОкна()
-> ПерехватСобытий.СобытиеГМ_Событие_ЗаписьСобытияЖурналаРегистрации()
-> Запуск ПерехватСобытий.ert
-> ПерехватСобытий.Инициализация()
-> ПерехватСобытий.СобытиеГМ_ПриОткрытии
-> ПерехватСобытий.Событие_ПриОткрытии()
-> ПерехватСобытий.Событие_ПриИзмененииРазмераОкна()
-> ПерехватСобытий.Событие_ПриИзмененииРазмераОкна()
-> ПерехватСобытий.Событие_ПриИзмененииРазмераОкна()
-> ПерехватСобытий.Событие_ПослеОткрытия()
-> ПерехватСобытий.Событие_ПриИзмененииРазмераОкна()

2-я база:
Цитата:
-> ПерехватСобытий.Событие_ПриИзмененииРазмераОкна()
-> ПерехватСобытий.Событие_ПриЗакрытии()
-> ПерехватСобытий.СобытиеГМ_Событие_ЗаписьСобытияЖурналаРегистрации()
-> ПерехватСобытий.Событие_ПриИзмененииРазмераОкна()
-> ПерехватСобытий.Событие_ПриИзмененииРазмераОкна()
-> ПерехватСобытий.Событие_ПриВыбореСтроки()
-> Запуск ПерехватСобытий.ert
-> ПерехватСобытий.Инициализация()
-> ПерехватСобытий.СобытиеГМ_ПриОткрытии
-> ПерехватСобытий.Событие_ПриОткрытии()
-> ПерехватСобытий.Событие_ПриИзмененииРазмераОкна()
-> ПерехватСобытий.Событие_ПриИзмененииРазмераОкна()
-> ПерехватСобытий.Событие_ПриИзмененииРазмераОкна()
-> ПерехватСобытий.Событие_ПослеОткрытия()
-> ПерехватСобытий.Событие_ПриИзмененииРазмераОкна()
-> ПерехватСобытий.Событие_ПриИзмененииРазмераОкна()
-> ПерехватСобытий.Событие_ПриИзмененииРазмераОкна()


Это все открытие документа из общего журнала, правда разного, но ведь не из-за этого же
Не подскажете в чем дело?
Начал сравнивать т.к. в одной базе не отхватывает событие Событие_ПриВыбореСтроки()
Не подскажете куда копать?
Поставил последний релиз 1С++ 3.2.3.15 на обе базы, ситуация не изменилась - даже при одинаковых документах/журналах разные события
Я уж не говорю что иногда изменяю размер окна а сообщение о событии не выскакивает, но в отладчике если проверяю то событие ловится и сообщение теоретически формируется, просто его не видно на экране, зато если зарыть окно документа то сразу кроме событий закрытия выскакивают и прошлые "выведенные" события, они как-то буфферизируются где-то что-ли?
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Почему нельзя получить значение атрибута формы если Ид=Наименование?
Ответ #14 - 04. Октября 2011 :: 09:10
Печать  
Улыбка
А Форма.ОбработкаВыбораСтроки(1) в коде есть ?
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 
ОтправитьПечать