Здравствуйте, дорогие форумчане.не судите строго...
Я начинающий программист.Перешел с 7.7 на 8.2, сейчас начал изучать Радченко.Но сейчас возникла необходимость во внешних печатных формах. В обычном приложении ( конфигурация Розница 1.0) получилось все прекрасно, а вот в управляемом приложении ( конфигурация УТ 11) возникло много вопросов. С Функцией СведенияОВнешнейОбработке, Печать(), ПолучитьТаблицуКоманд(), ДобавитьКоманду - разобрался вполне.а с процедурой допустим СформироватьПечатнуюФорму() разобраться не могу. У меня допустим стоит задача создать ВПФ Пересчет товаров с дополнительной колонкой артикул и штрихкод и цена.При копировании процедуры ПечатьЗадания() в ВПФ выдало кучу ошибок непонятных. помогите пожалуйста разобраться с впф,подскажите как что делается по порядку.Заранее большое спасибо.
---
Я когда начинал, скачал http://infostart.ru/public/94783/. С помощью них разобрался что и как. Есть и другие конечно.
---
Взять с сайта для примера готовые ВПФ для УТ 11, посмотреть, как реализовано в типовых. Если совсем не получается, заплатить деньги и не иметь мозг ни себе, ни почтеннейшей публике.

>>> выдало кучу ошибок непонятных
Начать думать головой, а не другим местом, научиться приводить тексты этих ошибок.
---
Определить сведения о ВПФ:

```1c
    Функция СведенияОВнешнейОбработке() Экспорт
    // Объявим переменную, в которой мы сохраним и вернем "наружу" необходимые данные
    ПараметрыРегистрации = Новый Структура;

    // Объявим еще одну переменную, которая нам потребуется ниже
    МассивНазначений = Новый Массив;

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

    // Теперь нам необходимо передать в виде массива имен, к чему будет подключена наша ВПФ
    // Имейте ввиду, что можно задать имя в таком виде: Документ.* - в этом случае обработка будет подключена ко всем документам в системе,
    // которые поддерживают механизм ВПФ
    МассивНазначений.Добавить("Документ.ЗаказКлиента");
    ПараметрыРегистрации.Вставить("Назначение", МассивНазначений);

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

    // Зададим право обработке на использование безопасного режима. Более подробно можно узнать в справке к платформе (метод УстановитьБезопасныйРежим)
    ПараметрыРегистрации.Вставить("БезопасныйРежим", Истина);

    // Следующие два параметра играют больше информационную роль, т.е. это то, что будет видеть пользователь в информации к обработке
    ПараметрыРегистрации.Вставить("Версия", "1.0");
    ПараметрыРегистрации.Вставить("Информация", "Дополнительная печатная форма 'Счет' к документу заказ клиента");

    // Создадим таблицу команд (подробнее смотрим ниже)
    ТаблицаКоманд = ПолучитьТаблицуКоманд();

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

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

    // Теперь вернем системе наши параметры
    Возврат ПараметрыРегистрации;
    КонецФункции

    Функция ПолучитьТаблицуКоманд()

    // Создадим пустую таблицу команд и колонки в ней
    Команды = Новый ТаблицаЗначений;

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

    // Имя нашего макета, что бы могли отличить вызванную команду в обработке печати
    Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка"));

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

    // Следующий параметр указывает, необходимо ли показывать оповещение при начале и завершению работы обработки. Не имеет смысла при открытии формы
    Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"));

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

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

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

Сделать процедуру Печать в модуле объетка и сформировать ТабличныйДокумент:

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

    // Функция формирует печатную форму документа.
    //
    // Параметры:
    // Тип - Строка - тип печатной формы: Заказ или Счет
    // МассивОбъектов - Массив - массив документов для печати
    // ОбъектыПечати - СписокЗначений
    //
    // Возвращаемое значение:
    // ТабличныйДокумент
    //
    Функция СформироватьПечатнуюФорму(Тип, МассивОбъектов, ОбъектыПечати)
    ....
    КонецФункции // СформироватьПечатнуюФорму()
```

