Как настроить вывод данных из 1С в Word

ВНИМАНИЕ! При использовании кодов описанных ниже, уберите символ _ Давайте рассмотрим на примерах как это делается! =) Мне известно 2 способа: 1. Путем замены шаблонного текста в макете Word-а. 2. Путем вставки текста с помощью закладок в Word-е,

В первом случае сразу скажу, что длина строки передаваемая в функцию замены, довольно небольшая 255 символов, да и расстановка шаблонных выражений в макете Word занимает довольно много времени. Через процедуру Content.Find.Execute.

Во втором случае длина, насколько мне известно неограниченна, также "воськаться" с закладками намного быстрее и удобнее, чем расставлять шаблонный текст. Используя Bookmarks().S_elect(). Поэтому давайте на коде рассмотрим второй пример.

И так, для начала необходимо добавить Word макет к документу. Добавляем макет с помощью конструктора макетов указав "Active document" и выбрав соответствующий макет.

Называем его "Акт". Открываем макет в 1С-ке, ставим курсор в нужном месте, переходим в меню "Вставка" закладка нажимаем добавить закладку к примеру у меня это НарушенияТекст

Теперь кидаем на форму документа кнопку "Сформировать" и по нажатию на нее пишем код который открывает наш макет Word ищем закладку по имени и вставляет туда текст: Код 1C v 8.х

re> //инициализация часть 1 СсылкаМакет = ПолучитьМакет(Акт); MSWord = СсылкаМакет.Получить(); Попытка СсылкаМакет = MSWord.Application.Documents(1); СсылкаМакет.Activate(); //выгружаем табличную часть с нарушениями в строку часть 2 str = Новый COMОбъект(ADODB.Stream); str.Open(); СтрочкаТаблицы = ЭлементыФормы.Нарушения.ТекущиеДанные; Для Каждого СтрочкаТаблицы Из Нарушения Цикл str.WriteText( + СтрочкаТаблицы.Описание + Нарушены требования СНИПФЗГОСТ: + СтрочкаТаблицы.СНИПФЗГОСТ + Статья: + СтрочкаТаблицы.ЧастьСтатья + Символ(13),0); КонецЦикла; str.Position = 0; НарушенияТекст = str.readText(); //вставляем в закладку текст с нарушениями часть 3 MSWord.Bookmarks(НарушенияТекст).S_elect(); MSWord.Application.S_election.TypeText(НарушенияТекст); //открыть Word часть 4 СсылкаМакет.Application.Visible = Истина; СсылкаМакет.Activate(); Исключение //если ошибка Сообщить(ОписаниеОшибки()); MSWord.Application.Quit(); КонецПопытки;

Это пример вывода множества строчек из табличной части одной строкой, если нужно просто выгрузить какой-то реквизит то можно пропустить часть 2 и перейти к части 3.

Для выгрузки табличной части в форме таблицы можно использовать функцию автоформата, примеру код выгрузки табличной части документа "Предписание": Код 1C v 8.х

re> Word = MSWord.Application; Документ = Word.ActiveDocument(); //Переместиться вниз на 22 строк Word.S_election.MoveDown(,22); Документ.Paragraphs.Add(); //подготовка таблицы: Rng = Word.S_election.Range; //Формируем заголовок: Rng.I_nsertAfter(№ п/п*Установленные нарушения и меры по их устранению*Основания); Rng.I_nsertParagraphAfter(); //сама таблица СтрочкаТаблицы = ЭлементыФормы.НарушенияПредписание.ТекущиеДанные; Для Каждого СтрочкаТаблицы из НарушенияПредписание Цикл Rng.I_nsertAfter(Строка(СтрочкаТаблицы.НомерСтроки)+*+СтрочкаТаблицы.Описание + ; + СтрочкаТаблицы.Предписание +* + СтрочкаТаблицы.СНИПФЗГОСТ + + СтрочкаТаблицы.ЧастьСтатья); Rng.I_nsertParagraphAfter(); КонецЦикла; Rng.ConvertToTable(*); Документ.Tables(1).AutoFormat(17); //номер таблицы в шаблоне Word.Visible = Истина;

Аренда 1С в облаке

Еще способ Active document В Конфигураторе Макеты — правый клик — Добавить Тип макета: Active document Создать новый — Документ Microsoft Word

