В обработчике печати не был сформирован табличный документ

1. XiPyPg 16.03.21 09:12 Сейчас в теме
Подскажите где загвоздка не могу сообразить, ругается и все:

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

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

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

Функция Печать(МассивОбъектов, КоллекцияПечатныхФорм,ОбъектыПечати, ПараметрыВывода) Экспорт
   // ТабДок =     СформироватьПечатнуюФормуАкта(МассивОбъектов);
    УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "Макет1", "Акт", 
                        СформироватьПечатнуюФормуАкта(МассивОбъектов));
    
    //ТабДок.Показать();    
КонецФункции

Показать
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
6. user633533_encantado 12 16.03.21 09:27 Сейчас в теме
(1) Для начала посмотрите в журнал регистрации на предмет ошибок выполнения: у вас тупа может быть избыток параметров в процедуре "Печать" -зависит от версии библиотеки.

И внешние обработки так уже не объявляют: можно сделать это красивее. Смотрите примеры в демке БСП.
2. DenisCh 16.03.21 09:15 Сейчас в теме
В СформироватьПечатнуюФормуАкта() надо смотреть
3. XiPyPg 16.03.21 09:17 Сейчас в теме
Там все ровно, через форму проверил все формируется:

Функция СформироватьПечатнуюФормуАкта(МассивОбъектов)  Экспорт
    Для каждого ТекДок из МассивОбъектов цикл
    ТабДокумент = Новый ТабличныйДокумент;
    ТабДокумент.АвтоМасштаб        = Истина;
    ТабДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
    ТабДокумент.ОтображатьСетку = Ложь;
    ТабДокумент.ОтображатьЗаголовки = Ложь;

    //ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_УниверсальныйПередаточныйДокумент_ВПФ";
    ТабДокумент.ЭкземпляровНаСтранице = 1;
    Макет = ПолучитьМакет("Макет1");

    
    ДанныеПредставителяОрганизации = НовыеДанныеПредставителя();

    ОтветственныеЛицаОрганизации = ОтветственныеЛицаБППовтИсп.ОтветственныеЛица(ТекДок.Организация, ТекДок.Дата);
    ДанныеФизЛица = ОтветственныеЛицаОрганизации.РуководительФИО;
    ДанныеПредставителяОрганизации.Должность = ОтветственныеЛицаОрганизации.РуководительДолжность;
    ДанныеПредставителяОрганизации.ДолжностьНаименование =
    ОтветственныеЛицаОрганизации.РуководительДолжностьПредставление;
    
    
    
    ЗаполнитьЗначенияСвойств(ДанныеПредставителяОрганизации, ДанныеФизЛица);
    
    ДанныеПредставителяОрганизации.Представление = ФизическиеЛицаКлиентСервер.ФамилияИнициалы(ДанныеФизЛица);
    
    ДанныеПредставителяОрганизации.ИмяОтчество = СтрШаблон(
            НСтр("ru = '%1 %2'"),
            ДанныеФизЛица.Имя,
            ДанныеФизЛица.Отчество);
    ДанныеПредставителяОрганизации.ФИОПолные = ОбщегоНазначенияБПВызовСервера.ПолучитьФамилиюИмяОтчество(
        ДанныеФизЛица.Фамилия,
        ДанныеФизЛица.Имя,
        ДанныеФизЛица.Отчество,
        Ложь);
    ДанныеПредставителяОрганизации.ФИОРодительныйПадеж =
        СклонениеПредставленийОбъектов.ПросклонятьПредставление(ДанныеПредставителяОрганизации.Представление, 2);
        
    ДанныеПредставителяОрганизации.ДолжностьРодительныйПадеж =
        НРег(СклонениеПредставленийОбъектов.ПросклонятьПредставление(
            ДанныеПредставителяОрганизации.ДолжностьНаименование, 2));
    
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
                   |    КонтактныеЛица.ВидКонтактногоЛица КАК ВидКонтактногоЛица,
                   |    КонтактныеЛица.Должность КАК Должность,
                   |    КонтактныеЛица.Наименование КАК Наименование,
                   |    КонтактныеЛица.Фамилия КАК Фамилия,
                   |    КонтактныеЛица.Имя КАК Имя,
                   |    КонтактныеЛица.Отчество КАК Отчество
                   |ИЗ
                   |    Справочник.КонтактныеЛица КАК КонтактныеЛица
                   |ГДЕ
                   |    КонтактныеЛица.ОбъектВладелец = &ОбъектВладелец";
    Запрос.УстановитьПараметр("ОбъектВладелец", ТекДок.Контрагент);
    Выборка = ЗАпрос.Выполнить().Выбрать();
    
    Если Выборка.Количество()>0  тогда
         Выборка.Следующий();
    КонецЕсли;
    
    Обл =  Макет.ПолучитьОбласть("Шапка");
    Обл.Параметры.НомерАкта = ТекДок.Номер;
    Обл.Параметры.Дата = ТекДок.Дата;
    ТабДокумент.Вывести(Обл);
    Обл =  Макет.ПолучитьОбласть("Тело");
    
    Обл.Параметры.Заказчик = ТекДок.Контрагент.НаименованиеПолное;
    
    Если ТекДок.Организация.ЮридическоеФизическоеЛицо = Перечисления.ЮридическоеФизическоеЛицо.ФизическоеЛицо Тогда
        // Для ИП выводим только информацию об организации
        ПредставительОрганизации = ТекДок.Организация.НаименованиеПолное;
    Иначе
        ПредставительОрганизации = СтрШаблон("%1 %2",
        ПолучитьСклоненияСтроки(ВЫборка.Должность,,"ПД=Родительный")[0], 
        ПолучитьСклоненияСтроки(Выборка.Фамилия + " " + Выборка.Имя + " "+ Выборка.Отчество,,"ПД=Родительный")[0]);
    КонецЕсли;
    
    Обл.Параметры.РукЗаказчик =  ПредставительОрганизации;
    Обл.Параметры.Исполнитель = ТекДок.Организация.НаименованиеПолное;
    Обл.Параметры.РукИсполнитель = ДанныеПредставителяОрганизации.ДолжностьРодительныйПадеж + " " + ПолучитьСклоненияСтроки(ДанныеПредставителяОрганизации.ФИОПолные,,"ПД=Родительный")[0];    
    Обл.Параметры.НомерДоговора = ТекДок.ДоговорКонтрагента.Номер;
    Обл.Параметры.ДатаДоговора  = ТекДок.ДоговорКонтрагента.Дата;
    Обл.Параметры.Дата = ТекДок.Дата;
    Обл.Параметры.СуммаДокумента = ТекДок.СуммаДокумента;
    ФормСтрока = "Л = ru_RU; ДП = Истина";
    ПарПредмета="рубль, рубля, рублей, м, копейка, копейки, копеек, ж, 2";
    //ПрописьЧисла = ЧислоПрописью(2341.56, ФормСтрока, ПарПредмета);

    Обл.Параметры.СуммаПрописью = ЧислоПрописью(ТекДок.СуммаДокумента, ФормСтрока, ПарПредмета);
    Обл.Параметры.СумаНДС = Строка(ТекДок.Товары.ИТог("СуммаНДС") + ТекДок.Услуги.ИТог("СуммаНДС"));
    ТабДокумент.Вывести(Обл);
    Обл = Макет.ПолучитьОбласть("Подвал");
    Обл.Параметры.ДолжностьИсполнитель = ДанныеПредставителяОрганизации.Должность;
    Обл.Параметры.ИсполнительРуков =  ДанныеПредставителяОрганизации.Представление;
    Обл.Параметры.ИсполнительСокр =  ТекДок.Организация.НаименованиеСокращенное;
    
    Обл.Параметры.ДолжностьЗаказчик = ВЫборка.Должность;
    Обл.Параметры.ЗаказчикСокр = ТекДок.Контрагент.Наименование;
    Обл.Параметры.ЗаказчикРуков = ВЫборка.Фамилия + " "  + Лев(ВЫборка.Имя,1)+". " + Лев(Выборка.Отчество,1) + "." ;
    ТабДокумент.Вывести(Обл);
    КонецЦикла;
    Возврат ТабДокумент;

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

Показать
4. N0t_F0und 10 16.03.21 09:21 Сейчас в теме
7. XiPyPg 16.03.21 09:32 Сейчас в теме
(4)
В обработчике печати не был сформирован табличный документ для: Акт
{ОбщийМодуль.УправлениеПечатью.Модуль(1647)}: ВызватьИсключение(ТекстСообщенияОбОшибке);
{ОбщаяФорма.ПечатьДокументов.Форма(492)}: УправлениеПечатью.ПечатьПоВнешнемуИсточнику(
{ОбщаяФорма.ПечатьДокументов.Форма(43)}: КоллекцияПечатныхФорм = СформироватьПечатныеФормы(Параметры.ИменаМакетов, Отказ);
{ОбщийМодуль.УправлениеПечатьюСлужебныйКлиент.Модуль(234)}: ОткрытьФорму("ОбщаяФорма.ПечатьДокументов", ПараметрыОткрытия, Форма);
{ОбщийМодуль.УправлениеПечатьюСлужебныйКлиент.Модуль(34)}: ВыполнитьОткрытиеПечатнойФормыЗавершение(ОбъектыНазначения, Параметры);
{ОбщийМодуль.ДополнительныеОтчетыИОбработкиКлиент.Модуль(482)}: МодульУправлениеПечатьюСлужебныйКлиент.ВыполнитьОткрытиеПечатнойФормы(
{ОбщийМодуль.ДополнительныеОтчетыИОбработкиКлиент.Модуль(260)}: ВыполнитьОткрытиеПечатнойФормы(ВыполняемаяКоманда, Форма, ВыполняемаяКоманда.ОбъектыПечати);
{ОбщийМодуль.УправлениеПечатьюСлужебныйКлиент.Модуль(95)}: МодульДополнительныеОтчетыИОбработкиКлиент.ВыполнитьНазначаемуюКомандуПечати(ОписаниеКоманды, Форма);
{ОбщийМодуль.УправлениеПечатьюСлужебныйКлиент.Модуль(20)}: ВыполнитьПодключаемуюКомандуПечатиЗавершение(Истина, ПараметрыВыполнения);
{ОбщийМодуль.ПодключаемыеКомандыКлиент.Модуль(246)}: ВыполнитьОбработкуОповещения(Обработчик, ПараметрКоманды);
{ОбщийМодуль.ПодключаемыеКомандыКлиент.Модуль(64)}: ПродолжитьВыполнениеКоманды(ПараметрыВыполнения);
{Документ.РеализацияТоваровУслуг.Форма.ФормаДокументаОбщая.Форма(3701)}: ПодключаемыеКомандыКлиент.ВыполнитьКоманду(ЭтотОбъект, Команда, Объект);
Показать
5. SlavaKron 16.03.21 09:25 Сейчас в теме
Второй параметр процедуры УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию должен быть равен идентификатору команды.
8. XiPyPg 16.03.21 09:33 Сейчас в теме
(5)Второй параметр это имя макет вроде.
9. XiPyPg 16.03.21 09:47 Сейчас в теме
Хз просто что куда смотреть, или еще не проснулся или лыжи не едут.
10. user633533_encantado 12 16.03.21 09:52 Сейчас в теме
(9) Ну для начала поставьте точку останова на процедуре "УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию"

Что там возвращает КоллекцияПечатныхФорм.Найти(ВРег(ИмяМакета), "ИмяВРЕГ");
11. XiPyPg 16.03.21 10:06 Сейчас в теме
(10)Все спасибо разобрался, в индентификатор надо было имя макета впилить.
12. puzo50 16.03.21 11:08 Сейчас в теме
ну и вы же понимаете, что будет возвращаться (ну и печататься) только последний табдок, если выберете 2+ штук.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот