Доброго всем времени суток!

Недавно столкнулся со следующй задачей, может многоопытные мне подскажут куда копать. Решил я активно юзать бсп, и все было хорошо и замечательно но возникло несколько вопросов. Конкретно следующий, раньше я пользовался ВПФ и все в них просто и понятно, если перед запуском отчета нужна была форма с выбором некоторых значений то в ВПФ это реализуется легко и просто, а вот как такое сделать используя команды печати в БСП. Не теоретически понятно, что нужно указать свой менеджер и обработчик в командах печати, но в документации БСП таких примеров нету, пока я для скорости работы сделал клиенту отчет на ВПФ, но хотелось бы перенести эти печатные формы в расширение для клиента и вот тут я встрял ибо решительно непонятно как это сделать, а на эксперименты нет времени ибо сроки. Есть у кого наработки или подсказки как это сделать?
---
В общем закончив штопать отчетные формочки клиенту с помощью ВПФ, таки решил сесть и разобраться с вопросом как же реализовывать дополнительную форму в расширении с помощью БСП, почитав внимательно документацию нашел там следующее
В отдельных случаях для формирования некоторых печатных форм может потребоваться клиентский контекст. Например, для запроса дополнительных параметров печатной формы у пользователя непосредственно перед печатью. В таких случаях механизм формирования печатной формы необходимо размещать в клиентском модуле, а при описании команды печати в процедуре ДобавитьКомандыПечати использовать параметр Обработчик для передачи управления в этот модуль.

Решение оказалось на диво простое

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

Ну и соответсвенно в коде основной формы отчета размещаем

```1c
    Функция ОткрытьФормуМоегоОтчета(ПараметрыПечати) Экспорт
    ПараметрыПечати= Новый Структура;
    ПараметрыПечати.Вставить("ПараметрыПечати",ПараметрыПечати);
    ОткрытьФорму("Отчет.МЭС_ОтчетТестовый.Форма.ФормаНекихПараметров",ПараметрыПечати);
    КонецФункции
```

Как вариант можно сделать эту функцию в общем модуле и обращаться к ней, но тут как кому удобно.

И чуть не забыл при использовании клиентского контекста передается только структура в которой и хранится все, у меня это честно выдранное из текста по БСП "ПараметрыПечати", там же мы получаем документы для печати ПараметрыПечати.ОбъектыПечати

И все заработало,спасибо тем кто захотел помочь.
---
Есть у когоА ты понимаешь различия подсистем БСП "Печать" и "Подключаемые команды"? Или "на эксперименты нет времени ибо сроки" даже для понимания?
---
Года 4 назад делал для своих целей на БСП 3.1.4. Ничего особо сложного там нет, на моей памяти...
---
Ну согласен, только если в ВПФ достаточно создать форму и в Использовании указать ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыОткрытиеФормы() то вот как это задействовать в БСП мне не совсем понятно. Если бы мне нужно было просто создать открытие формы отчета по кнопке с выпадающим меню то я бы использовал подключаемые команды и все было бы прекрасно. Но мне надо встроить в уже существующий набор команд печати, а вот здесь я поплыл.
---
Команда печати - точно такая же команда. И она, как и любая другая подключаемая команда, тоже умеет играть в "клиентский вызов".
---
Ну теоретически понятно что нужно в КомандаПечати.Менеджер указать "Отчет.МойОтчет" а после в КомандаПечати.Обработчик указать экспортную процедуру менеджера отчета. Теоретически, а вот дабы не экспериментировать хотелось бы пример посмотреть:)
---
Эксперименты - наше всё! Только на них и учимся...

PS. Менеджер отчета тут вообще ни при чём.
---
А вот тут не понял, то есть экспортную процедуру вызова надо размещать в модуле формы отчета? Если это так, тогда понятно где я ошибся.
---
Ну в общем то да, пробежался глазами по описанию параметров команд печати, там ясно указано что можно вызывать обработчик из модуля основной формы. Как то я пропустил сей момент.
---
теоретически понятноЯ, пожалуй, еще раз спрошу про понимание отличий работы подсистем "Печать" и "Подключаемые команды"
---
В общем закончив штопать отчетные формочки клиенту с помощью ВПФ, таки решил сесть и разобраться с вопросом как же реализовывать дополнительную форму в расширении с помощью БСП, почитав внимательно документацию нашел там следующее
В отдельных случаях для формирования некоторых печатных форм может потребоваться клиентский контекст. Например, для запроса дополнительных параметров печатной формы у пользователя непосредственно перед печатью. В таких случаях механизм формирования печатной формы необходимо размещать в клиентском модуле, а при описании команды печати в процедуре ДобавитьКомандыПечати использовать параметр Обработчик для передачи управления в этот модуль.

Решение оказалось на диво простое

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

Ну и соответсвенно в коде основной формы отчета размещаем

```1c
    Функция ОткрытьФормуМоегоОтчета(ПараметрыПечати) Экспорт
    ПараметрыПечати= Новый Структура;
    ПараметрыПечати.Вставить("ПараметрыПечати",ПараметрыПечати);
    ОткрытьФорму("Отчет.МЭС_ОтчетТестовый.Форма.ФормаНекихПараметров",ПараметрыПечати);
    КонецФункции
```

Как вариант можно сделать эту функцию в общем модуле и обращаться к ней, но тут как кому удобно.

И чуть не забыл при использовании клиентского контекста передается только структура в которой и хранится все, у меня это честно выдранное из текста по БСП "ПараметрыПечати", там же мы получаем документы для печати ПараметрыПечати.ОбъектыПечати

И все заработало,спасибо тем кто захотел помочь.
---
Сам себя не похвалишь - никто не похвалит! ))

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