Имя: Пароль:
1C
 
8.2 Как получить схему компоновки данных в форме ?
0 i-rek
 
23.10.08
12:37
На стороне сервера получается только так:

Схема=Отчеты.МойОтчет.ПолучитьМакет("НазваниеСхемы");

не хочется явно вписывать МойОтчет

Отчет.Метаданные() не работает, хотя по доке - должен вроде работать
1 НичегоНеЗнаюВ1С
 
23.10.08
12:39
А так нельзя?
ПолучитьМакет("НазваниеСхемы");
2 TitanLuchs
 
23.10.08
12:58
(0) А чем "МойОтчет" не нравится то?
А Отчет.Метаданные() работать в форме ессно не будет. "Отчет" в контексте управляемой формы - это не объект типа "Отчет", а структура, а точнее тип "ДанныеФормыСтруктура".

(1) Не, нельзя.
3 i-rek
 
23.10.08
14:51
(2) не нравится - в общий модуль не засунуть...
ну и вообще странно, что внутри отчёта я не могу узнать своё имя
4 TitanLuchs
 
23.10.08
15:00
(3) Вот имя формы:
Имя = ЭтаФорма.ИмяФормы;

Для отчета "Тестовый отчет" будет таким:
"Отчет.ТестовыйОтчет.Форма.ФормаОтчета"
Собсна это его, отчета, имя и есть. Передавай его серверной процедуре и дальше делай что хошь - получай все нужные тебе макеты, реквизиты и т.д.
5 TitanLuchs
 
23.10.08
15:01
+(4) А вообще нужно время, чтобы привыкнуть к тому, что в управляемой форме самого объекта по сути нет )))
6 i-rek
 
23.10.08
15:14
(5) ну это да.
Просто у объекта ОтчетОбъект по синтаксис-помощнику - есть метод Метаданные()
зато если в отладчике смотришь - есть какие-то свойства которых нет в синтаксис-помощнике ))

наверно нужно послать СМС на некий номер чтоб получить описание объектов
7 TitanLuchs
 
23.10.08
15:17
(6) Не путай объект ОтчетОбъект и свойство "Объект" управляемой формы - это совсем разные вещи. Нету в управляемой форме объекта. ОтчетОбъект ты можешь получить в пользование в обычной форме, на сервере, но не в управляемой.
8 i-rek
 
23.10.08
15:28
(7) хм. Даже если в процедуре формы указать &НаСервере - всё равно нет ?
и даже процедуру разместить в модуле отчёта - нет ?
9 TitanLuchs
 
23.10.08
15:29
в (7) фразу "свойство "Объект" управляемой формы" надо заменить на "свойство "Отчет" управляемой формы"
10 TitanLuchs
 
23.10.08
15:38
(8) Почему же. Напиши процедуру, исполняемую на сервере:

&НаСервереБезКонтекста
Процедура Тест()
   Об = Отчеты.ТестовыйОтчет.Создать();
   Схема = Отчеты.ТестовыйОтчет.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
КонецПроцедуры

Вот тебе ОтчетОбъект в первой строке, вот макет во второй. Но за ними ты уже лезешь на сервер, а не берешь с формы напрямую. То есть ты можешь работать с объектом в форме, но взять его прямо из нее - нет.
11 i-rek
 
23.10.08
15:39
Спасибо. Я понял. Мозги не так легко перестроить ))
12 TitanLuchs
 
23.10.08
15:47
(11) Представляй себе всегда, что тонкий клиент или веб-клиент - это просто окно браузера. У формы в браузере есть только те свойства, которые ты положишь на нее в виде реквизитов. А об объектах твоей БД или метаденных твоей конфы браузер не знает и знать никогда не будет, поэтому за такими данными всегда надо ходить на сервак.
Закон Брукера: Даже маленькая практика стоит большой теории.