Как сохранить приказ из 1с в ворд
Пользователю потребовалось создавать файл договора с контрагентом программно из 1с. В результате должны формироваться файлы word и pdf. Все данные для договоров уже были у нас в справочниках (наименование, дата договора, номер договора и т.д). Задача сводится к формированию готовых файлов на основании шаблона word-документа. Для заполнения шаблона данными было принято правило: параметры, которые подлежат в тексте шаблона замене заключаются в квадратные скобки [ ].
Для обращения к файлу используем COMОбъект Word.Application. Для сохранения файла в pdf формат решено было использовать возможности самого wordа. Ниже код, который из хранилища значений получает шаблон, производит замену параметров и сохраняет файлы. Данный код должен находится в модуле объекта, так как для получения значения параметра используется метод Вычислить().
ДанныеМакета = Справочники.ДоговорыСКонтрагентами.МакетДоговора.Получить();
ИмяФайла = "D:\file.docx";
ИмяФайлаПДФ = "D:\file.pdf";
ДанныеМакета.Записать(ИмяФайла);
MSWord = Новый COMОбъект("Word.Application");
MSWord.Visible = Ложь;
MSWord.Documents.Open(ИмяФайла);
Документ = MSWord.Application.Documents(1);
Документ.Activate();
ТекстМакета = Документ.Content.Text;
//Получим массив параметров
МассивПараметров = РазбитьСтроку(ТекстМакета, "[", "]");
ТаблицаЗначенийПараметров = Новый ТаблицаЗначений;
ТаблицаЗначенийПараметров.Колонки.Добавить("НазваниеПараметра");
ТаблицаЗначенийПараметров.Колонки.Добавить("ПреобразованноеЗначение");
Для Каждого ТекПараметр Из МассивПараметров Цикл
Попытка
СсылкаНаОбъект = Вычислить(ТекПараметр);
СтрПреобразование = ТаблицаЗначенийПараметров.Добавить();
СтрПреобразование.НазваниеПараметра = ТекПараметр;
СтрПреобразование.ПреобразованноеЗначение = СсылкаНаОбъект;
Исключение
Сообщить("Невозможно интерпретировать параметр ["+ ТекПараметр+ "]");
КонецПопытки;
КонецЦикла;
//Заменим названия параметров на значения
Замена = Документ.Content.Find;
Для Каждого ТекСтрока Из ТаблицаЗначенийПараметров Цикл
Попытка
Замена.Execute("["+ ТекСтрока.НазваниеПараметра +"]", , , , , , , , , ТекСтрока.ПреобразованноеЗначение, 2);
Исключение
Сообщить("Невозможно преобразовать параметр ["+ ТекСтрока.НазваниеПараметра +"]");
КонецПопытки;
КонецЦикла;
//Сохраним в word
Документ.Save();
//Сохраним в pdf
Документ.SaveAs(ИмяФайлаПДФ, 17);
Выгрузка таблиц из 1С
Не редко создается необходимость выгрузить список каких – либо данных из табличной части документа, формы списка, журнала документов и т. п. Такие задачи часто единичны, и нецелесообразно привлекать специалиста для написания отчета.
Например, вам нужно получить всю номенклатуру с видом «Материалы» при этом нужны только колонки «Номенклатура» и «Единица».
В том случае, когда необходимо выгрузить данные с их фильтрацией, первым делом, необходимо настроить список в меню «Ещё» табличной части.
В появившемся окне из левой части (доступные поля) необходимо выбрать те, по которым вы будете делать отбор (в данном случае «Вид номенклатуры»). В правой части окна устанавливаются значения параметров отбора. При этом вид сравнения не ограничивается одним лишь равенством.
После того, как был установлен обор, в форме списка справочника «Номенклатура» будут отображаться лишь те позиции, которые подходят под заданное условие.
Следующим шагом будет вывод данного списка в табличный документ.
В меню «Еще» выберите пункт «Вывести список».
Получите понятные самоучители по 1С бесплатно:
Если вам нужно вывести не все колонки, как в нашем примере, то установите «галочки» только на тех, которые необходимы.
В итоге вы получаете, по сути, отчет, который можем сохранить в любой доступный формат. Как это сделать будет рассмотрено ниже. Подобным образом можно выгружать табличные части документов и справочников, данные из журналов документов, форм списков и не только.
Выгрузка отчетов и печатных форм из 1С
Любой отчет, печатную форму, табличный документ (например, который мы получили в нашем примере) в 1С 8.3 можно выгрузить во внешний файл в два клика.
На верхней панели программы находится кнопка сохранения во внешний файл (интерфейс «Такси»). Она будет активна на любых отчетах и печатных формах, где доступно сохранение.
Выгрузка базы данных 1С целиком
Данный способ необходим в тех случаях, когда базу данных 1С нужно выгрузить целиком, например, для создания тестовой копии.
Зайдите в нужную информационную базу в режиме конфигуратора.
В меню «Администрирование» выберите пункт «Выгрузить информационную базу».
Укажите при необходимости другое имя файла и путь для сохранения.
Полученный файл выгружаемых данных с расширением *.dt в дальнейшем очень легко загрузить. Для этого в режиме конфигуратора в меню «Администрирование» выберите пункт «Загрузить информационную базу» и откройте полученный ранее файл *.dt.
Публикация - своего р ода памятка, содержащая примеры кода для:
1. заполнение шаблона Word данными из 1С;
2. заполнение колонтитулов Word данными из 1С;
3. заполнение таблицы в Word данными из 1С;
Начало работы
В большинстве случаев перед нами ставится следующая задача:
Нужно открыть документ Word, заполненный данными из 1С.
Для этого нам нужно подготовить шаблон документа Word. Не путайте это с Word Template, специальные файлы Word, которые содержат настройки документов для многократного использования. Нам нужен обычный вордовский документ с расширениеми *.docx или *.doc. А далее поместить этот документ в макет с двоичными данными.
Читатель может справедливо заметить, что используется модальный вызов, и погрозить автору пальцем. И будет прав.
Далее я обычно создаю структуру полей, которые будут заполняться в шаблоне. Такой подход позволяет унифицировать процедуру заполнения шаблона, а также упростить последующее его изменение.
Углубимся немножко в принципы работы Word.
Каждый документ Word разделен на разделы, которые состоят из страниц.
Для каждого раздела есть возможность создавать свою нумерацию элементов, уникальные колонтитулы и настройки параметров страницы. Так, например, чтобы повернуть одну из страниц (вывести на печать как альбомную), нужно создать под неё отдельный раздел.
Каждая страница Word разделена на несколько областей:
- Верхний колонтитул
- Основной текст
- Нижний колонтитул
Нужно заметить, что в каждом разделе может быть уникальный колонтитул для первой страницы.
Заполнение пользовательских параметров
При обращении к этим коллекциям мы можем выполнять в них поиск и получать встроенные объекты, например, таблицы.
Теперь мы более-менее поняли, как обращаться к областям Word, можем в них пошуровать и выполнить замену наших параметров:
Рассмотри подробнее метод Execute. Его параметры идентичны диалоговуму окну при замене/поиске непоседресвенно из MS Word:
А вот и основные параметры (вольный перевод справки MSDN):
- Искомый текст - Строка - Текст для замены. Текст может содержать специальные параметры. Например, ^p - абзац, ^t - табуляция
- Чувствительность к регистру - Булево - Если истина, то поиск будет осуществляться с учетом регистра
- Слова целиком - Булево - Если истина, то ищутся слова целиком. Вхождение слов не учитываются. Например, при поиске слова дом будет пропущено слово домашний
- Использовать подстановочные знаки - Булево - Если истина, то используются встроенные регулярные выражения.
- Искать похожие - Булево - Если истина, то результат поиска будет содержать похожие слова
- Искать все формы - Булево - Если истина, то результат поиска будет содержать различные формы слов.
- Поиск сначала - Булево - Если истина, то будет осуществляться с начала до конца документа
- Охват - WdFindWrap - Опредяляет направление поиска
- Формат - Format - Формат искомого текста
- Строка замены - Строка - Строка, на которую будет заменен исходный текст
- Количество замен - WdReplace - Определяет сколько раз выполнять замену
- и т.д.
WdReplace - Constant Value:
wdReplaceAll 2
wdReplaceNone 0
wdReplaceOne 1
Данный метод не позволяет получить "Строка замены" как выделенную область, но он работает где-то в 10 раз медленнее. Для получения выделенной области можно воспользоваться немножко откорректированной типовой функцией:
Уже получив выделенную область можно отредактировать стиль текста, шрифт и т.д.
Также есть второй подход, использующий такой объект Word, как поля. Мне он не очень нравится, т.к. в больших документах, порядка 100 страниц, эти поля начинают глючить (исчезать, не подставлять нужные значения) и прочая ерунда. Ну по крайней мере в Word 2007. Но я его все равно приведу:
При подготовке шаблона в тело документа необходимо навставлять полей с типом DOCVARIABLE (можно вставлять горячими клавишими Ctrl+F9).
Доступ к таким полям можно получить следующим нехитрым образом:
Заполнение таблиц по шаблону
Итак, мы заполнили параметры в основном тексте документа, заменили параметры в колонтитулах, но у нас еще есть одна неприятность - нужно заполнить таблицу.
Подход, описанный ниже, годится только для таблиц с заранее известным форматом. Т.е. мы можем как угодно отформатировать таблицу и её строки изначально. Но потом изменять довольно-таки проблематично.
К таблицам можно получить доступ через области документа.
Далее, получив таблицу, мы работаем с ней по привычной схеме - строки, столбцы.
Для задания форматирования легче в шаблоне создать таблицу с пустой первой строкой, которую мы в последующем удалим.
Вот, в принципе, и все. Основные вопросы, возникающие при работе с Word, я постарался осветить. Надеюсь, данный обзор поможет вам в работе =)
Спасибо за советы и комментарии:
v3rter, monkbest
Критика только приветствуется. Чем больше замечаний, тем лучше будет гайд =)
Документы, отчеты (книги покупок и продаж, ОСВ, карточки счетов и др.), реестры документов стандартными средствами 1С 8.3 можно выгрузить на ваш компьютер в различных форматах, чаще всего пользователям необходимо выгрузить в excel или pdf. Для того, чтобы сохранить отчет, для начала необходимо его сформировать. Для примера возьмем книгу покупок. В сформированном отчете для его сохранения нажмите кнопку «Сохранить как» с дискетой или воспользуйтесь сочетанием клавиш Ctrl+S.
Откроется проводник, где необходимо выбрать в каком формате будет сохранен отчет и куда.
Обращаем ваше внимание, что на диске W вы можете сохранять свои файлы только в папку «Общее».
Аналогичным образом можно сохранить ОСВ или любой другой отчет из раздела «Стандартные отчеты»
Отчеты из раздела «Руководителю»
Любой документ, там немного будет отличаться визуальная часть сохранения. Выбирайте переключатель «Сохранить в папку на компьютер», выбирайте нужный формат, а также дополнительно можно заархивировать документ (удобно, когда сохраняется много документов).
Для сохранения документов реестром (списком), зайдите в список документов нужного типа, по кнопке Еще выберите пункт «Вывести список»
В появившемся списке оставьте флажки только на нужных для отображения колонках и нажмите ОК.
Сформируется табличный документ, где вы можете внести корректировки при необходимости, для сохранения на компьютер нажмите кнопку с дискетой, выберите формат и место для сохранения, назовите документ.
Читайте также: