Если код привести к более типовому варианту (ниже листинг формы УФ), то будет примерно так (он должен работать во всех вариантах):
&НаКлиенте
Процедура Печать()
//*** используем каталог временных файлов ---
// задаем имя сохранения на диск
КлючУникальности = Новый УникальныйИдентификатор;
Каталог = КаталогВременныхФайлов() + КлючУникальности + "ListOZ.doc";
МакетВорд = ПолучитьМакетНаСервере(Каталог);
//*** Тут будет код, который менять не надо
мМакет = ПолучитьИзВременногоХранилища(МакетВорд);
мМакет.Записать(Каталог);
// Очистим хранилище
УдалитьИзВременногоХранилища(МакетВорд);
// и перейдем к нашему файлу
ОбработкаФайла(Каталог);
//---
ЭтаФорма.Закрыть();
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
//*** Просто добавил ";" ---
Печать();
КонецПроцедуры
&НаСервере
Функция ПолучитьМакетНаСервере(Каталог)
Если ЗначениеЗаполнено(Каталог) Тогда
Попытка
ПолноеИмяФайла = Каталог;
Макет = РеквизитФормыВЗначение("Объект").ПолучитьМакет("ЛистОзнакомления");
Макет.Записать(ПолноеИмяФайла);
//*** Обработаем файл на сервере и положим его во временное хранилище
МакетНаДиске = Новый ДвоичныеДанные(ПолноеИмяФайла);
АдресФайлаВХранилище = ПоместитьВоВременноеХранилище(МакетНаДиске);
Возврат АдресФайлаВХранилище;
//---
Исключение
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Не удалось записать файл в каталог пользователя "+ОписаниеОшибки();
Сообщение.Сообщить();
Возврат Неопределено;
КонецПопытки;
Иначе
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Не указан каталог. Сохранение файла невозможно";
Сообщение.Сообщить();
Возврат Неопределено;
КонецЕсли;
КонецФункции
//*** А вот эта часть у каждого может быть своя, да и править ее малость проще будет, т.к. в другие процедуры (функции не надо будет лазить ---
&НаКлиенте
Процедура ОбработкаФайла(МакетВорд)
Попытка
ШаблонВорд = ПолучитьCOMОбъект(МакетВорд); //инициализируем COM-объект, на сервере д.б. установлен word
Исключение
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = ОписаниеОшибки();
Сообщение.Сообщить();
Возврат;
КонецПопытки;
Если ШаблонВорд = Неопределено Тогда
Возврат;
КонецЕсли;
СсылкаНаОбъект = Параметры.ОбъектыНазначения[0]; //ссылка на документ
Организация = ПолучитьОрганизацию(СсылкаНаОбъект); //приходится получать простые типы данных значений с сервера
ФИО = ПолучитьФИО(СсылкаНаОбъект);
ПОЛ = ПолучитьПол(СсылкаНаОбъект);
Год = формат(ТекущаяДата(),"ДФ=yyyy");
Selection = ШаблонВорд.Content;
Selection.Find.Execute("%Организация%", Ложь, Истина, Ложь, , , Истина, , Ложь, Организация, 2);
Selection.Find.Execute("%ФИО%", Ложь, Истина, Ложь, , , Истина, , Ложь, ФИО, 2);
Selection.Find.Execute("%Год%", Ложь, Истина, Ложь, , , Истина, , Ложь, ГОД, 2);
Если ПОЛ = "Ж" тогда
Selection.Find.Execute("%ознакомлена%", Ложь, Истина, Ложь, , , Истина, , Ложь, "ознакомлена", 2);
Selection.Find.Execute("%принял%", Ложь, Истина, Ложь, , , Истина, ,Ложь, "приняла", 2);
Иначе
Selection.Find.Execute("%ознакомлена%", Ложь, Истина, Ложь, , , Истина, , Ложь, "ознакомлен", 2);
Selection.Find.Execute("%принял%", Ложь, Истина, Ложь, , , Истина, , Ложь, "принял", 2);
КонецЕсли;
ШаблонВорд.Fields.UpDate();
ШаблонВорд.Activate();
ШаблонВорд.Application.Visible = 1; //признак показать
ШаблонВорд = "";
КонецПроцедуры
//---
//*** Остальное оставим как было ---
&НаСервере
Функция ПолучитьОрганизацию(СсылкаНаОбъект)
Возврат Строка(СсылкаНаОбъект.Организация);
КонецФункции
&НаСервере
Функция ПолучитьФИО(СсылкаНаОбъект)
Возврат Строка(СсылкаНаОбъект.Сотрудник);
КонецФункции
&НаСервере
Функция ПолучитьПол(СсылкаНаОбъект)
Если СсылкаНаОбъект.Сотрудник.ФизическоеЛицо.Пол=Перечисления.ПолФизическогоЛица.Женский тогда
Возврат "Ж";
Иначе
Возврат "М";
КонецЕсли;
КонецФункции
Показать