ВНИМАНИЕ! При использовании кодов описанных ниже, уберите символ _ Давайте рассмотрим на примерах как это делается! =) Мне известно 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 = Истина;

Еще способ 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С.
Для создания новой печатной формы переходим по пути Администрирование – Печатные формы, отчеты и обработки – Макеты печатных форм.


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


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

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

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


Таким образом, в данной статье мы рассмотрели, как с помощью конструктора документов WORD создавать новые печатные формы. Данная возможность помогает экономить время при формировании различных документов, которых нет в программе.
Кузнецова Александра Консультант Компании "АНТ-ХИЛЛ"
При цитировании статей или заметок ссылка на сайт автора обязательна
Накопились вопросы и нужна помощь?
С удовольствием на все ответим и поможем всё настроить! звоните!

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




