Закажите бесплатный расчет стоимости вашей задачи по 1С!
Перезвоним за 10 минут!

Печатная форма в формате Word из 1С 8.3 и 8.2

Рассмотрим два способа выгрузить данные из программы 1С 8.3 в Word. Эти способы можно использовать в альтернативу стандартных внутренних и внешних печатных форм 1С. Пример обработки, который описывается в статье можно скачать — здесь.

Кстати, в новой версии 1С Бухгалтерия появилась возможность настройки пользовательских шаблонов договоров, без программирования.

Выгрузка данных из 1C в шаблон Word (Active document)

Чтобы сформировать документ в формате Word, нужно сначала подготовить шаблон. А точнее создадим макет с типом «Active document», для примера во внешней обработке:

новый шаблон в 1С

Затем выбираем объект, например Microsoft Office Word 97-2003:

вставка объекта word

Откроется чистый документ Word (причем в конфигураторе).

А в документе Word будем расставлять закладки. С закладками работать приятней и быстрей.

Выбираем режим закладок и расставляем:

новая закладка в word

Прописываем такую процедуру:

Получите 267 видеоуроков по 1С бесплатно:

//получаем макет из объекта обработки
ОбработкаОбъект = РеквизитФормыВЗначение("Объект");
СсылкаМакет = ОбработкаОбъект.ПолучитьМакет("Тест");
Word = СсылкаМакет.Получить();

//открываем и активируем документ
СсылкаМакет = Word.Application.Documents(1);
СсылкаМакет.Activate();

// в метод Bookmarks передаем название "закладки"
Word.Bookmarks("Тест").Select();
//устанавливаем новое значение текста
Word.Application.Selection.TypeText("Привет, 1С 8.3! :)");

//включаем видимость приложения
СсылкаМакет.Application.Visible = Истина;

После вызова процедуры, мы получим открытый документ с таким вот сообщением:

результат выполнения кода

Создание документа Word сразу (Word.Application)

Документ Word можно создать в 1C без использования макета. Напрямую, с помощью COM объекта. Делается это не сложнее.

Пример кода:

// Создание COM
Word1C = Новый COMОбъект("Word.Application");

// Установим видимости объекта
Word1C.Visible = Истина;
// Добавим документ в приложение
Word1C.Documents.Add();
// Придаем объекту статус активности
ТекущийДокумент = Word1C.ActiveDocument();

//выводим в первый абзац наш текст, выделяем его и делаем шрифт 30 размера
ТекущийДокумент.Paragraphs(1).Range.InsertAfter("Этот файл ворд я создал из программы 1С 8.3!");
ТекущийДокумент.Paragraphs(1).Range.Font.Size = 30;
ТекущийДокумент.Paragraphs(1).Range.Font.Bold = -1;

//активируем документ
Word1C.Activate();

После запуска кода, мы видим вот такую красивую картину:

файл из ком объекта 1с

Ссылка на скачивание обработки — Выгрузка в Word.

P.S. Наша компания предоставляет услуги по настройке, доработке и комплексному внедрению 1С. Закажите бесплатный расчет стоимости вашей задачи на странице Услуги 1С или по телефону +7 (499) 350 29 00.

Остались вопросы?

Задайте ВОПРОС на нашем форуме 1С! ››

СПРОСИТЕ в комментариях!

Комментариев: 14 на “Печатная форма в формате Word из 1С 8.3 и 8.2
  1. Первый вариант можно делать не через закладки, а через DocVariable.

    Ответить

    • Спасибо за уместный комментарий 🙂

      Ответить

  2. Интересно, как отработает строчка включения видимости Word’а в клиент-серверном варианте..

    //включаем видимость приложения
    СсылкаМакет.Application.Visible = Истина;

    Видимо, где-то на сервере откроется приложение

    Ответить

    • Да, так и есть. Откроется на сервере 🙂

      Если, конечно, на сервере установлен Ворд 🙂

      Ответить

  3. А можно ли напечатать документ Word минуя открытие самого приложения Word ?

    Ответить

    • Можно, посмотрите какая функция выводит на печать.

      Проигнорируйте Word1C.Activate();
      И в конце закройте ворд, вроде бы функция Close()

      Ответить

      • Спасибо, разобрался:
        .ActiveDocument.PrintOut();
        .ActiveDocument.Close(0);
        .Quit();

        Ответить

    • Спасибо что рассказали как, буду иметь ввиду 🙂

      Ответить

  4. Как создать форму для печати в 1с, договор о добровольном соглашении, со вставкой сотрудника, заказчика и заказа?

    Ответить

    • Добрый день!

      Если у вас 1С Бухгалтерия 3.0, то можно посмотреть как это сделано в этом видео:
      https://www.youtube.com/watch?v=1zcOuCrG7Io

      Хотя в других современных программах 1С инструкция аналогичная.

      Ответить

  5. Добрый день, у меня не работает первый вариант.

    Выдает ошибку: {Форма.Форма.Форма(38)}: Ошибка при вызове метода контекста (Получить)
    Word = СсылкаМакет.Получить();
    В чем может быть дело? Не работает даже выгруженный готовый пример, ссылка на который дается в начале

    Ответить

    • Скорее всего проблема в ворде или в правах системы. Он корректно установлен? Попробуйте другую версию Ворда. Ну или на крайний случай можно проделать это на другой машине.

      Ответить

  6. Три дня мучился, а тут за пол-часа.
    Спасибо.
    Ещё вопрос, если не сложно: как выделить (или снять выделение) текста в шаблоне? Не весь параграф, а отдельный вставленный фрагмент, фио или дата.

    Ответить

    • Что то вроде этого, но это на Си Шарп:

      Object begin = 42;
      Object end = 49;
      Word.Range wordrange = worddocument.Range(ref begin, ref end);
      wordrange.Select();
      //На Рис.5. Слева выведенный текст на данном этапе
      //Меняем характеристики текста выделенного фрагмента
      wordrange.Font.Size=12;
      wordrange.Font.Color=Word.WdColor.wdColorRed;
      wordrange.Text=»Текст который мы выводим в выделенный участок «;

      Но тут смысл ясен — нужно выбрать промежуток текста в документе и присвоить ему нужные свойства.

      Ответить

Добавить комментарий:

Ваш e-mail не будет опубликован. Обязательные поля помечены *


*