Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

И снова про ВПФ

И снова про ВПФ
Я
   DenYuliya
 
17.12.18 - 11:50
Конфа  Бухгалтерия предприятия КОРП, редакция 3.0 (3.0.64.48)
Платформа 1С:Предприятие 8.3 (8.3.10.2667)

Пытаюсь прицепить новую ВПФ, через "Файл - Открыть" работает замечательно, через "Дополнительные внешние обработки- добавить", и печать прямо из документов, валится ошибка. Стопятьсот тем уже перечитала, все равно ошибка. Ткните меня пальчиком, пожалуйста, где я не права?


Функция СведенияОВнешнейОбработке() Экспорт
        
    ПараметрыРегистрации = Новый Структура;
    ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма");
    ПараметрыРегистрации.Вставить("Назначение", ПолучитьНазначениеОбработки());
    ПараметрыРегистрации.Вставить("Наименование", "Довереннсть М-2");
    ПараметрыРегистрации.Вставить("Версия", "1.0");
    ПараметрыРегистрации.Вставить("Информация", "Довереннсть (внешняя)");
    ПараметрыРегистрации.Вставить("БезопасныйРежим", Ложь);
    
    Команды = ПолучитьТаблицуКоманд();
    ДобавитьКоманду(Команды, "Довереннсть(внешняя)",
    "Доверенность",
    "ВызовСерверногоМетода",
    Ложь,
    "ПечатьMXL");
    ПараметрыРегистрации.Вставить("Команды", Команды);
    Возврат ПараметрыРегистрации;
КонецФункции

Функция ПолучитьНазначениеОбработки()
    
    Массив= Новый Массив;
    Массив.Добавить("Документ.Доверенность");
    Возврат Массив;
    
КонецФункции

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

Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "")
    НоваяКоманда = ТаблицаКоманд.Добавить();
    НоваяКоманда.Представление = Представление;
    НоваяКоманда.Использование = Использование;
    НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
    НоваяКоманда.Модификатор = Модификатор;
    НоваяКоманда.Идентификатор = Идентификатор;
КонецПроцедуры

Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
    
    ПараметрыВывода.ДоступнаПечатьПоКомплектно = Истина;
        
    Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "Доверенность") Тогда
        УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "Доверенность", НСтр("ru='Доверенность внешняя'"), СформироватьПечатнуюФормуДоверенность(МассивОбъектов, ОбъектыПечати));
    КонецЕсли;
    
КонецПроцедуры

//-----------------------------------------------------------------------------
Функция СформироватьПечатнуюФормуДоверенность(МассивОбъектов, ОбъектыПечати) Экспорт    
    
    УстановитьПривилегированныйРежим(Истина);
    
    Макет =  ЭтотОбъект.ПолучитьМакет("ПФ_MXL_M2");
    
    ТабДокумент = Новый ТабличныйДокумент;
    ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ПФ_MXL_М2";
    
    //Макет = ЭтотОбъект.ПолучитьМакет("ПФ_MXL_M2");
    ТабДокумент.ПолеСверху                = 0;
    ТабДокумент.ПолеСлева                = 5;
    ТабДокумент.ПолеСнизу                = 0;
    ТабДокумент.ПолеСправа                = 5;
    ТабДокумент.РазмерКолонтитулаСверху    = 0;
    ТабДокумент.РазмерКолонтитулаСнизу    = 0;
    
    ТабДокумент.АвтоМасштаб                = Истина;
    ТабДокумент.ОриентацияСтраницы        = ОриентацияСтраницы.Портрет;
    
    ТекстЗапроса =
    "ВЫБРАТЬ
    |    Доверенность.Ссылка,
    |    Доверенность.Номер КАК НомерДокумента,
    |    Доверенность.Дата КАК ДатаДокумента,
    |    Доверенность.Организация КАК Руководители,
    |    Доверенность.Организация,
    |    Доверенность.ФизЛицо,
    |    Доверенность.ФизЛицо.Наименование КАК ФамилияИмяОтчествоДоверенного,
    |    Доверенность.БанковскийСчетОрганизации КАК БанковскийСчет,
    |    Доверенность.Контрагент КАК Поставщик,
    |    Доверенность.НаПолучениеОт КАК ПоставщикПредставление,
    |    Доверенность.ДатаДействия КАК СрокДействия,
    |    Доверенность.ПоДокументу КАК РеквизитыДокументаНаПолучение,
    |    Доверенность.Товары.(
    |        НомерСтроки КАК Номер,
    |        НаименованиеТовара КАК Ценности,
    |        НаименованиеТовара КАК ЦенностиПредставление,
    |        ЕдиницаПоКлассификатору КАК ЕдиницаИзмерения,
    |        ЕдиницаПоКлассификатору.Представление КАК ЕдиницаИзмеренияПредставление,
    |        Количество
    |    )
    |ИЗ
    |    Документ.Доверенность КАК Доверенность
    |ГДЕ
    |    Доверенность.Ссылка В(&МассивОбъектов)
    |
    |УПОРЯДОЧИТЬ ПО
    |    Доверенность.Дата,
    |    Доверенность.Ссылка,
    |    Номер";
    
    Запрос = Новый Запрос();
    Запрос.УстановитьПараметр("МассивОбъектов", СсылкаНаОбъект);
    Запрос.Текст = ТекстЗапроса;
    
    Шапка = Запрос.Выполнить().Выбрать();

    ПервыйДокумент = Истина;
    Пока Шапка.Следующий() Цикл
        
        Если Не ПервыйДокумент Тогда
            ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
        КонецЕсли;
        
        ПервыйДокумент = Ложь;
        // Запомним номер строки, с которой начали выводить текущий документ.
        НомерСтрокиНачало = ТабДокумент.ВысотаТаблицы + 1;
        
        ДанныеОФизЛице = ОбщегоНазначенияБПВызовСервера.ДанныеФизЛица(Шапка.Организация, Шапка.ФизЛицо,  Шапка.ДатаДокумента);
        
        ФамилияИмяОтчествоДоверенного = СокрЛП(ДанныеОФизЛице.Фамилия) + " " + СокрЛП(ДанныеОФизЛице.Имя) + " " + СокрЛП(ДанныеОФизЛице.Отчество);
        Должность                     = СокрЛП(ДанныеОФизЛице.Должность);
        
        //Если НазваниеМакета = "М2" тогда
            ОбластьМакета = Макет.ПолучитьОбласть("Отрез");
            ОбластьМакета.Параметры.Заполнить(Шапка);
            ОбластьМакета.Параметры.НомерДокумента = ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(Шапка.НомерДокумента, Истина, Ложь);
            ОбластьМакета.Параметры.ФИОДоверенного = "" + ?(ПустаяСтрока(Должность), "", Должность + ", " + Символы.ПС) + (ФамилияИмяОтчествоДоверенного);
            ТабДокумент.Вывести(ОбластьМакета);
            НазваниеФормы = "Типовая межотраслевая форма № М-2";
        //Иначе
        //    НазваниеФормы = "Типовая межотраслевая форма № М-2а";
        //КонецЕсли;

        Руководители = ОтветственныеЛицаБП.ОтветственныеЛица(Шапка.Организация, Шапка.ДатаДокумента);
        Руководитель = Руководители.РуководительПредставление;
        Бухгалтер    = Руководители.ГлавныйБухгалтерПредставление;

        СведенияОбОрганизации = БухгалтерскийУчетПереопределяемый.СведенияОЮрФизЛице(Шапка.Организация, Шапка.ДатаДокумента, Шапка.БанковскийСчет);

        ОбластьМакета = Макет.ПолучитьОбласть("Шапка");
        
        //Если НазваниеМакета = "М2" тогда
        ОбластьМакета.Параметры.ОКУД = "0315001";
        //Иначе
        //    ОбластьМакета.Параметры.ОКУД = "0315002";
        //КонецЕсли;
    
        ОбластьМакета.Параметры.Заполнить(Шапка);
        ОбластьМакета.Параметры.НомерДокумента               = ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(Шапка.НомерДокумента, Истина, Ложь);
        ОбластьМакета.Параметры.НазваниеФормы                = НазваниеФормы;
        ОбластьМакета.Параметры.ОрганизацияПредставление     = ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(
            СведенияОбОрганизации, "НаименованиеДляПечатныхФорм,ИНН,КПП,ЮридическийАдрес,Телефоны,");
        ОбластьМакета.Параметры.РеквизитыСчета               = ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(
            СведенияОбОрганизации, "НомерСчета,Банк,БИК,КоррСчет,");
        ОбластьМакета.Параметры.РеквизитыПотребителя         = ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(
            СведенияОбОрганизации, "НаименованиеДляПечатныхФорм,ИНН,КПП,ЮридическийАдрес,Телефоны,");
        ОбластьМакета.Параметры.РеквизитыПлательщика         = ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(
            СведенияОбОрганизации, "НаименованиеДляПечатныхФорм,ИНН,КПП,ЮридическийАдрес,Телефоны,");
        ОбластьМакета.Параметры.ОрганизацияКодПоОКПО         = СведенияОбОрганизации.КодПоОКПО;
        ОбластьМакета.Параметры.ПаспортСерия                 = ДанныеОФизЛице.Серия;
        ОбластьМакета.Параметры.ПаспортНомер                 = ДанныеОФизЛице.Номер;
        ОбластьМакета.Параметры.ПаспортВыдан                 = ДанныеОФизЛице.КемВыдан;
        ОбластьМакета.Параметры.ПаспортДатаВыдачи            = ДанныеОФизЛице.ДатаВыдачи;
        ОбластьМакета.Параметры.ФамилияИмяОтчествоДоверенного = ФамилияИмяОтчествоДоверенного;
        ОбластьМакета.Параметры.ДолжностьДоверенного         = Должность;
        ТабДокумент.Вывести(ОбластьМакета);

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

        //Если ЗначениеЗаполнено(Руководитель) Тогда
            ОбластьМакетаПодвал.Параметры.ФИОРуководителя       = "Дашицыренова Б.Д";//Руководитель;
            //ОбластьМакетаПодвал.Параметры.Руководитель          = "11"; //Руководитель;
            ОбластьМакетаПодвал.Параметры.ПоДоверенности        = "по доверенности №8 от 29.12.2017 г.";
        //КонецЕсли;

        Если ЗначениеЗаполнено(Бухгалтер) Тогда
            ОбластьМакетаПодвал.Параметры.ФИОГлавногоБухгалтера = Бухгалтер;
            ОбластьМакетаПодвал.Параметры.ГлавныйБухгалтер      = Бухгалтер;
        КонецЕсли;
        
        Если Макет.Области.Найти("ПодвалСтраницы") <> Неопределено Тогда
            ОбластьПодвалСтраницы = Макет.ПолучитьОбласть("ПодвалСтраницы");
        Иначе
            ОбластьПодвалСтраницы = Неопределено;
        КонецЕсли;

        ОбластьМакетаСтрока = Макет.ПолучитьОбласть("Строка");
        
        ВыборкаСтрокТовары = Шапка.Товары.Выбрать();
        КоличествоСтрок = ВыборкаСтрокТовары.Количество();
        
        Пока ВыборкаСтрокТовары.Следующий() Цикл

            ОбластьМакетаСтрока.Параметры.Заполнить(ВыборкаСтрокТовары);
            ОбластьМакетаСтрока.Параметры.КоличествоПрописью = ?(ВыборкаСтрокТовары.Количество = 0,
                                                           "",
                                                           Строка(ВыборкаСтрокТовары.Количество) + " (" +
                                                           ОбщегоНазначенияБПВызовСервера.КоличествоПрописью(ВыборкаСтрокТовары.Количество) + ")");
            МассивСтрок = Новый Массив;
            МассивСтрок.Добавить(ОбластьМакетаСтрока);
            Если ВыборкаСтрокТовары.Номер = КоличествоСтрок Тогда
                МассивСтрок.Добавить(ОбластьМакетаПодвал);
            ИначеЕсли ОбластьПодвалСтраницы <> Неопределено Тогда
                МассивСтрок.Добавить(ОбластьПодвалСтраницы);
            КонецЕсли;
            
            Если НЕ ОбщегоНазначения.ПроверитьВыводТабличногоДокумента(ТабДокумент, МассивСтрок) Тогда
                
                Если ОбластьПодвалСтраницы <> Неопределено Тогда
                    ТабДокумент.Вывести(ОбластьПодвалСтраницы);
                КонецЕсли;
                
                ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
                ТабДокумент.Вывести(ОбластьМакетаЗаголовокТаблицы);
            КонецЕсли;
            
            ТабДокумент.Вывести(ОбластьМакетаСтрока);

        КонецЦикла;

        ТабДокумент.Вывести(ОбластьМакетаПодвал);
                
    КонецЦикла;

    Возврат ТабДокумент;
    
    
КонецФункции



Текст ошибки: "Печатная форма недоступна"
Обработка тут: https://yadi.sk/d/a41TjBGtldUDcw
 
 
   DenYuliya
 
1 - 17.12.18 - 11:54
Есть еще один вариант:
Ошибка:
{ОбщийМодуль.УправлениеПечатью.Модуль(1215)}: В обработчике печати не был сформирован табличный документ для: Доверенность


Функция СведенияОВнешнейОбработке() Экспорт

ПараметрыРегистрации = Новый Структура;

МассивНазначений = Новый Массив;
МассивНазначений.Добавить("Документ.Доверенность");

ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма");//возможны варианты - ЗаполнениеОбъекта, ДополнительныйОтчет, СозданиеСвязанныхОбъектов,

ПараметрыРегистрации.Вставить("Назначение", МассивНазначений);
ПараметрыРегистрации.Вставить("Наименование", "Доверенность внешняя");//имя под kt обработка зарегистрирована будет в справочнике внешних обработок

ПараметрыРегистрации.Вставить("Версия", "25.01.2016");
ПараметрыРегистрации.Вставить("БезопасныйРежим", ЛОЖЬ);
ПараметрыРегистрации.Вставить("Информация", "Дополнительная печатная форма Приходная накладная внешняя");

//команды

ТаблицаКоманд = Новый ТаблицаЗначений;
ТаблицаКоманд.Колонки.Добавить("Представление");//как будет выглядеть описание печ.формы для пользователя

ТаблицаКоманд.Колонки.Добавить("Идентификатор");//имя нашего макета

ТаблицаКоманд.Колонки.Добавить("Использование");//ВызовСерверногоМетода

ТаблицаКоманд.Колонки.Добавить("ПоказыватьОповещение");//Истина

ТаблицаКоманд.Колонки.Добавить("Модификатор");//ПечатьМХL


НоваяКоманда = ТаблицаКоманд.Добавить();
НоваяКоманда.Представление = "Доверенность внешняя";
НоваяКоманда.Идентификатор = "ПФ_MXL_М2";//Внешняя печатная форма

НоваяКоманда.Использование = "ВызовСерверногоМетода";//здесь можно прописать использование как серверного так и клиентского, отличие в том, что серверный метод будет обращаться к экспортной процедуре из модуля объекта, клиентский - к экспортной процедуре из модуля формы объекта

НоваяКоманда.ПоказыватьОповещение = Ложь;
НоваяКоманда.Модификатор = "ПечатьMXL";


ТаблицаКоманд = ПолучитьТаблицуКоманд();
ДобавитьКоманду(ТаблицаКоманд, "Доверенность внешняя", "ПФ_MXL_М2", "ВызовСерверногоМетода", Истина, "ПечатьMXL");

ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);

Возврат ПараметрыРегистрации;

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

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

Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "")
    НоваяКоманда = ТаблицаКоманд.Добавить();
    НоваяКоманда.Представление = Представление;
    НоваяКоманда.Использование = Использование;
    НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
    НоваяКоманда.Модификатор = Модификатор;
КонецПроцедуры

Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
    
    Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "ПФ_MXL_М2") Тогда
        УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "Доверенность внешняя", НСтр("ru='Доверенность внешняя'"), СформироватьПечатнуюФормуДоверенность(МассивОбъектов, ОбъектыПечати));
    КонецЕсли;
    
КонецПроцедуры

//-----------------------------------------------------------------------------

Функция СформироватьПечатнуюФормуДоверенность(МассивОбъектов, ОбъектыПечати) Экспорт//ТабДокумент, СсылкаНаОбъект, ДопПараметры, КоличествоЭкземпляров = 1, НаПринтер = Ложь, НепосредственнаяПечать = Ложь) // Экспорт

    
    
    УстановитьПривилегированныйРежим(Истина);
    
    ТабДокумент = Новый ТабличныйДокумент;
    ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ПФ_MXL_М2";
    
    Макет = ПолучитьМакет("ПФ_MXL_М2");
    
    ТабДокумент.ПолеСверху                = 0;
    ТабДокумент.ПолеСлева                = 5;
    ТабДокумент.ПолеСнизу                = 0;
    ТабДокумент.ПолеСправа                = 5;
    ТабДокумент.РазмерКолонтитулаСверху    = 0;
    ТабДокумент.РазмерКолонтитулаСнизу    = 0;
    
    ТабДокумент.АвтоМасштаб                = Истина;
    ТабДокумент.ОриентацияСтраницы        = ОриентацияСтраницы.Портрет;
    
    ТекстЗапроса = 
    "ВЫБРАТЬ
    |    Доверенность.Ссылка,
    |    Доверенность.Номер КАК НомерДокумента,
    |    Доверенность.Дата КАК ДатаДокумента,
    |    Доверенность.Организация КАК Руководители,
    |    Доверенность.Организация,
    |    Доверенность.ФизЛицо,
    |    Доверенность.ФизЛицо.Наименование КАК ФамилияИмяОтчествоДоверенного,
    |    Доверенность.БанковскийСчетОрганизации КАК БанковскийСчет,
    |    Доверенность.Контрагент КАК Поставщик,
    |    Доверенность.НаПолучениеОт КАК ПоставщикПредставление,
    |    Доверенность.ДатаДействия КАК СрокДействия,
    |    Доверенность.ПоДокументу КАК РеквизитыДокументаНаПолучение,
    |    Доверенность.Товары.(
    |        НомерСтроки КАК Номер,
    |        НаименованиеТовара КАК Ценности,
    |        НаименованиеТовара КАК ЦенностиПредставление,
    |        ЕдиницаПоКлассификатору КАК ЕдиницаИзмерения,
    |        ЕдиницаПоКлассификатору.Представление КАК ЕдиницаИзмеренияПредставление,
    |        Количество
    |    )
    |ИЗ
    |    Документ.Доверенность КАК Доверенность
    |ГДЕ
    |    Доверенность.Ссылка В(&МассивОбъектов)
    |
    |УПОРЯДОЧИТЬ ПО
    |    Доверенность.Дата,
    |    Доверенность.Ссылка,
    |    Номер";
    
    Запрос = Новый Запрос();
    Запрос.УстановитьПараметр("МассивОбъектов", СсылкаНаОбъект);
    Запрос.Текст = ТекстЗапроса;
    
    Шапка = Запрос.Выполнить().Выбрать();

    //ТабличныйДокумент = Новый ТабличныйДокумент;

    //ТабличныйДокумент.АвтоМасштаб            = Истина;

    //ТабличныйДокумент.ОриентацияСтраницы    = ОриентацияСтраницы.Портрет;

    //ТабличныйДокумент.КлючПараметровПечати    = "ПАРАМЕТРЫ_ПЕЧАТИ_Доверенность_М2";


    //Макет = УправлениеПечатью.МакетПечатнойФормы("ОбщийМакет.ПФ_MXL_М2");


    ПервыйДокумент = Истина;
    Пока Шапка.Следующий() Цикл
        
        Если Не ПервыйДокумент Тогда
            ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
        КонецЕсли;
        
        ПервыйДокумент = Ложь;
        // Запомним номер строки, с которой начали выводить текущий документ.

        НомерСтрокиНачало = ТабДокумент.ВысотаТаблицы + 1;
        
        ДанныеОФизЛице = ОбщегоНазначенияБПВызовСервера.ДанныеФизЛица(Шапка.Организация, Шапка.ФизЛицо,  Шапка.ДатаДокумента);
        
        ФамилияИмяОтчествоДоверенного = СокрЛП(ДанныеОФизЛице.Фамилия) + " " + СокрЛП(ДанныеОФизЛице.Имя) + " " + СокрЛП(ДанныеОФизЛице.Отчество);
        Должность                     = СокрЛП(ДанныеОФизЛице.Должность);
        
        //Если НазваниеМакета = "М2" тогда

            ОбластьМакета = Макет.ПолучитьОбласть("Отрез");
            ОбластьМакета.Параметры.Заполнить(Шапка);
            ОбластьМакета.Параметры.НомерДокумента = ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(Шапка.НомерДокумента, Истина, Ложь);
            ОбластьМакета.Параметры.ФИОДоверенного = "" + ?(ПустаяСтрока(Должность), "", Должность + ", " + Символы.ПС) + (ФамилияИмяОтчествоДоверенного);
            ТабДокумент.Вывести(ОбластьМакета);
            НазваниеФормы = "Типовая межотраслевая форма № М-2";
        //Иначе

        //    НазваниеФормы = "Типовая межотраслевая форма № М-2а";

        //КонецЕсли;


        Руководители = ОтветственныеЛицаБП.ОтветственныеЛица(Шапка.Организация, Шапка.ДатаДокумента);
        Руководитель = Руководители.РуководительПредставление;
        Бухгалтер    = Руководители.ГлавныйБухгалтерПредставление;

        СведенияОбОрганизации = БухгалтерскийУчетПереопределяемый.СведенияОЮрФизЛице(Шапка.Организация, Шапка.ДатаДокумента, Шапка.БанковскийСчет);

        ОбластьМакета = Макет.ПолучитьОбласть("Шапка");
        
        //Если НазваниеМакета = "М2" тогда

        ОбластьМакета.Параметры.ОКУД = "0315001";
        //Иначе

        //    ОбластьМакета.Параметры.ОКУД = "0315002";

        //КонецЕсли;

    
        ОбластьМакета.Параметры.Заполнить(Шапка);
        ОбластьМакета.Параметры.НомерДокумента               = ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(Шапка.НомерДокумента, Истина, Ложь);
        ОбластьМакета.Параметры.НазваниеФормы                = НазваниеФормы;
        ОбластьМакета.Параметры.ОрганизацияПредставление     = ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(
            СведенияОбОрганизации, "НаименованиеДляПечатныхФорм,ИНН,КПП,ЮридическийАдрес,Телефоны,");
        ОбластьМакета.Параметры.РеквизитыСчета               = ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(
            СведенияОбОрганизации, "НомерСчета,Банк,БИК,КоррСчет,");
        ОбластьМакета.Параметры.РеквизитыПотребителя         = ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(
            СведенияОбОрганизации, "НаименованиеДляПечатныхФорм,ИНН,КПП,ЮридическийАдрес,Телефоны,");
        ОбластьМакета.Параметры.РеквизитыПлательщика         = ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(
            СведенияОбОрганизации, "НаименованиеДляПечатныхФорм,ИНН,КПП,ЮридическийАдрес,Телефоны,");
        ОбластьМакета.Параметры.ОрганизацияКодПоОКПО         = СведенияОбОрганизации.КодПоОКПО;
        ОбластьМакета.Параметры.ПаспортСерия                 = ДанныеОФизЛице.Серия;
        ОбластьМакета.Параметры.ПаспортНомер                 = ДанныеОФизЛице.Номер;
        ОбластьМакета.Параметры.ПаспортВыдан                 = ДанныеОФизЛице.КемВыдан;
        ОбластьМакета.Параметры.ПаспортДатаВыдачи            = ДанныеОФизЛице.ДатаВыдачи;
        ОбластьМакета.Параметры.ФамилияИмяОтчествоДоверенного = ФамилияИмяОтчествоДоверенного;
        ОбластьМакета.Параметры.ДолжностьДоверенного         = Должность;
        ТабДокумент.Вывести(ОбластьМакета);

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

        //Если ЗначениеЗаполнено(Руководитель) Тогда

            ОбластьМакетаПодвал.Параметры.ФИОРуководителя       = "Дашицыренова Б.Д"//Руководитель;

            //ОбластьМакетаПодвал.Параметры.Руководитель          = "11"; //Руководитель;

            ОбластьМакетаПодвал.Параметры.ПоДоверенности        = "по доверенности №8 от 29.12.2017 г.";
        //КонецЕсли;


        Если ЗначениеЗаполнено(Бухгалтер) Тогда
            ОбластьМакетаПодвал.Параметры.ФИОГлавногоБухгалтера = Бухгалтер;
            ОбластьМакетаПодвал.Параметры.ГлавныйБухгалтер      = Бухгалтер;
        КонецЕсли;
        
        Если Макет.Области.Найти("ПодвалСтраницы") <> Неопределено Тогда
            ОбластьПодвалСтраницы = Макет.ПолучитьОбласть("ПодвалСтраницы");
        Иначе
            ОбластьПодвалСтраницы = Неопределено;
        КонецЕсли;

        ОбластьМакетаСтрока = Макет.ПолучитьОбласть("Строка");
        
        ВыборкаСтрокТовары = Шапка.Товары.Выбрать();
        КоличествоСтрок = ВыборкаСтрокТовары.Количество();
        
        Пока ВыборкаСтрокТовары.Следующий() Цикл

            ОбластьМакетаСтрока.Параметры.Заполнить(ВыборкаСтрокТовары);
            ОбластьМакетаСтрока.Параметры.КоличествоПрописью = ?(ВыборкаСтрокТовары.Количество = 0,
                                                           "",
                                                           Строка(ВыборкаСтрокТовары.Количество) + " (" + 
                                                           ОбщегоНазначенияБПВызовСервера.КоличествоПрописью(ВыборкаСтрокТовары.Количество) + ")");
            МассивСтрок = Новый Массив;
            МассивСтрок.Добавить(ОбластьМакетаСтрока);
            Если ВыборкаСтрокТовары.Номер = КоличествоСтрок Тогда
                МассивСтрок.Добавить(ОбластьМакетаПодвал);
            ИначеЕсли ОбластьПодвалСтраницы <> Неопределено Тогда
                МассивСтрок.Добавить(ОбластьПодвалСтраницы);
            КонецЕсли;
            
            Если НЕ ОбщегоНазначения.ПроверитьВыводТабличногоДокумента(ТабДокумент, МассивСтрок) Тогда
                
                Если ОбластьПодвалСтраницы <> Неопределено Тогда
                    ТабДокумент.Вывести(ОбластьПодвалСтраницы);
                КонецЕсли;
                
                ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
                ТабДокумент.Вывести(ОбластьМакетаЗаголовокТаблицы);
            КонецЕсли;
            
            ТабДокумент.Вывести(ОбластьМакетаСтрока);

        КонецЦикла;

        ТабДокумент.Вывести(ОбластьМакетаПодвал);
                
    КонецЦикла;

    Возврат ТабДокумент;
    
    
КонецФункции

Обработка тут:https://yadi.sk/d/q1pjvxWj0IyFGQ
   DenYuliya
 
2 - 17.12.18 - 11:55
К (1) - и тоже через "файл-открыть" все печатается отлично.
   dka80
 
3 - 17.12.18 - 12:12
Запрос.УстановитьПараметр("МассивОбъектов", СсылкаНаОбъект)

Ссылка на объект чему равна?
   dka80
 
4 - 17.12.18 - 12:13
Напиши 
СсылкаНаОбъект = МассивОбъектов[0];
Запрос.УстановитьПараметр("МассивОбъектов", СсылкаНаОбъект)
   DenYuliya
 
5 - 17.12.18 - 12:23
(3) если смотреть через "файл-открыть", то ссылке на выбранный документ.
(4) если через "файл-открыть", то все работает.
Если через подключение к ВПФ, то ошибка:
{ВнешняяОбработка.Доверенность.МодульОбъекта(117)}: Получение элемента по индексу для значения не определено
    Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов[0]);
   DenYuliya
 
6 - 17.12.18 - 12:25
К (4) ну или такая, то же самое:

{ВнешняяОбработка.Доверенность.МодульОбъекта(116)}: Получение элемента по индексу для значения не определено
    СсылкаНаОбъект = МассивОбъектов[0];

Но все-таки уже новый вариант ошибки, а то старый уже достал))).
   dka80
 
7 - 17.12.18 - 12:26
Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
   DenYuliya
 
8 - 17.12.18 - 12:40
(7) {ОбщийМодуль.УправлениеПечатью.Модуль(1215)}: В обработчике печати не был сформирован табличный документ для: ПФ_MXL_M2
            ВызватьИсключение(ТекстСообщенияОбОшибке);


С этой ошибки все и началось)))). Потом я переделывала-переделывала-переделывала, потом уже запуталась, как изначально вернуть эту самую первую ошибку...

"ПФ_MXL_M2" - это название макета в ВПФ.
   dka80
 
9 - 17.12.18 - 12:49
Запустил твою обработку. Немного исправил. Все формируется.
https://yadi.sk/d/lWT18mLXdOldlA
   dka80
 
10 - 17.12.18 - 12:50
Бухгалтерия предприятия, редакция 3.0 (3.0.66.70)
   DenYuliya
 
11 - 17.12.18 - 13:10
(9) Спасибо огромное!
Выходит, основная проблема была в     ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ПФ_MXL_М2";   

?
Ну и "    "ВызовСерверногоМетода", Ложь,"

Из-за такой ерунды... Самое забавное, что я эти "места", особенно "ИмяПараметровПечати" склоняла во всех видах, но не работало. Еще раз огромное спасибо!
   dka80
 
12 - 17.12.18 - 13:11
(11) ээээ.... я вообще-то только исправил
Запрос.УстановитьПараметр("МассивОбъектов", СсылкаНаОбъект)
на
Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов)
   DenYuliya
 
13 - 17.12.18 - 13:24
(12)
*где тут ржущий смайлик?*
Я к тому моменту это у себя тоже исправила, потом запустила сравнение с вашим файлом, и различие вылезло в "ПараметреПечати")))

Все равно больше спасибо! Смеюсь сижу, надо больше редакций исправлений делать, а то я все под одним именем сохраняю, а потом путаюсь))))
   DenYuliya
 
14 - 17.12.18 - 13:32
В общем я дура - я поняла. Всея - 1С предполагает печать комплектом. поэтому в запросе идет "Документ.Ссылка В Списке", а не "Документ.Ссылка = ".
А я дернула код из модуля Доверенности, даже не посмотрев, и не подумала - потому что у нас групповой печати нет особо. Урок сделала, невнимательность - зло.
   МимохожийОднако
 
15 - 17.12.18 - 13:47
(14) ОФФ: Мисти случаем не твоя подруга? )) Очень похоже

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.