Подключить ВПФ через справочник "Дополнительные отчеты и обработки"
---
Spektr, спасибо меня интересует особо
Функция СформироватьПечатнуюФорму(Тип, МассивОбъектов, ОбъектыПечати)
как быть с ней
---
???
---
Я когда начинал, скачал http://infostart.ru/public/94783/. С помощью них разобрался что и как. Есть и другие конечно.
---
и все таки я собрался с силами и попробовал создать ВПФ задания на пересчет товаров с дополнительными колонками артикул , код, штрихкод, и цена.
Взял ВПФ товарного чека , закоментил процедуру и вставил процедуру из типовой УТ 11 документа Пересчет товаров. Проверил на ошибки и не могу справится с одной ошибкой. Покретикуйте пожалуйста меня и укажите на ошибки и как их исправить а именно :
{ВнешняяОбработка.ЗаданиеНаПересчет.МодульОбъекта(632,78)}: Переменная не определена (ПараметрыПечати)
  ТабличныйДокумент = ПечатьЗадания(МассивОбъектовНазначения, ОбъектыПечати, <<?>>ПараметрыПечати); (Проверка: Сервер)

Код процедур из ВПФ прилагаю:

```1c
    Функция ПечатьЗадания(МассивОбъектов, ОбъектыПечати, ПараметрыПечати)
    КолонкаКодов = ФормированиеПечатныхФорм.ИмяДополнительнойКолонки();

    ВыводитьКоды = ЗначениеЗаполнено(КолонкаКодов);
    ВыводитьГрадацииКачества = ПараметрыПечати.ВыводитьГрадацииКачества;
    ВыводитьРезультатыПересчета = ПараметрыПечати.ВыводитьРезультатыПересчета;

    ТабДокумент = Новый ТабличныйДокумент;
    ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ЗаданиеНаПересчетТоваров";

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

    Результаты = Запрос.ВыполнитьПакет();

    ВыборкаПоДокументам = Результаты[0].Выбрать();
    ВыборкаПоТабличнымЧастям = Результаты[1].Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

    ПервыйДокумент = Истина;

    Если ВыводитьРезультатыПересчета Тогда
    СинонимДокумента = НСтр("ru='Задание на пересчет товаров'");
    Иначе
    СинонимДокумента = НСтр("ru='Результаты пересчета товаров'");
    КонецЕсли;

    Пока ВыборкаПоДокументам.Следующий() Цикл
    РеквизитыДокумента = Новый Структура("Номер, Дата, Префикс");
    ЗаполнитьЗначенияСвойств(РеквизитыДокумента, ВыборкаПоДокументам);
    Заголовок = ОбщегоНазначенияКлиентСервер.СформироватьЗаголовокДокумента(РеквизитыДокумента, СинонимДокумента);

    Если ВыводитьРезультатыПересчета
    И Не ВыборкаПоДокументам.Статус = Перечисления.СтатусыПересчетовТоваров.Выполнено Тогда

    ТекстСообщения = НСтр("ru = 'Документ "%ПредставлениеДокумента%" находится в статусе "%Статус%". Печать результатов пересчета возможна только в статусе "Выполнено"'");

    РеквизитыДокумента.Вставить("Представление",ВыборкаПоДокументам.ПредставлениеДокумента);
    ПредставлениеДокумента = ОбщегоНазначенияКлиентСервер.СформироватьЗаголовокДокумента(РеквизитыДокумента);

    ТекстСообщения = СтрЗаменить(ТекстСообщения,"%ПредставлениеДокумента%",ПредставлениеДокумента);
    ТекстСообщения = СтрЗаменить(ТекстСообщения,"%Статус%",ВыборкаПоДокументам.Статус);

    ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения);
    Продолжить;

    КонецЕсли;

    ВыводитьПоУчету = ВыборкаПоДокументам.ПечататьКоличествоПоУчету Или ВыводитьРезультатыПересчета;
    ПоАдресномуСкладу = СкладыСервер.ИспользоватьАдресноеХранение(ВыборкаПоДокументам.Склад, ВыборкаПоДокументам.Помещение);
    Макет = УправлениеПечатью.ПолучитьМакет("ПФ_MXL_ЗаданиеНаПересчет");

    ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
    ОбластьСкладИсполнитель = Макет.ПолучитьОбласть("СкладИсполнитель");
    ОбластьЯчейкаИзлишков = Макет.ПолучитьОбласть("ОбластьЯчейкаИзлишков");
    ОбластьЯчейкаИспорченных = Макет.ПолучитьОбласть("ОбластьЯчейкаИспорченных");

    Если ПоАдресномуСкладу Тогда

    Если ВыводитьКоды Тогда
    ОбластьШапкаТаблицыНачало = Макет.ПолучитьОбласть("ШапкаТаблицыЯчейкаКодУчет|НачалоСтроки");
    ОбластьСтрокаТаблицыНачало = Макет.ПолучитьОбласть("СтрокаТаблицыЯчейкаКодУчет|НачалоСтроки");
    ОбластьПодвалТаблицыНачало = Макет.ПолучитьОбласть("ПодвалТаблицыЯчейкаКодУчет|НачалоСтроки");
    ОбластьШапкаТаблицыКолонкаКодов = Макет.ПолучитьОбласть("ШапкаТаблицыЯчейкаКодУчет|КолонкаКодов");
    ОбластьСтрокаТаблицыКолонкаКодов = Макет.ПолучитьОбласть("СтрокаТаблицыЯчейкаКодУчет|КолонкаКодов");
    ОбластьПодвалТаблицыКолонкаКодов = Макет.ПолучитьОбласть("ПодвалТаблицыЯчейкаКодУчет|КолонкаКодов");
    ОбластьШапкаТаблицыКолонкаТоваров = Макет.ПолучитьОбласть("ШапкаТаблицыЯчейкаКодУчет|КолонкаТоваровКодЯчейка");
    ОбластьСтрокаТаблицыКолонкаТоваров = Макет.ПолучитьОбласть("СтрокаТаблицыЯчейкаКодУчет|КолонкаТоваровКодЯчейка");
    ОбластьПодвалТаблицыКолонкаТоваров = Макет.ПолучитьОбласть("ПодвалТаблицыЯчейкаКодУчет|КолонкаТоваровКодЯчейка");
    Иначе
    ОбластьШапкаТаблицыНачало = Макет.ПолучитьОбласть("ШапкаТаблицыЯчейка|НачалоСтроки");
    ОбластьСтрокаТаблицыНачало = Макет.ПолучитьОбласть("СтрокаТаблицыЯчейка|НачалоСтроки");
    ОбластьПодвалТаблицыНачало = Макет.ПолучитьОбласть("ПодвалТаблицыЯчейка|НачалоСтроки");
    ОбластьШапкаТаблицыКолонкаТоваров = Макет.ПолучитьОбласть("ШапкаТаблицыЯчейка|КолонкаТоваровБезКодовЯчейки");
    ОбластьСтрокаТаблицыКолонкаТоваров = Макет.ПолучитьОбласть("СтрокаТаблицыЯчейка|КолонкаТоваровБезКодовЯчейки");
    ОбластьПодвалТаблицыКолонкаТоваров = Макет.ПолучитьОбласть("ПодвалТаблицыЯчейка|КолонкаТоваровБезКодовЯчейки");
    КонецЕсли;
    Иначе
    ОбластьШапкаТаблицыНачало = Макет.ПолучитьОбласть("ШапкаТаблицы|Номер");
    ОбластьСтрокаТаблицыНачало = Макет.ПолучитьОбласть("СтрокаТаблицы|Номер");
    ОбластьПодвалТаблицыНачало = Макет.ПолучитьОбласть("ПодвалТаблицы|Номер");

    Если ВыводитьКоды Тогда

    ОбластьШапкаТаблицыКолонкаКодов = Макет.ПолучитьОбласть("ШапкаТаблицыКодУчет|КолонкаЯчейкаКод");
    ОбластьСтрокаТаблицыКолонкаКодов = Макет.ПолучитьОбласть("СтрокаТаблицыКодУчет|КолонкаЯчейкаКод");
    ОбластьПодвалТаблицыКолонкаКодов = Макет.ПолучитьОбласть("ПодвалТаблицыКодУчет|КолонкаЯчейкаКод");
    ОбластьШапкаТаблицыКолонкаТоваров = Макет.ПолучитьОбласть("ШапкаТаблицыКодУчет|КолонкаТоваровБезКодовЯчейки");
    ОбластьСтрокаТаблицыКолонкаТоваров = Макет.ПолучитьОбласть("СтрокаТаблицыКодУчет|КолонкаТоваровБезКодовЯчейки");
    ОбластьПодвалТаблицыКолонкаТоваров = Макет.ПолучитьОбласть("ПодвалТаблицыКодУчет|КолонкаТоваровБезКодовЯчейки");
    Иначе
    ОбластьШапкаТаблицыКолонкаТоваров = Макет.ПолучитьОбласть("ШапкаТаблицы|КолонкаТоваров");
    ОбластьСтрокаТаблицыКолонкаТоваров = Макет.ПолучитьОбласть("СтрокаТаблицы|КолонкаТоваров");
    ОбластьПодвалТаблицыКолонкаТоваров = Макет.ПолучитьОбласть("ПодвалТаблицы|КолонкаТоваров");
    КонецЕсли;
    КонецЕсли;

    ОбластьШапкаТаблицыУпаковки = Макет.ПолучитьОбласть("ШапкаТаблицы|КолонкаУпаковок");
    ОбластьСтрокаТаблицыУпаковки = Макет.ПолучитьОбласть(?(ПоАдресномуСкладу, "СтрокаТаблицыЯчейка|КолонкаУпаковок", "СтрокаТаблицы|КолонкаУпаковок"));
    ОбластьПодвалТаблицыУпаковки = Макет.ПолучитьОбласть("ПодвалТаблицы|КолонкаУпаковок");

    Если ВыводитьКоды Тогда

    ОбластьШапкаТаблицыКолонкаКодов.Параметры.ИмяКолонкиКодов = КолонкаКодов;

    КонецЕсли;

    Если Не ВыводитьПоУчету Тогда
    Если ВыводитьГрадацииКачества Тогда
    ОбластьШапкаТаблицыФакт = Макет.ПолучитьОбласть("ШапкаТаблицыГрадацииКачества|ГрадацииКачества");
    ОбластьСтрокаТаблицыФакт = Макет.ПолучитьОбласть("СтрокаТаблицыГрадацииКачества|ГрадацииКачества");
    ОбластьПодвалТаблицыФакт = Макет.ПолучитьОбласть("ПодвалТаблицыГрадацииКачества|ГрадацииКачества");
    Иначе
    ОбластьШапкаТаблицыФакт = Макет.ПолучитьОбласть("ШапкаТаблицы|ФактБезКоличестваПоУчету");
    ОбластьСтрокаТаблицыФакт = Макет.ПолучитьОбласть("СтрокаТаблицы|ФактБезКоличестваПоУчету");
    ОбластьПодвалТаблицыФакт = Макет.ПолучитьОбласть("ПодвалТаблицы|ФактБезКоличестваПоУчету");
    КонецЕсли;
    Иначе

    ОбластьШапкаТаблицыПоУчету = Макет.ПолучитьОбласть("ШапкаТаблицыКодУчет|КолонкаПоУчету");
    ОбластьСтрокаТаблицыПоУчету = Макет.ПолучитьОбласть("СтрокаТаблицыКодУчет|КолонкаПоУчету");
    ОбластьПодвалТаблицыПоУчету = Макет.ПолучитьОбласть("ПодвалТаблицыКодУчет|КолонкаПоУчету");
    Если ВыводитьГрадацииКачества Тогда
    ОбластьШапкаТаблицыФакт = Макет.ПолучитьОбласть("ШапкаТаблицыГрадацииКачества|ГрадацииКачества");
    ОбластьСтрокаТаблицыФакт = Макет.ПолучитьОбласть("СтрокаТаблицыГрадацииКачества|ГрадацииКачества");
    ОбластьПодвалТаблицыФакт = Макет.ПолучитьОбласть("ПодвалТаблицыГрадацииКачества|ГрадацииКачества");
    Иначе
    ОбластьШапкаТаблицыФакт = Макет.ПолучитьОбласть("ШапкаТаблицыКодУчет|КолонкаФакт");
    ОбластьСтрокаТаблицыФакт = Макет.ПолучитьОбласть("СтрокаТаблицыКодУчет|КолонкаФакт");
    ОбластьПодвалТаблицыФакт = Макет.ПолучитьОбласть("ПодвалТаблицыКодУчет|КолонкаФакт");
    КонецЕсли;
    КонецЕсли;

    Если НЕ ВыборкаПоТабличнымЧастям.НайтиСледующий(Новый Структура("Ссылка",ВыборкаПоДокументам.Ссылка)) Тогда
    Продолжить;
    КонецЕсли;

    ВыборкаПоСтрокамТЧ = ВыборкаПоТабличнымЧастям.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

    Если Не ПервыйДокумент Тогда
    ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
    КонецЕсли;

    ПервыйДокумент = Ложь;
    НомерСтрокиНачало = ТабДокумент.ВысотаТаблицы + 1;

    ОбластьЗаголовок.Параметры.ТекстЗаголовка = Заголовок;

    ШтрихкодированиеПечатныхФорм.ВывестиШтрихкодВТабличныйДокумент(ТабДокумент, Макет, ОбластьЗаголовок, ВыборкаПоДокументам.Ссылка);
    ТабДокумент.Вывести(ОбластьЗаголовок);

    ОбластьСкладИсполнитель.Параметры.ИсполнительПредставление = ФизическиеЛица.ФамилияИнициалыФизЛица(ВыборкаПоДокументам.Исполнитель);
    ОбластьСкладИсполнитель.Параметры.СкладПредставление = СкладыСервер.ПолучитьПредставлениеСклада(ВыборкаПоДокументам.СкладПредставление,ВыборкаПоДокументам.ПомещениеПредставление);

    ТабДокумент.Вывести(ОбластьСкладИсполнитель);

    Если ЗначениеЗаполнено(ВыборкаПоДокументам.ЯчейкаИзлишков) Тогда
    ЗаполнитьЗначенияСвойств(ОбластьЯчейкаИзлишков.Параметры, ВыборкаПоДокументам);
    ТабДокумент.Вывести(ОбластьЯчейкаИзлишков);
    КонецЕсли;

    Если ЗначениеЗаполнено(ВыборкаПоДокументам.ЯчейкаИспорченных) Тогда
    ЗаполнитьЗначенияСвойств(ОбластьЯчейкаИспорченных.Параметры, ВыборкаПоДокументам);
    ТабДокумент.Вывести(ОбластьЯчейкаИспорченных);
    КонецЕсли;

    ТабДокумент.Вывести(ОбластьШапкаТаблицыНачало);

    Если ВыводитьКоды Тогда
    ТабДокумент.Присоединить(ОбластьШапкаТаблицыКолонкаКодов);
    КонецЕсли;
    ТабДокумент.Присоединить(ОбластьШапкаТаблицыКолонкаТоваров);
    ТабДокумент.Присоединить(ОбластьШапкаТаблицыУпаковки);

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

    ТабДокумент.Присоединить(ОбластьШапкаТаблицыФакт);

    Пока ВыборкаПоСтрокамТЧ.Следующий() Цикл

    ОбластьСтрокаТаблицыНачало.Параметры.Заполнить(ВыборкаПоСтрокамТЧ);
    ТабДокумент.Вывести(ОбластьСтрокаТаблицыНачало);

    Если ВыводитьКоды Тогда
    ОбластьСтрокаТаблицыКолонкаКодов.Параметры.Артикул = ВыборкаПоСтрокамТЧ[КолонкаКодов];
    ТабДокумент.Присоединить(ОбластьСтрокаТаблицыКолонкаКодов);
    КонецЕсли;

    ОбластьСтрокаТаблицыКолонкаТоваров.Параметры.Товар = ФормированиеПечатныхФорм.ПолучитьПредставлениеНоменклатурыДляПечати(
    ВыборкаПоСтрокамТЧ.НоменклатураПредставление,
    ВыборкаПоСтрокамТЧ.ХарактеристикаПредставление,
    ВыборкаПоСтрокамТЧ.УпаковкаПредставление,
    ВыборкаПоСтрокамТЧ.СерияПредставление
    );
    ТабДокумент.Присоединить(ОбластьСтрокаТаблицыКолонкаТоваров);

    ОбластьСтрокаТаблицыУпаковки.Параметры.Заполнить(ВыборкаПоСтрокамТЧ);

    ТабДокумент.Присоединить(ОбластьСтрокаТаблицыУпаковки);

    Если ВыводитьПоУчету Тогда
    ОбластьСтрокаТаблицыПоУчету.Параметры.Заполнить(ВыборкаПоСтрокамТЧ);
    ТабДокумент.Присоединить(ОбластьСтрокаТаблицыПоУчету);
    КонецЕсли;

    ОбластьСтрокаТаблицыФакт.Параметры.Заполнить(ВыборкаПоСтрокамТЧ);

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

    ТабДокумент.Вывести(ОбластьПодвалТаблицыНачало);
    Если ВыводитьКоды Тогда
    ТабДокумент.Присоединить(ОбластьПодвалТаблицыКолонкаКодов);
    КонецЕсли;

    ТабДокумент.Присоединить(ОбластьПодвалТаблицыКолонкаТоваров);
    ТабДокумент.Присоединить(ОбластьПодвалТаблицыУпаковки);
    Если ВыводитьПоУчету Тогда
    ТабДокумент.Присоединить(ОбластьПодвалТаблицыПоУчету);
    КонецЕсли;
    ТабДокумент.Присоединить(ОбластьПодвалТаблицыФакт);
    УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабДокумент, НомерСтрокиНачало, ОбъектыПечати, ВыборкаПоДокументам.Ссылка);
    КонецЦикла;

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

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

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

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

    ТабличныйДокумент = ПечатьЗадания(МассивОбъектовНазначения, ОбъектыПечати, ПараметрыПечати);

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

    КонецЕсли;

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

{ВнешняяОбработка.ЗаданиеНаПересчет.МодульОбъекта(632,78)}: Переменная не определена (ПараметрыПечати)
  ТабличныйДокумент = ПечатьЗадания(МассивОбъектовНазначения, ОбъектыПечати, <<?>>ПараметрыПечати); (Проверка: Сервер)
---
После вашей помощи буду разбираться дальше и вставлять остальные колонки
---
Сообщение было скрыто модератором.
---
Сообщение было скрыто модератором.