Закажите бесплатный расчет стоимости вашей задачи по 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 будем расставлять закладки. С закладками работать приятней и быстрей.

Если вы только начинаете программировать в 1С или просто хотите систематизировать свои знания - попробуйте Школу программирования 1С нашего друга Владимира Милькина. Пошаговые и понятные уроки даже для новичка с поддержкой учителя.
Попробуйте бесплатно по ссылке >>

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

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

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

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

Если Вы начинаете изучать 1С программирование, рекомендуем наш бесплатный курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):

К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.

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

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

Комментариев: 22 на “Печатная форма в формате 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=»Текст который мы выводим в выделенный участок «;

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

      Ответить

      • Fnd = Word.ActiveDocument().Range().Find;
        Fnd.ClearFormatting();

        Fnd.Execute(«{НомерДог}»,,,,,,-1,,, СокрЛП(Номер), 2);
        Fnd.Execute(«{ДатаДок}»,,,,,,-1,,, формат(Дата, «Д(0)ДДММММГГГГ»), 2);

        Ответить

  7. Подскажите как вывести шаблон на двухстороннюю печать?

    Ответить

  8. А как вывести на такой макет табличную часть документа? Подскажите,если можно.

    Ответить

  9. Есть ещё вариант заполнения на сервере https://infostart.ru/public/675307/

    Ответить

  10. Здравствуйте, такой вопрос:
    А, как в первом варианте (с закладками) поменять шрифт?

    Ответить

  11. Джентльмены, Active Document в контексте сервера не доступен-используйте второй вариант, не забывая о том, что нужно программно правильно закрывать приложение.

    Ответить

  12. Доброго дня! А как вывести таблицу из документа в ВПФ Word?

    Ответить

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

Ваш адрес email не будет опубликован.