|
Печать из двух макетов в одном word-файле | ☑ | ||
---|---|---|---|---|
0
fdv_83
16.03.23
✎
13:51
|
Здравствуйте. Имеется команда печати документа "Кадровые изменения". Для каждой строки документа при печати открывается свой файл Word, причём в зависимости от условия используются 2 двоичных макета. Подскажите, пожалуйста, как сделать так, чтобы печать происходила в один документ word. Код прилагаю:
&НаКлиенте Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) СтруктураДокумента = ПолучитьСтруктуруДокументаНаСервере(ПараметрКоманды); Для ц = 0 По СтруктураДокумента.Количество() - 1 Цикл Попытка ПараметрыДокумента = СтруктураДокумента.Получить(ц); Word = Новый COMОбъект("Word.Application" ); //Получение макета и каталога временных файлов Макет = МакетПолучить(?(ПараметрыДокумента.ДолжностьНовая <> ПараметрыДокумента.Должность, "Изменение должности", "")); //Создаем документ MS Word Если ЗначениеЗаполнено(Макет) Тогда newDoc = Word.Documents.ADD(Макет); //Замена опорных фраз данными из реквизитов документа Для Каждого Параметр Из ПараметрыДокумента Цикл Замена = newDoc.Content.Find; Если СтрДлина(СокрЛП(Строка(Параметр.Значение))) > 255 Тогда ВыполнитьЗаменуСОграничениемДлиныСтроки(newDoc, "["+Параметр.Ключ+"]", СокрЛП(Строка(Параметр.Значение))); Иначе Замена.Execute("["+Параметр.Ключ+"]", , , , , , , , , СокрЛП(Строка(Параметр.Значение)), 2); КонецЕсли; КонецЦикла; //Отображение документа Word.Visible = Истина; //Удаление временных файлов УдалитьФайлы(Макет); КонецЕсли; Исключение Сообщение = Новый СообщениеПользователю; Сообщение.Текст = "Ошибка при запуске приложения: " + ОписаниеОшибки(); Сообщение.Сообщить(); КонецПопытки; КонецЦикла; КонецПроцедуры &НаКлиенте Функция МакетПолучить(НаименованиеМакета = "") ИмяФайла = ""; Файл = ПолучитьМакетНаСервере(НаименованиеМакета); ИмяФайла = ПолучитьИмяВременногоФайла(".doc"); Файл.Записать(ИмяФайла); Возврат ИмяФайла; КонецФункции &НаСервере Функция ПолучитьМакетНаСервере(НаименованиеМакета) Если НаименованиеМакета = "Изменение должности" Тогда Возврат Документы.КадровыеИзменения.ПолучитьМакет("ДополненияКТрудовымДоговорамWordДвоичныеДанныеИзмененияДолжностей"); Иначе Возврат Документы.КадровыеИзменения.ПолучитьМакет("ДополненияКТрудовымДоговорамWordДвоичныеДанныеИзмененияОкладов"); КонецЕсли; КонецФункции |
|||
1
mikecool
16.03.23
✎
14:11
|
newDoc = Word.Documents.ADD(Макет); вынести за цикл
в цикле добавлять разрыв, если надо |
|||
2
fdv_83
16.03.23
✎
14:14
|
(1) Но тут проблема в том, что мне нужно использовать 1 из 2-х макетов, по условию. Это я не понимаю, как сделать.
|
|||
3
mikecool
16.03.23
✎
14:16
|
тогда выводи во временный, потом программный копи-паст в результат
|
|||
4
fdv_83
16.03.23
✎
14:38
|
(3) Можете подсказать команды копи-паст?
|
|||
5
Aleksey
16.03.23
✎
14:52
|
(4) включи запись макроса скопируй, вставь и посмотри команды
|
|||
6
Aleksey
16.03.23
✎
14:54
|
||||
7
Aleksey
16.03.23
✎
14:55
|
ну или - всё уэе украдено до нас https://forum.infostart.ru/forum9/topic172178/
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |