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

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

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

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

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

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

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

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

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

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

    СтруктураДанныхДляПечати = Неопределено;
    СтандартнаяОбработка = Истина;
    КоммерческиеПредложенияДокументыПереопределяемый.КоммерческоеПредложениеКлиентуПриФормированииСтруктурыДанных­Печати(
    МассивОбъектов,
    СтруктураДанныхДляПечати,
    ПараметрыПечати,
    СтандартнаяОбработка);

    Если Не СтандартнаяОбработка Тогда
    Возврат СтруктураДанныхДляПечати;
    КонецЕсли;

    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов);

    ОтображатьСкидки = Истина;
    Если ПараметрыПечати.Свойство("ОтображатьСкидки")
    И Не ПараметрыПечати.ОтображатьСкидки Тогда
    ОтображатьСкидки = Ложь;
    КонецЕсли;

    Запрос.УстановитьПараметр("ОтображатьСкидки", ОтображатьСкидки);

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

    УсловияЕдиницыИзмерения = "Товары.ЕдиницаИзмерения";
    КоммерческиеПредложенияДокументыПереопределяемый.ПолучитьТекстЗапросаПолученияЕдиницыИзмерения(УсловияЕдиницыИзмерения);
    Запрос.Текст = СтрЗаменить(Запрос.Текст, "&УсловияЕдиницыИзмерения", УсловияЕдиницыИзмерения);

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

    СтруктураДанныхДляПечати = Новый Структура;
    СтруктураДанныхДляПечати.Вставить("РезультатПоШапке", ПакетРезультатовЗапроса[0]);
    СтруктураДанныхДляПечати.Вставить("РезультатПоТоварам", ПакетРезультатовЗапроса[1]);

    Возврат СтруктураДанныхДляПечати;

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

    Функция ДанныеОбъектаПоДаннымДляПечати(ДанныеШапки, ТаблицаТовары)

    ДанныеОбъекта = Новый Структура;

    #Область ДанныеОрганизации

    СведенияОрганизации = Новый Структура;
    СведенияОрганизации.Вставить("Наименование");
    СведенияОрганизации.Вставить("ПолноеНаименование");
    СведенияОрганизации.Вставить("Телефоны");
    СведенияОрганизации.Вставить("ЮридическийАдрес");
    СведенияОрганизации.Вставить("ЭлектроннаяПочта");

    КоммерческиеПредложенияДокументыПереопределяемый.ЗаполнитьДанныеОрганизации(ДанныеШапки.Организация, СведенияОрганизации);

    Если ЗначениеЗаполнено(СведенияОрганизации.ПолноеНаименование) Тогда
    ПредставлениеОрганизации = СведенияОрганизации.ПолноеНаименование;
    Иначе
    ПредставлениеОрганизации = СведенияОрганизации.Наименование;
    КонецЕсли;

    #КонецОбласти

    #Область КонтактнаяИнформация

    Если ЗначениеЗаполнено(ДанныеШапки.Менеджер) Тогда

    МассивСМенеджером = Новый Массив;
    МассивСМенеджером.Добавить(ДанныеШапки.Менеджер);

    ТребуемыеТипыКонтактнойИнформации = Новый Массив;
    ТребуемыеТипыКонтактнойИнформации.Добавить(Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты);

    ТаблицаКонтактнойИнформации = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияОбъектов(
    МассивСМенеджером,
    ТребуемыеТипыКонтактнойИнформации,,
    ДанныеШапки.Дата);

    АдресЭлектроннойПочтыМенеджера = КоммерческиеПредложенияДокументы.ПредставлениеКонтактнойИнформацииИзТаблицы(
    ТаблицаКонтактнойИнформации,
    Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты);

    Иначе
    ТелефонМенеджера = ";
    АдресЭлектроннойПочтыМенеджера = ";
    КонецЕсли;

    #КонецОбласти

    #Область Товары

    ЕстьСкидки = Ложь;
    ДанныеОбъекта.Вставить("СуммаВсего", 0);
    ДанныеОбъекта.Вставить("СуммаВсегоНДС", 0);
    ДанныеОбъекта.Вставить("КоличествоТоваров", 0);
    ДанныеОбъекта.Вставить("Товары", Новый Массив);

    Для Каждого СтрокаТовары Из ТаблицаТовары Цикл

    Если СтрокаТовары.СуммаСкидки <> 0 Тогда
    ЕстьСкидки = Истина;
    КонецЕсли;

    ДанныеОбъекта.СуммаВсего = ДанныеОбъекта.СуммаВсего + СтрокаТовары.Сумма;
    ДанныеОбъекта.СуммаВсегоНДС = ДанныеОбъекта.СуммаВсегоНДС + СтрокаТовары.СуммаНДС;
    ДанныеОбъекта.КоличествоТоваров = ДанныеОбъекта.КоличествоТоваров + 1;

    СтрокаТаблицыТовары = Новый Структура;

    НаименованиеТовара = КоммерческиеПредложенияДокументыКлиентСервер.ПредставлениеНоменклатурыДляПечати(СтрокаТовары.Номенклатура, СтрокаТовары.Характеристика);

    СтрокаТаблицыТовары.Вставить("НомерСтроки", СтрокаТовары.НомерСтроки);
    СтрокаТаблицыТовары.Вставить("Номенклатура", НаименованиеТовара);
    СтрокаТаблицыТовары.Вставить("Количество", СтрокаТовары.Количество);
    СтрокаТаблицыТовары.Вставить("ЕдиницаИзмерения", СтрокаТовары.ЕдиницаИзмерения);
    СтрокаТаблицыТовары.Вставить("Цена", Формат(СтрокаТовары.Цена,"ЧДЦ=2; ЧРД=."));
    СтрокаТаблицыТовары.Вставить("СуммаСНДС", Формат(СтрокаТовары.СуммаСНДС,"ЧДЦ=2; ЧРД=."));
    СтрокаТаблицыТовары.Вставить("СуммаСкидки", Формат(СтрокаТовары.СуммаСкидки,"ЧДЦ=2; ЧРД=."));
    СтрокаТаблицыТовары.Вставить("СрокПоставки", КоммерческиеПредложенияДокументыКлиентСервер.СрокПоставкиСтрокой(ДанныеШапки.ВариантУказанияСрокаПоставки,
    СтрокаТовары.СрокПоставки));

    КоммерческиеПредложенияДокументыПереопределяемый.ДополнитьДанныеОбъектаДляПечати(СтрокаТаблицыТовары, СтрокаТовары, ДанныеОбъекта);

    ДанныеОбъекта.Товары.Добавить(СтрокаТаблицыТовары);

    КонецЦикла;

    #КонецОбласти

    #Область ЗаполнениеДанныхОбъекта

    ПредставлениеСуммДокумента = КоммерческиеПредложенияДокументы.ПредставлениеСуммДокументаДляПечати(ДанныеШапки,
    ДанныеОбъекта.СуммаВсего,
    ДанныеОбъекта.СуммаВсегоНДС,
    ДанныеОбъекта.КоличествоТоваров);

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

    #КонецОбласти

    Возврат ДанныеОбъекта;

    КонецФункции
    Функция ПредставлениеКлиента(Клиент, Контрагент)

    Возврат КоммерческиеПредложенияДокументы.ПредставлениеПартнераКонтрагента(Клиент, Контрагент);

    КонецФункции
    Функция КонтактнаяИнформацияПредложения(ДанныеОбъекта)

    МассивСтрок = Новый Массив;

    Если Не ПустаяСтрока(ДанныеОбъекта.АдресОрганизации) Тогда
    МассивСтрок.Добавить(ДанныеОбъекта.АдресОрганизации);
    КонецЕсли;

    Если Не ПустаяСтрока(ДанныеОбъекта.ТелефонОрганизации) Тогда
    МассивСтрок.Добавить(ДанныеОбъекта.ТелефонОрганизации);
    КонецЕсли;

    Если Не ПустаяСтрока(ДанныеОбъекта.АдресЭлектроннойПочтыМенеджера) Тогда
    МассивСтрок.Добавить(ДанныеОбъекта.АдресЭлектроннойПочтыМенеджера);
    ИначеЕсли Не ПустаяСтрока(ДанныеОбъекта.АдресЭлектроннойПочтыОрганизации) Тогда
    МассивСтрок.Добавить(ДанныеОбъекта.АдресЭлектроннойПочтыОрганизации);
    КонецЕсли;

    Возврат СтрСоединить(МассивСтрок, Символы.ПС);

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

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

    УстановитьПривилегированныйРежим(Истина);

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

    ДанныеДляПечати = ДанныеДляПечати(МассивОбъектов, ОбъектыПечати, ПараметрыПечати);

    ДанныеШапки = ДанныеДляПечати.РезультатПоШапке.Выбрать(); // ВыборкаИзРезультатаЗапроса
    ТаблицаТовары = ДанныеДляПечати.РезультатПоТоварам.Выгрузить(); // ТаблицаЗначений

    ТаблицаТоварыДокумента = Новый ТаблицаЗначений;
    Для Каждого КолонкаТаблицыЗначений Из ТаблицаТовары.Колонки Цикл
    ТаблицаТоварыДокумента.Колонки.Добавить(КолонкаТаблицыЗначений.Имя, КолонкаТаблицыЗначений.ТипЗначения);
    КонецЦикла;

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

    Пока ДанныеШапки.Следующий() Цикл

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

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

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

    ПараметрыПоиска = Новый Структура;
    ПараметрыПоиска.Вставить("Ссылка", ДанныеШапки.Ссылка);

    НайденныеСтроки = ТаблицаТовары.НайтиСтроки(ПараметрыПоиска);

    Для Каждого НайденнаяСтрока Из НайденныеСтроки Цикл
    НоваяСтрока = ТаблицаТоварыДокумента.Добавить();
    ЗаполнитьЗначенияСвойств(НоваяСтрока, НайденнаяСтрока);
    КонецЦикла;

    ДанныеОбъекта = ДанныеОбъектаПоДаннымДляПечати(ДанныеШапки, ТаблицаТоварыДокумента);
    ЗаполнитьТабличныйДокументКоммерческоеПредложениеКлиенту(ТабличныйДокумент, ДанныеОбъекта, ПараметрыПечати);

    УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, НомерСтрокиНачало, ОбъектыПечати, ДанныеШапки.Ссылка);

    КонецЦикла;

    Возврат ТабличныйДокумент;

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

    Процедура ЗаполнитьТабличныйДокументКоммерческоеПредложениеКлиенту(ТабличныйДокумент, ДанныеОбъекта, ПараметрыПечати)

    //Макет = УправлениеПечатью.МакетПечатнойФормы("Документ.КоммерческоеПредложениеКлиенту.ПФ_MXL_КоммерческоеПредложениеКлиенту");
    Макет = ПолучитьМакет("Кп");
    Если ПараметрыПечати.Свойство("ОтображатьСкидки")
    И Не ПараметрыПечати.ОтображатьСкидки Тогда

    Если ДанныеОбъекта.ВариантУказанияСрокаПоставки = Перечисления.ВариантыСроковПоставкиКоммерческихПредложений.НеУказывается Тогда
    ПостфиксСтрок = ";
    Иначе
    ПостфиксСтрок = "СрокПоставки";
    КонецЕсли;

    Иначе

    Если ДанныеОбъекта.ВариантУказанияСрокаПоставки = Перечисления.ВариантыСроковПоставкиКоммерческихПредложений.НеУказывается Тогда
    ПостфиксСтрок = "Скидка";
    Иначе
    ПостфиксСтрок = "СрокПоставкиСкидка";
    КонецЕсли;

    КонецЕсли;

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

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

    КоммерческиеПредложенияДокументыПереопределяемый.ПриФормированииЗаголовкаПечатнойФормы(Макет, ОбластьЗаголовок, ДанныеОбъекта);

    ДополнительныеПараметрыВывода = Неопределено;

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

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

    ОбластьПредлагаемОзнакомиться.Параметры.Заполнить(ДанныеОбъекта);
    ТабличныйДокумент.Вывести(ОбластьПредлагаемОзнакомиться);

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

    Для Каждого СтрокаТовары Из ДанныеОбъекта.Товары Цикл

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

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

    КонецЦикла;

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

    ТабличныйДокумент.Вывести(ОбластьПустаяСтрокаТонкая);

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

    Если Не ПустаяСтрока(ДанныеОбъекта.УсловияПоставкиПредставление) Тогда

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

    КонецЕсли;

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

все без изменений. в конфигураторе пишет, что ошибок нет, а в клиенте "недостаточно факт параметров"
---
прошу помощи, очень нужно((
---
Это что там у Вас?
емый.КоммерческоеПредложениеКлиентуПриФормированииСтруктурыДанных­<wbr>­Печати(
---
это убрал, все равно не работает(
---
ну это на всякий случай... пробую у себя...
---
Вобщем так
В управлении печатью есть ПечатьПоВнешнемуИсточнику(ДополнительнаяОбработкаСсылка, ПараметрыИсточника, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт

В процедуре есть вызов ВнешняяОбработкаОбъект.Печать(ПараметрыИсточника.ОбъектыНазначения, КоллекцияПечатныхФорм, ОбъектыПечати,ПараметрыВывода); как видит 4 параметра, а у Вас в процедуре печать ВПФ их 5.
Это в ЕРП как уВас надо смотреть.
---
В принципе на ЕРп у меня получилось печатать, но пришлось закомментировать специфические объекты.(вставка кода не работает у меня)

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

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

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

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

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

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

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

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

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

    СтруктураДанныхДляПечати = Неопределено;
    СтандартнаяОбработка = Истина;
    КоммерческиеПредложенияДокументыПереопределяемый.КоммерческоеПредложениеКлиентуПриФормированииСтруктурыДанных­Печати(
    МассивОбъектов,
    СтруктураДанныхДляПечати,
    ПараметрыПечати,
    СтандартнаяОбработка);

    Если Не СтандартнаяОбработка Тогда
    Возврат СтруктураДанныхДляПечати;
    КонецЕсли;

    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов);

    ОтображатьСкидки = Истина;
    Если ПараметрыПечати.Свойство("ОтображатьСкидки")
    И Не ПараметрыПечати.ОтображатьСкидки Тогда
    ОтображатьСкидки = Ложь;
    КонецЕсли;

    Запрос.УстановитьПараметр("ОтображатьСкидки", ОтображатьСкидки);

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

    //| &УсловияЕдиницыИзмерения КАК ЕдиницаИзмерения,
    | Товары.Количество КАК Количество,
    |ВЫБОР
    | КОГДА &ОтображатьСкидки
    | ТОГДА Товары.Цена
    | ИНАЧЕ ВЫБОР
    | КОГДА Товары.Количество = 0
    | ТОГДА 0
    | ИНАЧЕ Товары.Сумма / Товары.Количество
    | КОНЕЦ
    |КОНЕЦ КАК Цена,
    | Товары.СуммаСНДС КАК СуммаСНДС,
    | Товары.Сумма КАК Сумма,
    | Товары.СуммаНДС КАК СуммаНДС,
    | Товары.СрокПоставки КАК СрокПоставки
    |ИЗ
    | Документ.КоммерческоеПредложениеКлиенту.Товары КАК Товары
    |ГДЕ
    | Товары.Ссылка В(&МассивОбъектов)
    |
    |УПОРЯДОЧИТЬ ПО
    | Ссылка,
    | НомерСтроки";

    УсловияЕдиницыИзмерения = "Товары.ЕдиницаИзмерения";
    КоммерческиеПредложенияДокументыПереопределяемый.ПолучитьТекстЗапросаПолученияЕдиницыИзмерения(УсловияЕдиницыИзмерения);
    Запрос.Текст = СтрЗаменить(Запрос.Текст, "&УсловияЕдиницыИзмерения", УсловияЕдиницыИзмерения);

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

    СтруктураДанныхДляПечати = Новый Структура;
    СтруктураДанныхДляПечати.Вставить("РезультатПоШапке", ПакетРезультатовЗапроса[0]);
    СтруктураДанныхДляПечати.Вставить("РезультатПоТоварам", ПакетРезультатовЗапроса[1]);

    Возврат СтруктураДанныхДляПечати;

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

    Функция ДанныеОбъектаПоДаннымДляПечати(ДанныеШапки, ТаблицаТовары)

    ДанныеОбъекта = Новый Структура;

    #Область ДанныеОрганизации

    СведенияОрганизации = Новый Структура;
    СведенияОрганизации.Вставить("Наименование");
    СведенияОрганизации.Вставить("ПолноеНаименование");
    СведенияОрганизации.Вставить("Телефоны");
    СведенияОрганизации.Вставить("ЮридическийАдрес");
    СведенияОрганизации.Вставить("ЭлектроннаяПочта");

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

    #КонецОбласти

    #Область КонтактнаяИнформация

    Если ЗначениеЗаполнено(ДанныеШапки.Менеджер) Тогда

    МассивСМенеджером = Новый Массив;
    МассивСМенеджером.Добавить(ДанныеШапки.Менеджер);

    ТребуемыеТипыКонтактнойИнформации = Новый Массив;
    ТребуемыеТипыКонтактнойИнформации.Добавить(Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты);

    ТаблицаКонтактнойИнформации = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияОбъектов(
    МассивСМенеджером,
    ТребуемыеТипыКонтактнойИнформации,,
    ДанныеШапки.Дата);

    АдресЭлектроннойПочтыМенеджера = КоммерческиеПредложенияДокументы.ПредставлениеКонтактнойИнформацииИзТаблицы(
    ТаблицаКонтактнойИнформации,
    Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты);

    Иначе
    ТелефонМенеджера = ";
    АдресЭлектроннойПочтыМенеджера = ";
    КонецЕсли;

    #КонецОбласти

    #Область Товары

    ЕстьСкидки = Ложь;
    ДанныеОбъекта.Вставить("СуммаВсего", 0);
    ДанныеОбъекта.Вставить("СуммаВсегоНДС", 0);
    ДанныеОбъекта.Вставить("КоличествоТоваров", 0);
    ДанныеОбъекта.Вставить("Товары", Новый Массив);

    Для Каждого СтрокаТовары Из ТаблицаТовары Цикл

    Если СтрокаТовары.СуммаСкидки <> 0 Тогда
    ЕстьСкидки = Истина;
    КонецЕсли;

    ДанныеОбъекта.СуммаВсего = ДанныеОбъекта.СуммаВсего + СтрокаТовары.Сумма;
    ДанныеОбъекта.СуммаВсегоНДС = ДанныеОбъекта.СуммаВсегоНДС + СтрокаТовары.СуммаНДС;
    ДанныеОбъекта.КоличествоТоваров = ДанныеОбъекта.КоличествоТоваров + 1;

    СтрокаТаблицыТовары = Новый Структура;

    НаименованиеТовара = КоммерческиеПредложенияДокументыКлиентСервер.ПредставлениеНоменклатурыДляПечати(СтрокаТовары.Номенклатура, СтрокаТовары.Характеристика);

    СтрокаТаблицыТовары.Вставить("НомерСтроки", СтрокаТовары.НомерСтроки);
    СтрокаТаблицыТовары.Вставить("Номенклатура", НаименованиеТовара);
    СтрокаТаблицыТовары.Вставить("Количество", СтрокаТовары.Количество);
    СтрокаТаблицыТовары.Вставить("ЕдиницаИзмерения", СтрокаТовары.ЕдиницаИзмерения);
    СтрокаТаблицыТовары.Вставить("Цена", Формат(СтрокаТовары.Цена,"ЧДЦ=2; ЧРД=."));
    СтрокаТаблицыТовары.Вставить("СуммаСНДС", Формат(СтрокаТовары.СуммаСНДС,"ЧДЦ=2; ЧРД=."));
    СтрокаТаблицыТовары.Вставить("СуммаСкидки", Формат(СтрокаТовары.СуммаСкидки,"ЧДЦ=2; ЧРД=."));
    СтрокаТаблицыТовары.Вставить("СрокПоставки", КоммерческиеПредложенияДокументыКлиентСервер.СрокПоставкиСтрокой(ДанныеШапки.ВариантУказанияСрокаПоставки,
    СтрокаТовары.СрокПоставки));

    КоммерческиеПредложенияДокументыПереопределяемый.ДополнитьДанныеОбъектаДляПечати(СтрокаТаблицыТовары, СтрокаТовары, ДанныеОбъекта);

    ДанныеОбъекта.Товары.Добавить(СтрокаТаблицыТовары);

    КонецЦикла;

    #КонецОбласти

    #Область ЗаполнениеДанныхОбъекта

    ПредставлениеСуммДокумента = КоммерческиеПредложенияДокументы.ПредставлениеСуммДокументаДляПечати(ДанныеШапки,
    ДанныеОбъекта.СуммаВсего,
    ДанныеОбъекта.СуммаВсегоНДС,
    ДанныеОбъекта.КоличествоТоваров);

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

    #КонецОбласти

    Возврат ДанныеОбъекта;

    КонецФункции
    Функция ПредставлениеКлиента(Клиент, Контрагент)

    Возврат КоммерческиеПредложенияДокументы.ПредставлениеПартнераКонтрагента(Клиент, Контрагент);

    КонецФункции
    Функция КонтактнаяИнформацияПредложения(ДанныеОбъекта)

    МассивСтрок = Новый Массив;

    Если Не ПустаяСтрока(ДанныеОбъекта.АдресОрганизации) Тогда
    МассивСтрок.Добавить(ДанныеОбъекта.АдресОрганизации);
    КонецЕсли;

    Если Не ПустаяСтрока(ДанныеОбъекта.ТелефонОрганизации) Тогда
    МассивСтрок.Добавить(ДанныеОбъекта.ТелефонОрганизации);
    КонецЕсли;

    Если Не ПустаяСтрока(ДанныеОбъекта.АдресЭлектроннойПочтыМенеджера) Тогда
    МассивСтрок.Добавить(ДанныеОбъекта.АдресЭлектроннойПочтыМенеджера);
    ИначеЕсли Не ПустаяСтрока(ДанныеОбъекта.АдресЭлектроннойПочтыОрганизации) Тогда
    МассивСтрок.Добавить(ДанныеОбъекта.АдресЭлектроннойПочтыОрганизации);
    КонецЕсли;

    Возврат СтрСоединить(МассивСтрок, Символы.ПС);

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

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

    УстановитьПривилегированныйРежим(Истина);

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

    ДанныеДляПечати = ДанныеДляПечати(МассивОбъектов, ОбъектыПечати, ПараметрыПечати);

    ДанныеШапки = ДанныеДляПечати.РезультатПоШапке.Выбрать(); // ВыборкаИзРезультатаЗапроса
    ТаблицаТовары = ДанныеДляПечати.РезультатПоТоварам.Выгрузить(); // ТаблицаЗначений

    ТаблицаТоварыДокумента = Новый ТаблицаЗначений;
    Для Каждого КолонкаТаблицыЗначений Из ТаблицаТовары.Колонки Цикл
    ТаблицаТоварыДокумента.Колонки.Добавить(КолонкаТаблицыЗначений.Имя, КолонкаТаблицыЗначений.ТипЗначения);
    КонецЦикла;

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

    Пока ДанныеШапки.Следующий() Цикл

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

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

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

    ПараметрыПоиска = Новый Структура;
    ПараметрыПоиска.Вставить("Ссылка", ДанныеШапки.Ссылка);

    НайденныеСтроки = ТаблицаТовары.НайтиСтроки(ПараметрыПоиска);

    Для Каждого НайденнаяСтрока Из НайденныеСтроки Цикл
    НоваяСтрока = ТаблицаТоварыДокумента.Добавить();
    ЗаполнитьЗначенияСвойств(НоваяСтрока, НайденнаяСтрока);
    КонецЦикла;

    ДанныеОбъекта = ДанныеОбъектаПоДаннымДляПечати(ДанныеШапки, ТаблицаТоварыДокумента);
    ЗаполнитьТабличныйДокументКоммерческоеПредложениеКлиенту(ТабличныйДокумент, ДанныеОбъекта, ПараметрыПечати);

    УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, НомерСтрокиНачало, ОбъектыПечати, ДанныеШапки.Ссылка);

    КонецЦикла;

    Возврат ТабличныйДокумент;

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

    Процедура ЗаполнитьТабличныйДокументКоммерческоеПредложениеКлиенту(ТабличныйДокумент, ДанныеОбъекта, ПараметрыПечати)

    Макет = УправлениеПечатью.МакетПечатнойФормы("Документ.КоммерческоеПредложениеКлиенту.ПФ_MXL_КоммерческоеПредложениеКлиенту");
    // Макет = ПолучитьМакет("Кп");

    Если ПараметрыПечати.Свойство("ОтображатьСкидки")
    И Не ПараметрыПечати.ОтображатьСкидки Тогда

    // Если ДанныеОбъекта.ВариантУказанияСрокаПоставки = Перечисления.ВариантыСроковПоставкиКоммерческихПредложений.НеУказывается Тогда
    ПостфиксСтрок = ";
    //Иначе
    // ПостфиксСтрок = "СрокПоставки";
    //КонецЕсли;
    //
    Иначе

    //Если ДанныеОбъекта.ВариантУказанияСрокаПоставки = Перечисления.ВариантыСроковПоставкиКоммерческихПредложений.НеУказывается Тогда
    // ПостфиксСтрок = "Скидка";
    //Иначе
    ПостфиксСтрок = "СрокПоставкиСкидка";
    //КонецЕсли;

    КонецЕсли;

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

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

    КоммерческиеПредложенияДокументыПереопределяемый.ПриФормированииЗаголовкаПечатнойФормы(Макет, ОбластьЗаголовок, ДанныеОбъекта);

    ДополнительныеПараметрыВывода = Неопределено;

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

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

    ОбластьПредлагаемОзнакомиться.Параметры.Заполнить(ДанныеОбъекта);
    ТабличныйДокумент.Вывести(ОбластьПредлагаемОзнакомиться);

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

    Для Каждого СтрокаТовары Из ДанныеОбъекта.Товары Цикл

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

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

    КонецЦикла;

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

    ТабличныйДокумент.Вывести(ОбластьПустаяСтрокаТонкая);

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

    Если Не ПустаяСтрока(ДанныеОбъекта.УсловияПоставкиПредставление) Тогда

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

    КонецЕсли;

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