Имя: Пароль:
1C
1С v8
Подскажите, в чем ошибка (упр. форма)
,
0 mirrr
 
30.09.11
11:56
Сделал упр. форму, при нажатии "сформировать" вызываю серверную процедуру, которая формирует отчет. При 1-м нажатии "сформировать" работает. При повторном - ошибка:
Ошибка при вызове метода контекста (СформироватьНаСервере)СформироватьНаСервере();    
по причине:Неизвестный идентификатор формы

Код:

&НаКлиенте
Процедура Сформировать()
   СформироватьНаСервере();
КонецПроцедуры  

&НаСервере
Процедура СформироватьНаСервере()
   ОтчетМ = ВнешниеОтчеты.Создать("с:\Отчет.erf");
   Макет=ОтчетМ.ПолучитьМакет("Макет");

   ОблШапка=Макет.ПолучитьОбласть("Шапка");
   ТабДок.Очистить();
   ТабДок.Вывести(ОблШапка);
   
КонецПроцедуры // СформироватьНаСервере()

В чем причина?
1 mirrr
 
30.09.11
12:03
ошибка проявляется, если создаю внешний отчет. Если отчет в составе конф-ии, работает.
2 Kuein
 
30.09.11
12:04
А отчет точно лежит на диске "C" СЕРВЕРА?
3 mirrr
 
30.09.11
12:08
да, все под локальной машиной. 1-й раз нажимаю сформировать - формирует. 2-ой - ошибка. Как будто не видит процедур и функций, прописанных в модуле упр. формы.
4 mirrr
 
30.09.11
12:13
+(3) т.е. когда нажимаю 2-й раз на "сформировать", в модуле упр. формы идет обращение к процедуре на сервере, которую программа не видит, как будто ее нет совсем.
5 mirrr
 
30.09.11
12:28
ошибка из-за того, что идет создание внеш. отчета.
Если вместо строк
ОтчетМ = ВнешниеОтчеты.Создать("с:\Отчет.erf");
Макет=ОтчетМ.ПолучитьМакет("Макет");
написать строку
Макет=Отчеты.ОтчетМ.ПолучитьМакет("Макет");
то будет работать.
Подскажите, как правильно это реализовать в случае с внешним отчетом
6 jump if zero
 
30.09.11
12:31
Макет= ВнешниеОтчеты.Создать("N:\1С\ВнешнийОтчет1.erf").ПолучитьМакет("Макет");

+ неполучается воспроизвести твою ошибку
7 mirrr
 
30.09.11
12:35
(6) я то же самое написал.
попробуй 2-й раз нажать на сформировать.
У меня не видит после 2-го нажатия процедуру СформироватьНаСервере()

&НаКлиенте
Процедура Сформировать()
   СформироватьНаСервере();
КонецПроцедуры
8 mirrr
 
30.09.11
12:36
+(7) это именно после создания внешнего отчета
9 jump if zero
 
30.09.11
12:41
я 20 раз нажимал
10 jump if zero
 
30.09.11
12:42
20 раз выводится шапка и да же сам внешний отчет отрыл просто инетрактивно
11 mirrr
 
30.09.11
12:45
(10) код скопировал из (0)?
Отчет открывать на тонком через файл-открыть. Форма управляемая.
12 mirrr
 
30.09.11
12:55
пробовал на разных базах, в т.ч. на созданной с нуля, ошибка та же при 2-м нажатии на сформировать.
отчет могу скинуть
13 jump if zero
 
30.09.11
13:00
не совсем понял ты этот код вызываешь из формы того же отчета
который созаешь в коде?

ОтчетОбъект= РеквизитФормыВЗначение("Отчет");
Макет =  ОтчетОбъект.ПолучитьМакет("Макет");
ОблШапка=Макет.ПолучитьОбласть("Шапка");

ТабДок.Вывести(ОблШапка);
14 jump if zero
 
30.09.11
13:09
попробовал твой код в той же форме того же отчета который вызываем в коде , на 2-ром клике
получаем
"Ошибка создания источника доступных настроек компоновки данных" и падение клиента.
15 НЕА123
 
30.09.11
13:24
Процедура СформироватьНаСервере()

Если ОблШапка = НЕОПРЕДЕЛЕНО Тогда
   ОтчетМ = ВнешниеОтчеты.Создать("с:\Отчет.erf");
   Макет=ОтчетМ.ПолучитьМакет("Макет");
   ОблШапка=Макет.ПолучитьОбласть("Шапка");
КонецЕсли;
   ТабДок.Очистить();
   ТабДок.Вывести(ОблШапка);
   
КонецПроцедуры // СформироватьНаСервере()
16 mirrr
 
30.09.11
13:58
(13) вначале открываю отчет (файл-открыть), потом программно создаю его же для того, чтобы получить его макет. Далее получается из него же формирую макет.
Как-то может нужно по-другому написать?
17 НЕА123
 
30.09.11
14:00
&НаКлиенте
Процедура Сформировать()
   СформироватьНаСервере();
КонецПроцедуры  

&НаСервере
Процедура СформироватьНаСервере()
   ПолучитьМакет("Макет");

   ОблШапка=Макет.ПолучитьОбласть("Шапка");
   ТабДок.Очистить();
   ТабДок.Вывести(ОблШапка);
   
КонецПроцедуры // СформироватьНаСервере()
18 mirrr
 
30.09.11
14:20
(17) не компилится
правильно в (13)
19 mirrr
 
30.09.11
14:25
(13) можно ли то же реализовать, только НаСервереБезКонтекста, передав в процедуру объект отчет, или нет смысла извращаться?