Функция СгенерироватьДокументБСП(Ссылка,ИмяМакета) Экспорт
ДанныеМакета = ПолучитьДанныеМакета(ИмяМакета);
ОфисныеДокументы = Новый Соответствие;
АдресХранилищаОфисныйДокумент = СоздатьДокументOfficeOpenXML(Ссылка, ДанныеМакета, ИмяМакета);
докбин= Новый ХранилищеЗначения( ПолучитьИзВременногоХранилища(АдресХранилищаОфисныйДокумент) );
фф=докбин.Получить();
возврат фф;
КонецФункции
функция СоздатьДокументOfficeOpenXML(Ссылка, ДанныеМакетов, ИмяМакета)
//Тестовые данные, могут быть получены ранее в другой функции или в этой функции
ДанныеОбъекта = Новый Структура;
ДанныеОбъекта.Вставить("Кому", "ООО НАША ОРГАНИЗАЦИЯ");
ТипМакета = ДанныеМакетов.ТипыМакетов[ИмяМакета];
ДвоичныеДанныеМакета = ДанныеМакетов.ДвоичныеДанныеМакетов;
Области = ДанныеМакетов.ОписаниеОбластей;
Макет = УправлениеПечатью.ИнициализироватьМакетОфисногоДокумента(ДвоичныеДанныеМакета[ИмяМакета],ТипМакета,
ИмяМакета);
Если Макет = Неопределено Тогда
Возврат "";
КонецЕсли;
ЗакрытьОкноПечатнойформы = Ложь;
Попытка
ПечатнаяФорма = УправлениеПечатью.ИнициализироватьПечатнуюФорму(ТипМакета, Макет.НастройкиСтраницыМакета,
Макет);
АдресХранилищаПечатнойФормы = "";
Если ПечатнаяФорма = Неопределено Тогда
УправлениеПечатью.ОчиститьСсылки(Макет);
Возврат "";
КонецЕсли;
// Вывод верхней части документа - обычная область с параметрами.
Область = УправлениеПечатью.ОбластьМакета(Макет, Области[ИмяМакета]["Шапка"]);
УправлениеПечатью.ПрисоединитьОбластьИЗаполнитьПараметры(ПечатнаяФорма, Область, ДанныеОбъекта);
АдресХранилищаПечатнойФормы = УправлениеПечатью.СформироватьДокумент(ПечатнаяФорма);
Исключение
ОбщегоНазначения.СообщитьПользователю(КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
ЗакрытьОкноПечатнойФормы = Истина;
Возврат "";
КонецПопытки;
УправлениеПечатью.ОчиститьСсылки(ПечатнаяФорма, ЗакрытьОкноПечатнойФормы);
УправлениеПечатью.ОчиститьСсылки(Макет);
Возврат АдресХранилищаПечатнойФормы;
Конецфункции
функция ПолучитьДанныеМакета(Знач ИмяМакета)
ОписаниеОбластей = Новый Соответствие;
ДвоичныеДанныеМакетов = Новый Соответствие;
ТипыМакетов = Новый Соответствие;
ДвоичныеДанныеМакетов.Вставить(ИмяМакета, ПолучитьМакет(ИмяМакета));
ОписаниеОбластей.Вставить(ИмяМакета, ОписаниеОбластейМакетаОфисногоДокумента());
Макет = Новый Структура;
Макет.Вставить("ОписаниеОбластей", ОписаниеОбластей);
Макет.Вставить("ДвоичныеДанныеМакетов", ДвоичныеДанныеМакетов);
Макет.Вставить("ТипыМакетов", ТипыМакетов);
Макет.Вставить("ЛокальныйКаталогФайловПечати", Неопределено);
Если НЕ Макет.Свойство("ТипыМакетов") Тогда
Макет.Макеты.Вставить("ТипыМакетов", Новый Соответствие);
КонецЕсли;
Возврат Макет;
Конецфункции
функция ОписаниеОбластейМакетаОфисногоДокумента()
ОписаниеОбластей = Новый Структура;
УправлениеПечатью.ДобавитьОписаниеОбласти(ОписаниеОбластей, "Шапка", "Общая");
Возврат ОписаниеОбластей;
Конецфункции