не могу наладить печатную форму выдает ошибку

```1c
    {(295, 36)}: Неверные параметры "УпаковкиНоменклатуры.ПустаяСсылка"
    КОГДА Товары.Упаковка = ЗНАЧЕНИЕ(<<?>>УпаковкиНоменклатуры.ПустаяСсылка)
    {ВнешняяОбработка.ПечатнаяФормуКП.МодульОбъекта(495)}:ПакетРезультатовЗапроса = Запрос.ВыполнитьПакет();
    {ВнешняяОбработка.ПечатнаяФормуКП.МодульОбъекта(48)}:ДанныеДляПечати = ПолучитьДанныеДляПечати(МассивОбъектов);
    {ВнешняяОбработка.ПечатнаяФормуКП.МодульОбъекта(36)}:УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "ВПФКоммерческоеПредложение", НСтр("ru = 'Коммерческое предложение РИ (дополнительная печатная форма)'"), СформироватьПечатнуюФормуКоммерческогоПредложения(МассивОбъектов, ОбъектыПечати));
    {ОбщийМодуль.УправлениеПечатью.Модуль(1653)}:ВнешняяОбработкаОбъект.Печать(
    {ОбщаяФорма.ПечатьДокументов.Форма(533)}:УправлениеПечатью.ПечатьПоВнешнемуИсточнику(
    {ОбщаяФорма.ПечатьДокументов.Форма(49)}:КоллекцияПечатныхФорм = СформироватьПечатныеФормы(Параметры.ИменаМакетов, Отказ);
    {ОбщийМодуль.УправлениеПечатьюСлужебныйКлиент.Модуль(236)}:ОткрытьФорму("ОбщаяФорма.ПечатьДокументов", ПараметрыОткрытия, Форма);
    {ОбщийМодуль.УправлениеПечатьюКлиент.Модуль(143)}:ВыполнитьОбработкуОповещения(ОписаниеПроцедурыЗавершения, СписокДокументов);
    {ОбщийМодуль.УправлениеПечатьюСлужебныйКлиент.Модуль(32)}:УправлениеПечатьюКлиент.ПроверитьПроведенностьДокументов(ОписаниеОповещения, ОбъектыНазначения, Форма);
    {ОбщийМодуль.ДополнительныеОтчетыИОбработкиКлиент.Модуль(482)}:МодульУправлениеПечатьюСлужебныйКлиент.ВыполнитьОткрытиеПечатнойФормы(
    {ОбщийМодуль.ДополнительныеОтчетыИОбработкиКлиент.Модуль(260)}:ВыполнитьОткрытиеПечатнойФормы(ВыполняемаяКоманда, Форма, ВыполняемаяКоманда.ОбъектыПечати);
    {ОбщийМодуль.УправлениеПечатьюСлужебныйКлиент.Модуль(95)}:МодульДополнительныеОтчетыИОбработкиКлиент.ВыполнитьНазначаемуюКомандуПечати(ОписаниеКоманды, Форма);
    {ОбщийМодуль.УправлениеПечатьюСлужебныйКлиент.Модуль(20)}:ВыполнитьПодключаемуюКомандуПечатиЗавершение(Истина, ПараметрыВыполнения);
    {ОбщийМодуль.ПодключаемыеКомандыКлиент.Модуль(257)}:ВыполнитьОбработкуОповещения(Обработчик, ПараметрКоманды);
    {ОбщийМодуль.ПодключаемыеКомандыКлиент.Модуль(64)}:ПродолжитьВыполнениеКоманды(ПараметрыВыполнения);
    {Документ.КоммерческоеПредложениеКлиенту.Форма.ФормаДокумента.Форма(1394)}:ПодключаемыеКомандыКлиент.ВыполнитьКоманду(ЭтотОбъект, Команда, Объект);

    по причине:
    {(295, 36)}: Неверные параметры "УпаковкиНоменклатуры.ПустаяСсылка"
    КОГДА Товары.Упаковка = ЗНАЧЕНИЕ(<<?>>УпаковкиНоменклатуры.ПустаяСсылка)
```
---
вопрос решен
---
укажите что это справочники или ...
---
Справочник1.Ссылка = значение(Справочник.Справочник1.ПустаяСсылка)

так попробовать
---
КОГДА Товары.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиНоменклатуры.ПустаяСсылка)
---
не помогло
---
В КА2 это скорей всего должно быть Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка
---
{(12, 10)}: Поле не найдено "Таблица.КоличествоУпаковок"
Таблица.<<?>>КоличествоУпаковок КАК КоличествоУпаковок,
{ВнешняяОбработка.ПечатнаяФормуКП.МодульОбъекта(495)}:ПакетРезультатовЗапроса = Запрос.ВыполнитьПакет();
{ВнешняяОбработка.ПечатнаяФормуКП.МодульОбъекта(48)}:ДанныеДляПечати = ПолучитьДанныеДляПечати(МассивОбъектов);
{ВнешняяОбработка.ПечатнаяФормуКП.МодульОбъекта(36)}:УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "ВПФКоммерческоеПредложение", НСтр("ru = 'Коммерческое предложение РИ (дополнительная печатная форма)'"), СформироватьПечатнуюФормуКоммерческогоПредложения(МассивОбъектов, ОбъектыПечати));
{ОбщийМодуль.УправлениеПечатью.Модуль(1653)}:ВнешняяОбработкаОбъект.Печать(
{ОбщаяФорма.ПечатьДокументов.Форма(533)}:УправлениеПечатью.ПечатьПоВнешнемуИсточнику(
{ОбщаяФорма.ПечатьДокументов.Форма(49)}:КоллекцияПечатныхФорм = СформироватьПечатныеФормы(Параметры.ИменаМакетов, Отказ);
{ОбщийМодуль.УправлениеПечатьюСлужебныйКлиент.Модуль(236)}:ОткрытьФорму("ОбщаяФорма.ПечатьДокументов", ПараметрыОткрытия, Форма);
{ОбщийМодуль.УправлениеПечатьюКлиент.Модуль(143)}:ВыполнитьОбработкуОповещения(ОписаниеПроцедурыЗавершения, СписокДокументов);
{ОбщийМодуль.УправлениеПечатьюСлужебныйКлиент.Модуль(32)}:УправлениеПечатьюКлиент.ПроверитьПроведенностьДокументов(ОписаниеОповещения, ОбъектыНазначения, Форма);
{ОбщийМодуль.ДополнительныеОтчетыИОбработкиКлиент.Модуль(482)}:МодульУправлениеПечатьюСлужебныйКлиент.ВыполнитьОткрытиеПечатнойФормы(
{ОбщийМодуль.ДополнительныеОтчетыИОбработкиКлиент.Модуль(260)}:ВыполнитьОткрытиеПечатнойФормы(ВыполняемаяКоманда, Форма, ВыполняемаяКоманда.ОбъектыПечати);
{ОбщийМодуль.УправлениеПечатьюСлужебныйКлиент.Модуль(95)}:МодульДополнительныеОтчетыИОбработкиКлиент.ВыполнитьНазначаемуюКомандуПечати(ОписаниеКоманды, Форма);
{ОбщийМодуль.УправлениеПечатьюСлужебныйКлиент.Модуль(20)}:ВыполнитьПодключаемуюКомандуПечатиЗавершение(Истина, ПараметрыВыполнения);
{ОбщийМодуль.ПодключаемыеКомандыКлиент.Модуль(257)}:ВыполнитьОбработкуОповещения(Обработчик, ПараметрКоманды);
{ОбщийМодуль.ПодключаемыеКомандыКлиент.Модуль(64)}:ПродолжитьВыполнениеКоманды(ПараметрыВыполнения);
{Документ.КоммерческоеПредложениеКлиенту.Форма.ФормаДокумента.Форма(1394)}:ПодключаемыеКомандыКлиент.ВыполнитьКоманду(ЭтотОбъект, Команда, Объект);

по причине:
{(12, 10)}: Поле не найдено "Таблица.КоличествоУпаковок"
Таблица.<<?>>КоличествоУпаковок КАК КоличествоУпаковок,
---
У документа КП нет реквизита КоличествоУпаковок. Есть УдалитьКоличествоУпаковок. Значит если оно вам все-таки надо, то пишем
Таблица.Количество КАК КоличествоУпаковок,
---
не понимаю
---
все равно ошибка
---
а что не понятно? На пальцах...
Вот есть например упаковка 10шт. Тогда если количество упаковок 2, то количество будет 10*2=20
Это нужно для документов двигающих остатки. Коммерческое предложение к таким не относится и разработчики решили этот реквизит удалить в КП.
(10) Посмотрел повнимательнее... У вас там все наперекосяк. Наверно за основу брали очень старую обработку. Надо исправлять. Посмотрите в модуле менеджера КП, как сейчас формируется печатная форма. И по аналогии...
---
{ВнешняяОбработка.ПечатнаяФормуКП.МодульОбъекта(12,2)}: Процедура или функция с указанным именем не определена (ДобавитьКоманду)
 <<?>>ДобавитьКоманду(ТаблицаКоманд, НСтр("ru = 'Коммерческое предложение РИ (дополнительная печатная форма)'"), "КоммерческоеПредложение", "ВызовСерверногоМетода", Истина, "ПечатьMXL"); (Проверка: Сервер)
{ВнешняяОбработка.ПечатнаяФормуКП.МодульОбъекта(78,182)}: Процедура или функция с указанным именем не определена (СформироватьПечатнуюФормуКоммерческогоПредложения)
  УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "КоммерческоеПредложение", НСтр("ru = 'Коммерческое предложение РИ (дополнительная печатная форма)'"), <<?>>СформироватьПечатнуюФормуКоммерческогоПредложения(МассивОбъектов, ОбъектыПечати)); (Проверка: Сервер)
---
ух, в соседней ветке форума есть подобная тема подключения внешней ПФ. там и код подключения развернут.
---
я уже устал от этой формы и не знаю где я ошибся

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

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

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

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

    Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт

    НастройкиУчета = КоммерческиеПредложенияДокументы.НастройкиУчета();

    Если НастройкиУчета.НеВыводитьСкидкиВДокументахПродажи Тогда

    КомандаПечати = КомандыПечати.Добавить();
    КомандаПечати.МенеджерПечати = "Документ.КоммерческоеПредложениеКлиенту";
    КомандаПечати.Идентификатор = "КоммерческоеПредложениеКлиенту";
    КомандаПечати.Представление = НСтр("ru = 'Коммерческое предложение клиенту'");
    КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
    ДополнительныеПараметры = Новый Структура;
    ДополнительныеПараметры.Вставить("ОтображатьСкидки", Ложь);
    КомандаПечати.ДополнительныеПараметры = ДополнительныеПараметры;

    ИначеЕсли НастройкиУчета.ВыбиратьВариантВыводаСкидокПриПечатиДокументовПродажи Тогда

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

    КомандаПечати = КомандыПечати.Добавить();
    КомандаПечати.МенеджерПечати = "Документ.КоммерческоеПредложениеКлиенту";
    КомандаПечати.Идентификатор = "КоммерческоеПредложениеКлиенту";
    КомандаПечати.Представление = НСтр("ru = 'Коммерческое предложение клиенту (без скидок)'");
    КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
    ДополнительныеПараметры = Новый Структура;
    ДополнительныеПараметры.Вставить("ОтображатьСкидки", Ложь);
    КомандаПечати.ДополнительныеПараметры = ДополнительныеПараметры;

    Иначе

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

    КонецЕсли;

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

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

    КонецЕсли;
    КонецПроцедуры

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

    ТипыДанныхЭлектронныхДокументов = КоммерческиеПредложенияДокументы.ТипыДанныхЭлектронныхДокументов();

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

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

    Если СтандартнаяОбработка Тогда

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

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

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

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

    ПодготовленныеДанные.РезультатЗапросаНоменклатура = РезультатЗапроса[1];
    ПодготовленныеДанные.РезультатЗапросаХарактеристика = РезультатЗапроса[2];
    ПодготовленныеДанные.РезультатЗапросаЕдиницыИзмерения = РезультатЗапроса[3];
    ПодготовленныеДанные.РезультатЗапросаДляПолученияШтрихкодов = РезультатЗапроса[4];
    ПодготовленныеДанные.РезультатЗапросаТовары = РезультатЗапроса[5];
    ПодготовленныеДанные.РезультатЗапросаШапка = РезультатЗапроса[6];

    КонецЕсли;

    Если ПодготовленныеДанные.РезультатЗапросаШапка = Неопределено Тогда
    Возврат;
    КонецЕсли;

    ШапкаЗапроса = ПодготовленныеДанные.РезультатЗапросаШапка; // РезультатЗапроса
    ДанныеШапки = ШапкаЗапроса.Выбрать();
    ДанныеШапки.Следующий();

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

    Функция ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании) Экспорт

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    КонецЦикла;

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

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

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

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

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

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

    Иначе

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

    КонецЕсли;

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

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

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

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

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

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

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

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

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

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

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

    КонецЦикла;

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

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

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

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

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

    КонецЕсли;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    КонецЦикла;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    КонецФункции
```
---
есть шаблон подключения внешней печатки.

сейчас это лишнее Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт

вставьте измененную на свои данные в параметры регистрации

Функция СведенияОВнешнейОбработке() Экспорт //ссылается еще на одну процедуру и функцию:

ПараметрыРегистрации = Новый Структура;

// заполнение структуры
// ...

ДобавитьКоманды(ТаблицаКоманд,
"Форма Т-11а Внешняя обработка",
"ПФ_MXL_ПриказОПоощренииТ11а",
"ВызовСерверногоМетода",
Истина,
"ПечатьMXL");
ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);

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

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

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

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

    КонецПроцедуры
```
---
что я опять не так сделал ?

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

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

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

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

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

вставить надо после ТаблицаКоманд = ПолучитьТаблицуКоманд();
измените 2-й и 3-й параметры на свои.

продублирую

ДобавитьКоманды(ТаблицаКоманд,
"Форма Т-11а Внешняя обработка",
"ПФ_MXL_ПриказОПоощренииТ11а",
"ВызовСерверногоМетода",
Истина,
"ПечатьMXL");
ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);
---
так ?

```1c
    ТаблицаКоманд = ПолучитьТаблицуКоманд(ДобавитьКоманды(ТаблицаКоманд, "Форма Внешняя обработка", "ПФ_MXL_КоммерческоеПредложение1", "ВызовСерверногоМетода",Истина,"ПечатьMXL"));
```
---
результат?
---
мои полномочия на этом все. Если кто-то мог бы мне помочь чтобы это работало буду благодарен

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

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

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

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

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

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

    Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт

    НастройкиУчета = КоммерческиеПредложенияДокументы.НастройкиУчета();

    Если НастройкиУчета.НеВыводитьСкидкиВДокументахПродажи Тогда

    КомандаПечати = КомандыПечати.Добавить();
    КомандаПечати.МенеджерПечати = "Документ.КоммерческоеПредложениеКлиенту";
    КомандаПечати.Идентификатор = "КоммерческоеПредложениеКлиенту";
    КомандаПечати.Представление = НСтр("ru = 'Коммерческое предложение клиенту'");
    КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
    ДополнительныеПараметры = Новый Структура;
    ДополнительныеПараметры.Вставить("ОтображатьСкидки", Ложь);
    КомандаПечати.ДополнительныеПараметры = ДополнительныеПараметры;

    ИначеЕсли НастройкиУчета.ВыбиратьВариантВыводаСкидокПриПечатиДокументовПродажи Тогда

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

    КомандаПечати = КомандыПечати.Добавить();
    КомандаПечати.МенеджерПечати = "Документ.КоммерческоеПредложениеКлиенту";
    КомандаПечати.Идентификатор = "КоммерческоеПредложениеКлиенту";
    КомандаПечати.Представление = НСтр("ru = 'Коммерческое предложение клиенту (без скидок)'");
    КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
    ДополнительныеПараметры = Новый Структура;
    ДополнительныеПараметры.Вставить("ОтображатьСкидки", Ложь);
    КомандаПечати.ДополнительныеПараметры = ДополнительныеПараметры;

    Иначе

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

    КонецЕсли;

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

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

    КонецЕсли;
    КонецПроцедуры

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

    ТипыДанныхЭлектронныхДокументов = КоммерческиеПредложенияДокументы.ТипыДанныхЭлектронныхДокументов();

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

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

    Если СтандартнаяОбработка Тогда

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

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

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

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

    ПодготовленныеДанные.РезультатЗапросаНоменклатура = РезультатЗапроса[1];
    ПодготовленныеДанные.РезультатЗапросаХарактеристика = РезультатЗапроса[2];
    ПодготовленныеДанные.РезультатЗапросаЕдиницыИзмерения = РезультатЗапроса[3];
    ПодготовленныеДанные.РезультатЗапросаДляПолученияШтрихкодов = РезультатЗапроса[4];
    ПодготовленныеДанные.РезультатЗапросаТовары = РезультатЗапроса[5];
    ПодготовленныеДанные.РезультатЗапросаШапка = РезультатЗапроса[6];

    КонецЕсли;

    Если ПодготовленныеДанные.РезультатЗапросаШапка = Неопределено Тогда
    Возврат;
    КонецЕсли;

    ШапкаЗапроса = ПодготовленныеДанные.РезультатЗапросаШапка; // РезультатЗапроса
    ДанныеШапки = ШапкаЗапроса.Выбрать();
    ДанныеШапки.Следующий();

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

    Функция ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании) Экспорт

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    КонецЦикла;

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

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

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

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

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

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

    Иначе

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

    КонецЕсли;

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

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

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

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

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

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

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

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

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

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

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

    КонецЦикла;

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

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

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

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

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

    КонецЕсли;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    КонецЦикла;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    КонецФункции
```
---
Если кто-то мог бы мне помочь чтобы это работало буду благодарен Цену благодарности озвучите сами или мне назвать?
---
3000 в час?
я бы уже проще заплатил были бы деньги
---
"Нету ручек - нет конфетки". Найдите лучше деньги на собственное обучение.
---
как минимум привести в соответствие
    ДобавитьКоманды(ТаблицаКоманд, "Форма Внешняя обработка","ПФ_MXL_КоммерческоеПредложение1","ВызовСерверногоМетода",Истина,"ПечатьMXL");

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

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

    КонецЕсли;

Или ПФ_MXL_КоммерческоеПредложение1 или КоммерческоеПредложениеКлиенту везде.
---
Вот работающая внешняя печатная форма для Бухни. Попробуй использовать в качестве ориентира
---
те же самые грабли что и в ветке форума (см.выше пост).
да и нет что ли в конфигурации внешних печатных форм чтобы посмотреть как подключить ее?
---
вопрос решен
---
Сам себе лайк не поставишь - считай и жизнь зазря прошла.
---
рад, что поправил направление)
---
так лайки публикациям ставить надо