Имя: Пароль:
1C
1С v8
Общий модуль 1с 8.2 доступность методов
0 live in sky dreams
 
29.03.13
14:39
Создал общий модуль "работа с диалогами"
Хотел туда всунуть процедурку установки заголовка формы. Формы управляемые.
Создал модуль, всунул туда это:

Процедура УстановитьЗаголовокФормыДокумента(СтрокаВидаОперации = "", ДокументОбъект, ФормаДокумента) Экспорт

   ФормаДокумента.АвтоЗаголовок = Ложь;
   
   Если ПустаяСтрока(СтрокаВидаОперации) Тогда
       Заголовок = ДокументОбъект.Ссылка.Метаданные().Синоним + ": ";
   Иначе
       Заголовок = ДокументОбъект.Ссылка.Метаданные().Синоним + ": " + СтрокаВидаОперации + ". ";
   КонецЕсли;
       
   Если ДокументОбъект.ЭтоНовый() Тогда  
       Заголовок = Заголовок + "Новый";
   Иначе
       Если ДокументОбъект.Проведен Тогда
           Заголовок = Заголовок + "Проведен";
       ИначеЕсли ДокументОбъект.Ссылка.Метаданные().Проведение = Метаданные.СвойстваОбъектов.Проведение.Разрешить Тогда
           Заголовок = Заголовок + "Не проведен";
       Иначе
           Заголовок = Заголовок + "Записан";
       КонецЕсли;
   КонецЕсли;
   
   ФормаДокумента.Заголовок = Заголовок;

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

Скопипастено из типовой бухии, слегка кое что добавил ("Ссылка" после "ДокументОбъект") дабы отрабатывало без ошибок.

Но одного не могу понять.
ДокументОбъект.ЭтоНовый() - метод не найден.
"ДокументОбъект" действительно Объект, СП говорит, что для Объекта Документа такой метод доступен, почему тогда при работе в режиме предприятия метод не доступен?
Что то не сделал в свойствах общего модуля?
1 Зойч
 
29.03.13
14:41
какого типа ДокументОбъект?
2 RomaH
 
naïve
29.03.13
14:47
"ДокументОбъект" действительно Объект,  - скрин можно?
3 live in sky dreams
 
29.03.13
14:53
Я понял свою ошибку...
Передаю "Объект" из модуля формы документа,а на приеме "ДанныеФормыСтруктура"
Следовательно из формы документа сам по себе "Объект" оным не является.

Хочу уточнить, "Объект" является объектом только в модуле документа или через Объект.Ссылка.ПолучитьОбъект() В остальных случаях?
4 RomaH
 
naïve
29.03.13
14:56
пиши так:

НастоящийОбъект = Объект;

и его уже передавай
5 RomaH
 
naïve
29.03.13
14:58
Объект - это, блин, имя переменной
6 Fragster
 
гуру
29.03.13
14:58
РеквизитФормыВЗначение()
7 Fragster
 
гуру
29.03.13
14:59
а нафига там .Ссылка?
8 live in sky dreams
 
29.03.13
15:03
(7) структура не имеет метода "Метаданные()"
(4) Так и делал же...  Из модуля формы:


РаботаСДиалогами.УстановитьЗаголовокФормыДокумента(Строка(Объект.ВидОперации), Объект, ЭтаФорма);


Сейчас все в порядке и все отрабатывает как надо:


Процедура УстановитьЗаголовокФормыДокумента(СтрокаВидаОперации = "", ДокументОбъект, ФормаДокумента) Экспорт

   ФормаДокумента.АвтоЗаголовок = Ложь;
   
   Если ПустаяСтрока(СтрокаВидаОперации) Тогда
       Заголовок = ДокументОбъект.Ссылка.Метаданные().Синоним + ": ";
   Иначе
       Заголовок = ДокументОбъект.Ссылка.Метаданные().Синоним + ": " + СтрокаВидаОперации + ". ";
   КонецЕсли;
       
   Если ДокументОбъект.Ссылка.ПолучитьОбъект().ЭтоНовый() Тогда  
       Заголовок = Заголовок + "Новый";
   Иначе
       Если ДокументОбъект.Проведен Тогда
           Заголовок = Заголовок + "Проведен";
       ИначеЕсли ДокументОбъект.Ссылка.Метаданные().Проведение = Метаданные.СвойстваОбъектов.Проведение.Разрешить Тогда
           Заголовок = Заголовок + "Не проведен";
       Иначе
           Заголовок = Заголовок + "Записан";
       КонецЕсли;
   КонецЕсли;
   
   ФормаДокумента.Заголовок = Заголовок;

КонецПроцедуры
9 Fragster
 
гуру
29.03.13
15:04
(8) читай (6)
10 RomaH
 
naïve
29.03.13
15:04
Если ДокументОбъект.Ссылка.ПолучитьОбъект().ЭтоНовый() Тогда  
       Заголовок = Заголовок + "Новый";
   Иначе


... и это работает?
не - по другому, и ты думаешь что это работает?
11 RomaH
 
naïve
29.03.13
15:05
(9) нет такого метода
12 Fragster
 
гуру
29.03.13
15:08
(11) в управляемой форме на сервере надо сделать МойОбъект = РеквизитФормыВЗначение и дальше его передавать в метод.
Если там что-то меняется - то надо сделать ЗначениеВРЕквизитФормы
13 live in sky dreams
 
29.03.13
15:10
(10) неа.. не работает ((
14 live in sky dreams
 
29.03.13
15:21
Все, поправил вызов так:

   ДокументОбъект = ДанныеФормыВЗначение(Объект, Тип("ДокументОбъект."+Объект.Ссылка.Метаданные().Имя));
   РаботаСДиалогами.УстановитьЗаголовокФормыДокумента(Строка(Объект.ВидОперации), ДокументОбъект, ЭтаФорма);


Процедуру в общем модуле так:

Процедура УстановитьЗаголовокФормыДокумента(СтрокаВидаОперации = "", ДокументОбъект, ФормаДокумента) Экспорт

   ФормаДокумента.АвтоЗаголовок = Ложь;
   
   Если ПустаяСтрока(СтрокаВидаОперации) Тогда
       Заголовок = ДокументОбъект.Метаданные().Синоним + ": ";
   Иначе
       Заголовок = ДокументОбъект.Метаданные().Синоним + ": " + СтрокаВидаОперации + ". ";
   КонецЕсли;
       
   Если ДокументОбъект.ЭтоНовый() Тогда  
       Заголовок = Заголовок + "Новый";
   Иначе
       Если ДокументОбъект.Проведен Тогда
           Заголовок = Заголовок + "Проведен";
       ИначеЕсли ДокументОбъект.Метаданные().Проведение = Метаданные.СвойстваОбъектов.Проведение.Разрешить Тогда
           Заголовок = Заголовок + "Не проведен";
       Иначе
           Заголовок = Заголовок + "Записан";
       КонецЕсли;
   КонецЕсли;
   
   ФормаДокумента.Заголовок = Заголовок;

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


Теперь ВСЕ отрабатывает верно.
Спасибо ребяты)))
15 Fragster
 
гуру
29.03.13
15:29
(14) убери тип, он в этом случае необязателен
16 live in sky dreams
 
29.03.13
16:50
(15) уверены?
СП говорит, что в любом случае обязателен
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший