[РЕШЕНО] Печать в РТиУ через комплект документов на принтер формы из внешней печатной формы

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем skv_79, 29 дек 2016.

  1. TopicStarter Overlay
    skv_79
    Offline

    skv_79 Опытный в 1С

    Регистрация:
    10 июл 2013
    Сообщения:
    379
    Симпатии:
    6
    Баллы:
    29
    Добрый день!
    Подключил внешнюю печатную форму и теперь при печати в РТиУ через стандартную обработку печати комплекта документов возникает ошибка "Метод объекта не обнаружен (Печать)". Когда делал ВПФ, то расположил функцию Печать() в модуле формы.
    Код:
    Функция Печать(ИдентификаторКоманды,ОбъектыНазначения) Экспорт
    Все корректно отрабатывает, кроме этого.
    Доп_обработка.jpg
  2. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    15.150
    Симпатии:
    560
    Баллы:
    204
    Нельзя расположить Печать() в модуле формы :), размещайте в модуле объекта.
    skv_79 нравится это.
  3. TopicStarter Overlay
    skv_79
    Offline

    skv_79 Опытный в 1С

    Регистрация:
    10 июл 2013
    Сообщения:
    379
    Симпатии:
    6
    Баллы:
    29
    Добрый день!

    Переработал обработку и расположил Печать() в модуле объекта, но все-равно возникает ошибка:

    Вот что в модуле объекта:
    Код:
    Функция СведенияОВнешнейОбработке() Экспорт
        ПараметрыРегистрации = Новый Структура;
        МассивНазначений = Новый Массив;
        МассивНазначений.Добавить("Документ.РеализацияТоваровУслуг"); //Указываем документ к которому делаем внешнюю печ. форму
    
        ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма"); //может быть - ЗаполнениеОбъекта,
                                                               //ДополнительныйОтчет, СозданиеСвязанныхОбъектов...
       
       
        ПараметрыРегистрации.Вставить("Назначение", МассивНазначений);
        ПараметрыРегистрации.Вставить("Наименование", "Бланк гарантии"); //имя под которым обработка
                                                                // будет зарегестрирована в справочнике внешних обработок
        ПараметрыРегистрации.Вставить("БезопасныйРежим", ЛОЖЬ);
        ПараметрыРегистрации.Вставить("Версия", "1.0");   
        ПараметрыРегистрации.Вставить("Информация", "Дополнительная печатная форма к документу РТУ");
       
        ТаблицаКоманд = ПолучитьТаблицуКоманд();
       
    
        ДобавитьКоманду(ТаблицаКоманд, "Бланк гарантии", "БланкГарантии", "ВызовКлиентскогоМетода", Истина, "ПечатьMXL");
        ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);
       
        Возврат ПараметрыРегистрации;
    КонецФункции
    
    Функция ПолучитьТаблицуКоманд()
      Команды = Новый ТаблицаЗначений;
      Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));//как будет выглядеть описание
                                                                               //печ.формы для пользователя
    
      Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка")); //имя макета печ.формы
      Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка")); //ВызовСерверногоМетода
      Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"));
      Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка"));
      Возврат Команды;
    КонецФункции
    
    Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "")
    
      НоваяКоманда = ТаблицаКоманд.Добавить();
      НоваяКоманда.Представление = Представление; 
      НоваяКоманда.Идентификатор = Идентификатор;
      НоваяКоманда.Использование = Использование;
      НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
      НоваяКоманда.Модификатор = Модификатор;
    
    КонецПроцедуры
    
    Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
       
        УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "БланкГарантии", "Бланк гарантии)", СформироватьПечатнуюФорму(МассивОбъектов[0], ОбъектыПечати));
       
    КонецПроцедуры // Печать()
    
    
    Функция ВернутьМакет()
       
        Макет = ЭтотОбъект.ПолучитьМакет("ГарантийныйТалон");
       
        Возврат Макет;
       
    КонецФункции
    
    Функция СформироватьПечатнуюФорму(МассивОбъектов, ОбъектыПечати) Экспорт
        ТабДок = Новый ТабличныйДокумент;
       
        ТекстЗапроса =
        "ВЫБРАТЬ
        |    ЕСТЬNULL(МЛ_ПринадлежностиАвтомобилей.Комплектация, """") КАК Применимость,
        |    ВложенныйЗапрос.Номенклатура.Наименование КАК Номенклатура,
        |    ВложенныйЗапрос.Номенклатура.Артикул КАК Артикул,
        |    ВложенныйЗапрос.НомерСтроки КАК НомерСтроки
        |ИЗ
        |    (ВЫБРАТЬ
        |        РеализацияТоваровУслугТовары.Номенклатура КАК Номенклатура,
        |        РеализацияТоваровУслугТовары.Ссылка КАК Ссылка,
        |        РеализацияТоваровУслугТовары.Характеристика КАК Характеристика,
        |        РеализацияТоваровУслугТовары.Склад КАК Склад,
        |        МИНИМУМ(РеализацияТоваровУслугТовары.НомерСтроки) КАК НомерСтроки
        |    ИЗ
        |        Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
        |    ГДЕ
        |        РеализацияТоваровУслугТовары.Ссылка В(&МассивОбъектов)
        |   
        |    СГРУППИРОВАТЬ ПО
        |        РеализацияТоваровУслугТовары.Ссылка,
        |        РеализацияТоваровУслугТовары.Номенклатура,
        |        РеализацияТоваровУслугТовары.Характеристика,
        |        РеализацияТоваровУслугТовары.Склад) КАК ВложенныйЗапрос
        |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.МЛ_ПринадлежностиАвтомобилей КАК МЛ_ПринадлежностиАвтомобилей
        |        ПО ВложенныйЗапрос.Номенклатура.АртикулЧ = МЛ_ПринадлежностиАвтомобилей.АртикулЧ
        |
        |УПОРЯДОЧИТЬ ПО
        |    ВложенныйЗапрос.Ссылка,
        |    НомерСтроки
        |ИТОГИ
        |    МАКСИМУМ(Артикул)
        |ПО
        |    Номенклатура";
        Запрос = Новый Запрос;
        Запрос.Текст = ТекстЗапроса;
        Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
       
        Выборка = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
       
        Выборка.Следующий();
        ВыборкаДетальныеЗаписи = Выборка.Выбрать();
        Сч = 1;
        Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
            Если Сч>1 Тогда
                Если Ложь Тогда
                    Строка = " ";
                КонецЕсли;
                Строка.Применимость = Строка.Применимость + "; " + Символы.ПС + Строка(ВыборкаДетальныеЗаписи.Применимость);
            Иначе
                ТЗ = Новый ТаблицаЗначений;
                ТЗ.Колонки.Добавить("Применимость");
                ТЗ.Колонки.Добавить("Номенклатура");
                Строка = ТЗ.Добавить();
                Строка.Применимость = Строка(ВыборкаДетальныеЗаписи.Применимость);
                Строка.Номенклатура = ВыборкаДетальныеЗаписи.Номенклатура;
            КонецЕсли;
            Сч = Сч+1;
        КонецЦикла;
       
        Макет = ВернутьМакет();   
        Шапка = Макет.ПолучитьОбласть("Шапка");
        Шапка.Параметры.Заполнить(ТЗ[0]);
       
        //Шапка.Параметры.СерийныйНомер = "";
        Шапка.Параметры.ДатаПроизводства = НачалоДня(ТекущаяДата())-86400*3;
        Шапка.Параметры.Дата = ТекущаяДата();
        ТабДок.Вывести(Шапка);
       
        ТабДок.ОтображатьСетку = Ложь;
        ТабДок.Защита = Ложь;
        ТабДок.ТолькоПросмотр = Ложь;
        ТабДок.ОтображатьЗаголовки = Ложь;
    
        Возврат ТабДок;
    КонецФункции
    
    --- Объединение сообщений, 9 янв 2017 ---
    Спасибо, разобрался. Нужно было указать "ВызовСерверногоМетода".
    Последнее редактирование: 9 янв 2017