Меню Вставка — Поле — Автоматизация — DocVariable Написать имя поля в графе "Новое имя:" ДатаПриказа

В модуле формы документа создаем кнопку, и в ее обработчике пишем: Код 1C v 8.х

re> Процедура ОсновныеДействияФормыWord(Кнопка) АктивныйДокумент = ПолучитьМакет("Макет"); КомОбъект = АктивныйДокумент.Получить(); КомОбъект.Application.Visible=1; КомОбъект.Variables.Item("ДатаПриказа").Value="24.01.2007"; КомОбъект.Fields.UpD ate(); КомОбъект.PrintOut(); //распечатать документ //Ожидание окончания отправки на печать. Пока objWord.Application.BackgroundPrintingStatus<>0 Цикл Предупреждение("Ожидание",1); КонецЦикла; КомОбъект.Application.Quit(); //закрыть Word КомОбъект = 0; КонецПроцедуры

2) добавляем не поле, а Закладку Меню Вставка — Закладка и далее указываем ее имя ("ИмяЗакл") Код 1C v 8.х

re> Процедура ОсновныеДействияФормыWord(Кнопка) АктивныйДокумент = ПолучитьМакет("Макет"); КомОбъект = АктивныйДокумент.Получить(); КомОбъект.Application.Visible=1; КомОбъект.Bookmarks(СокрЛП("ИмяЗакл")).S_elect(); КомОбъект.Application.S_election.TypeText(СокрЛП("тест проверка")); КонецПроцедуры

Создание и редактирование печатных форм документов с помощью WORD в "1С:ЗУП"

Начиная с релиза 3.1.27.23, в конфигурации "1С:Зарплата и управление персоналом" версии 3.0 появилась возможность создания печатных форм офисных документов с помощью конструктора документов WORD. Можно заранее подготовить макет печатной формы документа в WORD и потом с помощью конструктора подтянуть необходимые реквизиты. При создании необходимой печатной формы используются только те реквизиты, которые доступны в документе 1С.

Для создания новой печатной формы переходим по пути Администрирование – Печатные формы, отчеты и обработки – Макеты печатных форм.

Путь для перехода к макетам документов в 1С:ЗУП

Путь для перехода к макетам документов в 1С:ЗУП

В журнале доступных документов выбираем документ, для которого необходимо создать новую печатную форму, и нажимаем "Создать макет Office Open XML". Заполняем наименование новой печатной формы. Нажимаем кнопку "ОК", откроется окно с доступными реквизитами для автоматического заполнения в печатной форме для выбранного документа.

Создание нового макета печатной формы в 1С:ЗУП

Наименование печатной формы

Далее открываем редактор по кнопке "Открыть редактор" и устанавливаем окна программы 1С и редактора макета рядом.

Редактор макета печатных форм в 1С:ЗУП

В нашем примере к документу "Разовое начисление" создаем печатную форму "Приказ на назначение премии". В новую печатную форму добавляем автоматическое заполнение "Даты документа", "ФИО сотрудников из документа". Номер приказа заполняем руками перед печатью. Курсором перетаскиваем реквизиты в нужное место в конструкторе WORD.

После завершения редактирования сохраняем макет в конструкторе WORD, закрываем редактор. Закрываем макет по кнопке "Записать и закрыть". Новая печатная форма появится в списке макетов, но будет неактивна, необходимо установить флаг активности.

Галочка возможности использования новой печатной формы

Для вывода на печать новой печатной формы переходим в список документов, к которому создавалась печатная форма, по кнопке печати формируем и проверяем форму "Приказа на назначение премии".

Вывод новой печатной формы на печать в 1С:ЗУП

Пример готовой печатной формы

Таким образом, в данной статье мы рассмотрели, как с помощью конструктора документов WORD создавать новые печатные формы. Данная возможность помогает экономить время при формировании различных документов, которых нет в программе.

Кузнецова Александра Консультант Компании "АНТ-ХИЛЛ"
При цитировании статей или заметок ссылка на сайт автора обязательна
Накопились вопросы и нужна помощь?
С удовольствием на все ответим и поможем всё настроить! звоните!

(473) 202-20-10 (495) 145-94-84

Оцените статью
InternetDoc.ru
Добавить комментарий