Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
17 апр 2024, 01:15

Работа с Active document

Автор Новенькая, 22 дек 2014, 09:12

0 Пользователей и 1 гость просматривают эту тему.

Новенькая

Подскажите, пожалуйста, как вывести в цикле макет в одном документе Word, для каждого сотрудника с новой страницы. Печатаю форму из документа "Кадровое перемещение организаций", для одного сотрудника все гуд, а вот когда их несколько - выводится только на одного.


Макет = ПолучитьМакет("Макет2");
    MSWord = Макет.Получить();
    MSWord.Content.Copy();
     
    //ВыборкаДляШапки = СформироватьЗапросДляПечати("ПоРеквизитамДокумента").Выбрать();

    ВыборкаРаботники = СформироватьЗапросДляПечати("ПоТабличнойЧастиДокумента").Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    Пока ВыборкаРаботники.Следующий() Цикл
       
        ВложеннаяВыборка = ВыборкаРаботники.Выбрать();
        ВложеннаяВыборка.Следующий();
       
        Попытка
            Документ= MSWord.Range(0,0);
            Документ.Paste();
            Документ = MSWord.Application.Documents(1);
            Документ.Activate();
           
            // Получить объект, который будем использовать для поиска и замены.

            Замена = Документ.Content.Find;

            // Заменить заранее определенные ключевые конструкции на требуемый текст.

            Замена.Execute("#НомерДоговора"        , Ложь, Истина, Ложь, , , Истина, , Ложь, СокрЛП(ВложеннаяВыборка.НомерДоговора), 2);

            //Замена.Execute("#ДатаДоговора"        , Ложь, Истина, Ложь, , , Истина, , Ложь, Формат(СсылкаНаОбъект.Дата, "ДФ='дд ММММ гггг'") + "г.", 2);

          //......


            MSWord.Application.Visible = Истина;                         
            MSWord.Activate();
           

        Исключение
            // Если произойдет ошибка, выводятся данные об ошибке и объект закрывается.

            Сообщить(ОписаниеОшибки());
            MSWord.Application.Quit();
        КонецПопытки;
    КонецЦикла;

freez1301

запишите макрос, в котором сделайте руками разрыв страницы в ворде. Посмотрите что там записалось в макросе и оттуда уже копи паст в вашу процедуру

Новенькая

Цитата: freez1301 от 22 дек 2014, 10:20
запишите макрос, в котором сделайте руками разрыв страницы в ворде. Посмотрите что там записалось в макросе и оттуда уже копи паст в вашу процедуру

Я пробовала сделать нечто подобное:

    Если Счетчик < ВыборкаРаботники.Количество() тогда
         
          MSWord.Application.Selection.Paste();
          MSWord.Application.Selection.InsertBreak(7); // отвечает за разрыв
    КонецЕсли;
    Счетчик = Счетчик + 1;
он разрыв делает, но поля не заполняются, и бесконечно количество страниц формируется....

freez1301

а что если после каждой замены - сохранять документ, затем вставлять разрыв без условий?

Новенькая

Цитата: freez1301 от 22 дек 2014, 12:59
а что если после каждой замены - сохранять документ, затем вставлять разрыв без условий?
Неочень поняла, как его сохранять( не могли бы вы пример привести?

freez1301


Liones23

А как указать путь сохранения?
ActiveDocuments.Save(<Путь>);?

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск