Добрый день
После обновления ЗУП до 3.1.18.46 перестали работать все внешние печатные формы.
Пишет: "Макет не существует. Операция прервана".
Ошибка в модуле "УправлениеПечатьюМультиязычность". Путь к макету не устраивает. Как поправить?
---
Полный путь к макету должен быть в формате "Документ.ИмяДокумента.ИмяМакетаПФ". Было просто "ИмяМакетаПФ". Раньше, похоже, система этого не секла, сейчас выдает ошибку.
---
Можно написать что угодно и достаточно одной точки, например, "Фигня.ТрудовойДоговор" прекрасно работает. А все изза того что производится поиск в РегистрСведений.ПользовательскиеМакетыПечати, в котором измерениями являются : Объект = Фигня, ИмяМакета = ТрудовойДоговор. После того как программа не нашла аналогов вашей Фигне в этом регистре, она открывает ваш макет ТрудовойДоговор.

Считаю что это должны исправить, т.к. для ВПФ нечего указать в качестве пути. А вы считаете что это должны исправить?
---
После обновления
-----------

 Как поправить

позвать того , кто обновлял

______

если в вашем внешнем макете ( печатной форме) таблица называлась Общая
но после обновления разрботчики ее назвали Общие

как думаете ? - подхватит печатную форму ?
---
По делу есть что то? Обновления типовые, никто ничего не менял. Путь к макету берется из ВПФ. Видимо изменились требования к нему.
---
Изменились общие модули в БСП. В 18-й версии внедрена новая БСП 3.1.4.
---
Полный путь к макету должен быть в формате "Документ.ИмяДокумента.ИмяМакетаПФ". Было просто "ИмяМакетаПФ". Раньше, похоже, система этого не секла, сейчас выдает ошибку.
---
https://infostart.ru/1c/articles/1411756/
раздел Печать

В передаваемых параметрах (шестой) к процедуре ВывестиТабличныйДокументВКоллекцию нужен полный путь до печатной формы.

```1c
    УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, ИмяМакета, СинонимМакета, ТабличныйДокумент, Картинка, ПолныйПутьКМакету, ИмяФайлаПечатнойФормы)

    // Модуль менеджера документа
    Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт

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

    КонецПроцедуры
```
---
не совсем понял, внешняя печатная форма расположена в этойже самой внешней обработки, что нужно сдлать чтобы система не ругалась. В приведенном выше примере сылается на нахождение формы в документе.

Так же вопрос, если одна печатная форма (новая, расположена в самой обработке) используется на два документа? то данную функцию нельзя универсально использовать? нужно вместо одной обработки сделать две?
---
Полный путь указывается именно к документу, для которого создается внешняя печатная форма.
А если ВПФ создается для нескольких типов документов, то достаточно в полном пути прописать один из них. Все равно будет работать, я проверял.
---
Спасибо, помогло!
---
Сообщение было скрыто модератором.
---
я сделал так, сослался на первый попавшийся общий макет в конфе, потом подменил из внешней обработки
```1c
    Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт

    Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "ОбщиеМакеты.ПФ_MXL_Т1") Тогда

    ИмяМакета = "ОбщиеМакеты.ПФ_MXL_Т1";
    Представление = НСтр("ru='Договор ОМ'");

    УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
    КоллекцияПечатныхФорм,
    ИмяМакета, Представление,
    ТабличныйДокументТрудовойДоговор(
    ИмяМакета,
    МассивОбъектов,
    ОбъектыПечати),
    ,
    "ОбщиеМакеты.ПФ_MXL_Т1");
    КонецЕсли;

    КонецПроцедуры

    Функция ТабличныйДокументТрудовойДоговор(ИмяМакета, МассивОбъектов, ОбъектыПечати)

    Макет = ПолучитьМакет("ПФ_MXL_ДоговорМО");
    ДокументРезультат = Новый ТабличныйДокумент;
    //бла бла бла

    Возврат ДокументРезультат;

    КонецФункции
```
---
ПолучитьМакет("ПФ_MXL_ДоговорМО");
не помогло, сделала по аналогии
---
Я поступил следующим образом.
Добавил в расширение УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию с функцией Перед

```1c
    &Перед("ВывестиТабличныйДокументВКоллекцию")
    Процедура Расширение_ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, ИмяМакета, СинонимМакета, ТабличныйДокумент, Картинка, ПолныйПутьКМакету, ИмяФайлаПечатнойФормы)
    Если СтрНайти(ПолныйПутьКМакету,".") = 0 Тогда
    ПолныйПутьКМакету = "ОбщиеМакеты.ПФ_MXL_Т1";
    КонецЕсли;
    КонецПроцедуры
```

Теперь печатные формы переделывать не потребуется.
---
Добавьте в расширение процедуру общего модуля УправлениеПечатьюМультиязычность &Вместо("ЯзыкиМакета").

```1c
    Попытка
    Результат = ПродолжитьВызов(ПутьКМакету);
    Исключение
    Возврат Новhttps://infostart.ru/profile/edit/ый Массив;
    КонецПопытки;
```

//и будет вам счастье:) не надо будет трогать ни одну форму
---
Попытка
Результат = ПродолжитьВызов(ПутьКМакету);
Исключение
Возврат Новый Массив;
КонецПопытки;
Это не помогло
---
Твоим способом заработает, НО ПРИ ЭТОМ СТАНДАРТНЫЕ ПФ перестанут работать.
НУЖНО ПРОСТО В ОБРАБОТКУ ПРОПИСАТЬ полный муть на макет, например :

Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт

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

 КонецЕсли;

КонецПроцедуры
---
Документ.ДоговорРаботыУслуги.ПФ_MXL_ДыговорПодряда
Как это будет выглядеть для внешней ПФ???
---
цедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт

Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "ДоговорПодрядаСБК") Тогда
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм,"ДоговорПодрядаСБК", "ДоговорПодрядаСБК",
Спасибо!
самый рабочий способ оказался)
---
```1c
    мИмяМакета = УказатьНаименованиеКомандыПечати();
    мИмяПечатнойФормы = "Документ.ДанныеДляРасчетаЗарплаты.СдельныйНаряд";//УказатьНаименованиеВнешнейПечатнойФормы();
    Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, мИмяМакета) Тогда
    УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
    КоллекцияПечатныхФорм,
    мИмяМакета,
    мИмяПечатнойФормы,
    ПечатьСдельногоНаряда(МассивОбъектов,
    ОбъектыПечати), ,
    мИмяПечатнойФормы);
    КонецЕсли;
```

Помогло - спасибо
---
Я не много не поняла.
если мой макет не в общих и не в Документе
он мною разработанный,
каким тогда должен быть Путь вызова?
это ВПФ макет зовется "обходнойЛист"
---
каким тогда должен быть Путь вызова? Кто за вас должен читать уже написанное:Полный путь к макету должен быть в формате "Документ.ИмяДокумента.ИмяМакетаПФ".
это ВПФ макет зовется "обходнойЛист" Вот к какому документу вы приклеили свой "обходнойЛист" - такой путь и должен быть.
---
Документ.ИмяДокумента
{ВнешняяОбработка.ОбходнойЛистПриУвольнении.МодульОбъекта(117)}: Ошибка при вызове метода контекста (ПолучитьМакет)
 Макет = ПолучитьМакет("Документ.Увольнение.ОбходнойЛист");
по причине:
Недопустимое значение параметра (параметр номер '1')
Недопустимое значение параметра (параметр номер '1')
---
```1c
    ПараметрыВывода.ДоступнаПечатьПоКомплектно = Истина;
    Макет = ПолучитьМакет("Документ.Увольнение.ОбходнойЛист");

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

```1c
    УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "СдельныйНаряд",
    НСтр("ru = 'Сдельный наряд'"), ПечатьСдельныйНаряд(МассивОбъектов[0], ОбъектыПечати), ,
    "Документ.ДанныеДляРасчетаЗарплаты.ИМЯ_своего_макета_ВПФ");
```
---
Чето туплю.
Документ.ДанныеДляРасчетаЗарплаты.ИМЯ_своего_макета_ВПФ
Там ведь его нету. Макет во внешней форме.
---
ХЗ, у меня заработало
---
Хорошо вам. А у меня не взлетело.
---
окумент.ДанныеДляРасчетаЗарплаты.ИМЯ_своего_макета_ВПФ
Там ведь его нету. Макет во внешней форме.
Макет во внешней форме, но он же к какому-то документу, вот его и пропишите. У меня сработало.
---
Я в УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию убрала 6 параметр совсем.

А в функции печати оставила
Макет = ПолучитьМакет("Реестр"); Было Макет = ЭтотОбъект.ПолучитьМакет("Реестр");

Заработало. Была такая же проблема.
---
Такая же ошибка в итоге. Удалось как-то её устранить?
---
(23) комментарий помог
---
Повезло :)
---
В ВПФ в УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию() добавить запятую. Пример:
Было

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

Стало

```1c
    УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "УведомлениеОНачалеОтпуска", "Уведомление о начале отпуска",
    ПечатьДокумента(ТаблицаСведенийДокумента, ОбъектыПечати),,,"Макет");
```
---
Спасибо! Помогло
---
Помогло, а можете объяснить кто-нибудь почему ?
---
ВывестиТабличныйДокументВКоллекцию

спасибо тебе добрый ты наш человек.

120 внешних печатных форм. Пойду поплачу.
---
"...добавить запятую..." - помогло. Спасибо!