```1c
    Функция СведенияОВнешнейОбработке() Экспорт

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

    ТаблицаКоманд = ПолучитьТаблицуКоманд();

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

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

    КонецФункции // СведенияОВнешнейОбработке()()

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

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

    Возврат Команды;
    КонецФункции

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

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

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

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

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

    КонецПроцедуры // Печать()
```

Не догоняю как правильно сделать чтобы печатная форма запускалась с двух команд ( одна с факсимиле, другая без) как добавить еще одну команду?
---
Короче те-же грабли, прочитайте комментарии в модуле! И ничего не меняйте!
---
Ну во первых следует использовать БСП:

```1c
    Функция СведенияОВнешнейОбработке() Экспорт

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

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

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

   КодЯзыкаПечать = Локализация.ПолучитьЯзыкФормированияПечатныхФорм();

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

   // параметры отправки печатных форм по электронной почте
   УправлениеНебольшойФирмойСервер.ЗаполнитьПараметрыОтправки(ПараметрыВывода.ПараметрыОтправки, МассивОбъектов, КоллекцияПечатныхФорм);

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

Показать полностью
---
В списке при выборе печати будет (ДоговорФаксимиле или просто Договор)
---
ну?
---
ну так (ДоговорФаксимиле или просто Договор) и есть Форма1 и Форма2, разве нет ))
---
(ДоговорФаксимиле или просто Договор) вам остается заменить идентификаторы и представления на свои, и функцию формирования таб документа свою указать...
---
я думал форма 1 и форма 2 это печатные формы
---
блин, ну разве по коду непонятно, что Форма1 это идентификатор команды а "Форма 1" это ее представление, команды 2? как вы сделаете в процедуре "Печать" выбирать вам можно вызывать одну и туже функция формирования таб документ только добавить в нее 4 параметр "ЕстьФаксимиле(булево)" и внутри уже в зависимости от значения выводить его или нет

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

Можете сравнить с моим кодом? Я что-то явно не так делаю

```1c
    Функция СведенияОВнешнейОбработке() Экспорт

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

    ТаблицаКоманд = ПолучитьТаблицуКоманд();

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

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

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

    КонецФункции // СведенияОВнешнейОбработке()()

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

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

    Возврат Команды;
    КонецФункции

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

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

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

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

    //КодЯзыкаПечать = Локализация.ПолучитьЯзыкФормированияПечатныхФорм();

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

    // параметры отправки печатных форм по электронной почте
    //УправлениеНебольшойФирмойСервер.ЗаполнитьПараметрыОтправки(ПараметрыВывода.ПараметрыОтправки, МассивОбъектов, КоллекцияПечатныхФорм);

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

    КонецПроцедуры // Печать()

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

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

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

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

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

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

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

Это два!
---
Все равно не работает, нет двух команд, так и осталась только одна и ошибку выдает почему-то
---
скинь обработку сюда
---
Вот
---
Короче те-же грабли, прочитайте комментарии в модуле! И ничего не меняйте!
---
Спасибо, появились команды, теперь понял в чем ошибка была)
---
практика хорошее дело, но мат часть никто не отменял ))