(9) В расширении это ещё легче сделать.
Примерно так:
1) При добавлении команды печати в процедуре ДобавитьКомандыПечати(КомандыПечати), в строке нужной команды указываете функцию общего клиентского модуля, в которой будете открывать общую форму выбора периода. (по умолчанию в качестве обработчика ставится что то типа "УправлениеПечатьюБЗККлиент.ВыполнитьКомандуПечати").
КомандаПечати.Обработчик = <ИмяОбщегоКлиентскогоМодуля>.<ИмяФункцииОткрытияФормыВыбораПериода>;
2) В общем клиентском модуле делаем функции, которые будут вызваны в качестве обработчика команды печати (что то типа такого):
Функция <ИмяФункцииОткрытияФормыВыбораПериода>(КомандаПечати) Экспорт
// Сохраняем команду печати, для передаяи в оповещение
ПараметрыОповещения = Новый Массив;
ПараметрыОповещения.Добавить(КомандаПечати);
Оповещение = Новый ОписаниеОповещения("<ИмяФункцииОткрытияФормыВыбораПериодаОбработкаОповещения>", ЭтотОбъект,ПараметрыОповещения);
ОткрытьФорму("ОбщаяФорма.ВыборПериода", , , , , , Оповещение, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецФункции
Процедура <ИмяФункцииОткрытияФормыВыбораПериодаОбработкаОповещения>(Результат, Параметры) Экспорт
//Восстанавливаем параметры команды
КомандаПечати = Параметры[0];
//Результат - структура с полем "Период"
Если Результат <> Неопределено Тогда
КомандаПечати.ДополнительныеПараметры.Вставить("Период", Результат.Период);
КонецЕсли;
УправлениеПечатьюБЗККлиент.ВыполнитьКомандуПечати(КомандаПечати);
КонецПроцедуры
3) В процедуре "Печать" модуля менеджера объекта, наши дополнительные параметры будут переданы в "ПараметрыПечати" (ПараметрыПечати.ДополнительныеПараметры.Свойство("Период")).
Т.е. эти параметры будут доступны в этом параметре:
Процедура Печать(МассивОбъектов,
ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт