Имя: Пароль:
1C
1С v8
Внешняя Печатная форма Эксель
0 Lunovar
 
08.09.17
18:21
Добрый день, Зуп 3.1.2 Платформа 8.3.10.2561.
Переделываю обработку печатной формы с 2.5 на 3.1 столкнулся с непонятной фигней. как внешняя обработка все работает, но если подключать через "дополнительные отчеты и обработки" выдает ошибку:
{ВнешняяОбработка.ЭкчельТЕСТ.Форма.Форма.Форма(13)}: Ошибка при вызове метода контекста (ПолучитьМакетНаСервере1)
    ДвоичныеДанные = ПолучитьМакетНаСервере1();
по причине:
Неизвестный идентификатор формы

Собственно сам код, ошибка на строке "ДвоичныеДанные = ПолучитьМакетНаСервере1();" :

&НаКлиенте
Процедура Печать(ИдентификаторКоманды,ОбъектыНазначения) Экспорт
        
    Попытка
        MSExcel = Новый COMОбъект("Excel.Application");
    Исключение
        Сообщить(ОписаниеОшибки());
        Возврат;
    КонецПопытки;
    
    ПолноеИмяФайла = ПолучитьИмяВременногоФайла("xls");
    
    ДвоичныеДанные = ПолучитьМакетНаСервере1();
    ДвоичныеДанные.Записать(ПолноеИмяФайла);
        
    ДанныеДляЗаполненияТЧ = ЗапросКДаннымДокумента(Объект.СсылкаНаОбъект);
    
    Если ДанныеДляЗаполненияТЧ.Количество() = 0 Тогда
        //MSExcel.Close();
        Возврат;
    КонецЕсли;
    
    Книга = MSExcel.WorkBooks.Open(ПолноеИмяФайла);
    
    ЛистДанных = Книга.sheets(1);                             //лист
    
    ДанныеШапки = ПолучитьДанныеДляЗаполненияШапки();            
    
    УстановкаПараметровВДокументе(MSExcel, ДанныеШапки);   //заменяем параметры <...> в макете
    
    ЗаписьДанныхТабличнойЧастиВЭксель(ДанныеДляЗаполненияТЧ, ЛистДанных);  //обход результата таб части документа и записи в эксель    

    //не показывать сообщения об ошибках — иначе застопорит сохранение
    MSExcel.DisplayAlerts = Ложь;
    
    //Сохраняем
    // 18 — xls 97-2003
    // 51 — xlsx 2007-2013
    MSExcel.ActiveWorkbook.SaveAs(ПолноеИмяФайла, 51);
    
    MSExcel.Windows(1).Visible = Истина;
    
    MSExcel.Application.Visible = Истина;
    
КонецПроцедуры

&НаСервере
Функция ПолучитьМакетНаСервере1() Экспорт
        
    //ОбъектМакет     = РеквизитФормыВЗначение("Объект").ЭтотОбъект;
    //            об     = РеквизитФормыВЗначение("Объект");
    
    Возврат ОбъектМакет.ПолучитьМакет("МакетВыгрузкиИндивидуальногоГрафика");
    // Возврат 1;
    //Возврат Об.ПолучитьЭтотГРебанныйМакет();//ПолучитьМакет("МакетВыгрузкиИндивидуальногоГрафика");
    
КонецФункции
1 Lunovar
 
08.09.17
18:24
(0) ТОчнее:
&НаСервере
Функция ПолучитьМакетНаСервере1() Экспорт
        

    Возврат РеквизитФормыВЗначение("Объект").ОбъектМакет.ПолучитьМакет("МакетВыгрузкиИндивидуальногоГрафика");
    
    
КонецФункции