Каковы параметры execute в 1С Word

Создание документов Word средствами 1С

Специализируемся на интеграциях 1С с маркетплейсами с 2021г.

  1. Путем замены шаблонного текста в макете Word.
  2. Путем вставки текста с помощью закладок в Word

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

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

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

Теперь кидаем на форму документа кнопку Сформировать и по нажатию на нее пишем код который открывает наш макет Word ищем закладку по имени и вставляет туда текст:

 //инициализация часть 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(НарушенияТекст).select(); MSWord.Application.selection.TypeText(НарушенияТекст); //открыть Word часть 4 СсылкаМакет.Application.Visible = Истина; СсылкаМакет.Activate(); Исключение //если ошибка Сообщить(ОписаниеОшибки()); MSWord.Application.Quit(); КонецПопытки; 

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

Для выгрузки табличной части в форме таблицы можно использовать функцию автоформата, примеру код выгрузки табличной части документа Предписание:

 Word = MSWord.Application; Документ = Word.ActiveDocument(); //Переместиться вниз на 22 строк Word.selection.MoveDown(,22); Документ.Paragraphs.Add(); //подготовка таблицы: Rng = Word.selection.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 Написать имя поля в графе "Новое имя:" ДатаПриказа

В модуле формы документа создаем кнопку, и в ее обработчике пишем:

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

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

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

// Параметры договора обозначены в тексте переменными вида "%НомерДоговора%" Функция Экспорт Договор = ПолучитьМакет("ActiveDocument_ДоговорПоставки"); // получим макет-ActiveDocument MSWord = Договор.Получить(); Попытка Doc = MSWord.Application.Documents(1); Doc.Activate(); Replace = Doc.Content.Find; FindText = "НомерДоговора"; // что искать - имя_шаблона MatchCase = Ложь; // использовать регулярные выражения MatchWholeWord = Истина; // искать слово целиком MatchWildcards = Ложь; // испоьзовать регулярные выражения MatchSoundsLike = Неопределено; // искать созвучные MatchAllWordForms = Неопределено; // искать все формы слова Forward = Истина; // искать вперед Wrap = Неопределено; // что должен вернуть Find-объект Format_ = Ложь; // использовать форматирование ReplaceWith = "N777"; // текст, на который надо заменить имя_шаблона // кратко: //Replace.Execute(FindText,Ложь,Истина,Ложь. Истина,,Ложь,НомерДоговора); Replace.Execute( FindText, MatchCase, MatchWholeWord, MatchWildcards, MatchSoundsLike, MatchAllWordForms, Forward, Wrap, Format_, НомерДоговора); MSWord.Application.Visible = Истина; MSWord.Activate(); Исключение Сообщить(ОписаниеОшибки()); MSWord.Application.Quit(); КонецПопытки; возврат 0; КонецФункции

Нужна помощь? Если не получается разобраться с вопросом самостоятельно, обратитесь к нам. Получите бесплатную консультацию эксперта!

Открываем файл Word или Excel из 1С 8.3 и 8.2

Одним из ключевых преимуществ использования системы 1С является возможность интеграции с различными внешними приложениями и файлами, в том числе с популярными офисными пакетами Microsoft Word и Excel. Эта функциональность позволяет пользователям автоматизировать множество задач, создавать документы на основе шаблонов, а также анализировать данные, импортированные из 1С. В данной статье подробно рассмотрим методы открытия файлов Word и Excel непосредственно из 1С версий 8.3 и 8.2, а также сопутствующие аспекты и нюансы такой интеграции.

Основы взаимодействия 1С с внешними приложениями

Для успешного взаимодействия 1С с другими программами необходимо понимание механизма запуска внешних приложений и открытия файлов. 1С предоставляет несколько встроенных функций и методов, которые позволяют запускать и управлять внешними приложениями. Одним из основных инструментов для этого является функция ЗапуститьПриложение , которая используется для выполнения команд в операционной системе Windows.

Пример простой реализации открытия файла Excel

Рассмотрим пример простого сценария открытия файла Excel из 1С 8.3 с использованием функции ЗапуститьПриложение . Данный пример предполагает наличие доступа к указанному файлу на локальном компьютере.

Этот пример демонстрирует, как одной строкой кода можно запустить внешний файл. Однако на практике задачи часто бывают сложнее и требуют дополнительных настроек и проверок.

Механизмы обеспечения безопасности

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

Проверка существования файла

Перед тем как запускать файл, необходимо убедиться, что он существует. Это поможет избежать ошибок и неожиданных ситуаций. Для проверки можно воспользоваться функцией ФайлСуществует .

Функция ОткрытьФайлЕслиСуществует(ПутьКФайлу) Если ФайлСуществует(ПутьКФайлу) Тогда ЗапуститьПриложение(ПутьКФайлу); Иначе Сообщить("Файл не найден: " + ПутьКФайлу); КонецЕсли; КонецФункции

Запуск с проверкой безопасности

Для повышения безопасности можно использовать дополнительные проверки прав доступа и ограничение доступа к определенным типам файлов.

Функция БезопасныйЗапускФайла(ПутьКФайлу, ДопустимыеРасширения) Расширение = Прав(ПутьКФайлу, СтрДлина(ПутьКФайлу) - Найти(ПутьКФайлу, ".", -1)); Если ФайлСуществует(ПутьКФайлу) И Найти(ДопустимыеРасширения, Расширение) > 0 Тогда ЗапуститьПриложение(ПутьКФайлу); Иначе Сообщить("Файл не найден или тип файла недопустим: " + ПутьКФайлу); КонецЕсли; КонецФункции

Открытие Word и Excel на клиенте

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

Использование ВнешниеКомпоненты

Для более сложных случаев можно использовать внешние компоненты, которые предоставляют расширенные возможности взаимодействия с документами. Например, работу с интерфейсом Microsoft Office можно реализовать через COM-объекты.

Пример работы с COM-объектами для Microsoft Excel

Процедура ОткрытьExcelФайл(ПутьКФайлу) Если НЕ ФайлСуществует(ПутьКФайлу) Тогда Сообщить("Файл не найден: " + ПутьКФайлу); Возврат; КонецЕсли; Попытка ExcelApp = СоздатьОбъект("Excel.Application"); ExcelApp.Workbooks.Open(ПутьКФайлу); ExcelApp.Visible = Истина; Исключение Сообщить("Ошибка открытия файла Excel"); КонецПопытки; КонецПроцедуры

Открытие файлов на сервере

В некоторых ситуациях необходимо открывать и обрабатывать файлы на сервере. Это особенно важно для задач обработки больших объемов данных, где клиентская машина может не справиться с нагрузкой.

Использование серверных методов

Серверные методы работы с файлами аналогичны клиентским, однако требуют учета особенностей серверной среды, таких как пути к файлам и права доступа.

Процедура ОткрытьФайлНаСервере(ПутьКФайлу) Экспорт Если НЕ ФайлСуществует(ПутьКФайлу) Тогда Сообщить("Файл не найден: " + ПутьКФайлу); Возврат; КонецЕсли; ЗапуститьПриложение(ПутьКФайлу); КонецПроцедуры

Взаимодействие с файловой системой

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

Использование шаблонов документов

Одной из наиболее частых задач при работе с файлами Word и Excel является создание документов на основе шаблонов. В 1С это можно реализовать с помощью стандартных инструментов работы с шаблонами и генераторами отчетов.

Пример создания документа Word на основе шаблона

Автоматизация задач с помощью VBA

Одним из способов автоматизации работы с Excel и Word является использование макросов VBA. В 1С также можно выполнять VBA-скрипты используя возможности COM-объектов.

Пример выполнения макроса VBA из 1С

Процедура ВыполнитьМакросExcel(ПутьКФайлу, Макрос) Если НЕ ФайлСуществует(ПутьКФайлу) Тогда Сообщить("Файл не найден: " + ПутьКФайлу); Возврат; КонецЕсли; Попытка ExcelApp = СоздатьОбъект("Excel.Application"); Документ = ExcelApp.Workbooks.Open(ПутьКФайлу); ExcelApp.Run(Макрос); Документ.Close(Истина); ExcelApp.Quit(); Исключение Сообщить("Ошибка выполнения макроса"); КонецПопытки; КонецПроцедуры

Трудовой договор в формате MS Word

Для большенства организаций стандартная печатная форма трудового договора в программе 1С:Зарплата и управление персоналом не подходит. Фирма 1С, в восьмой версии своей программы, любезно предусмотрела возможность добавлять дополнительные печатные формы для документов и других объектов. Воспользуемся данной возможностью и создадим трудовой договор, который будет открываться в Microsoft Word.

Специалисты по конфигурированию могут разрабатывать внешние обработки вне конфигурации, используемой в организации. Разработанный отчет или обработка передается в виде файла так называемой внешней обработки с расширением .epf. Пользователь может подключить эту обработку к конфигурации самостоятельно.

Сведения о подключенных обработках хранятся в справочнике «Внешние обработки». Чтобы подключить новую внешнюю обработку, нужно зарегистрировать ее в указанном справочнике.

Технические требования к внешней печатной форме

Внешняя обработка должна содержать:

  • Реквизит «СсылкаНаОбъект», куда при вызове будет передана ссылка на объект, для которого необходимо выполнить печать;
  • Необязательный реквизит «ДополнительныеПараметры» произвольного типа, которому будут передаваться дополнительные параметры примитивного типа в виде структуры;
  • Функция Печать() — без параметров, возвращающая табличный документ;
  • Внешняя печатная обработка может иметь в своем составе макет «Параметры_Авторегистрации», используемый для автоматического заполнения принадлежности печатной формы в справочнике «Внешние обработки» и состоящий из двух колонок: «Полное имя метаданного» и «Имя табличной части».

Создание внешней обработки

Запустим 1С:Предприятие в режиме «Конфигуратор» и через меню «Файл» — «Новый» создадим внешнюю обработку.

Создадим реквизит «СсылкаНаОбъект». Для этого нажимем кнопку «Добавить» или клавишу «Insert» и заполним свойства. В зависимости от того, для каких объектов будет использоваться эта печатная форма, нужно выбрать тип. В нашем случае, внешняя печатная форма будет использоваться только для справочника «Сотрудники организации», поэтому укажем соответствующий тип «СправочникСсылка.СотрудникиОрганизаций».

Реквизит «ДополнительныеПараметры» нам не понадобится. Создадим экспортную функцию Печать() («Действия» — «Открыть модуль объекта»).

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

Макет трудового договора в формате Microsoft Word

Существует, по меньшей мере, три способа создания шаблона.

Первый. В тексте документа содаются метки особого формата, например, «м_НомерДоговора», затем, в модуле обработки производится поиск и замена значений.

Второй способ. В документе Word создаются закладки, к которым потом можно обращаться по имени. Минус этого способа в том, что метка должна быть уникальна, т.е., например, если нужно вставить фамилию сотрудника в каждый абзац текста, то придется сделать несколько закладок с разными именами.

Способ три. В шаблон добавляются служебные поля, например, «DocVariable» или «Author». Используя DocVariable можно обращаться к переменной по имени, например, «ДокументВорд.Variables.Add(ИмяПеременной, ЗначениеПеременной);», но ее не видно в шаблоне. Поле «Author» отображается в шаблоне, но обращаться к нему придется в цикле по индексу: «ДокументВорд.Fields.item(Индекс).Result.Text = Значение;».

На мой взгляд, первый способ является самым оптимальным. Шаблон документа легко редактируется, метки видны в тексте, для создания меток не нужны сложные вставки. Поэтому будем делать шаблон именно этим способом.

Откроем программу Microsoft Office. Для примера добавим лишь одну строку: «Трудовой договор № [НомерДоговора]».

Добавим получившийся шаблон в нашу обаботку. Для этого выбираем «Макеты» и нажимаем кнопку «Добавить» или клавишу «Insert».

Откроется конструктор запроса, в котором выберем тип «Active Document» и файл шаблона.

Функция Печать()

Вернемся к функции, которую мы создали ранее. Настало время написать ее тело.

// Предопределенная функция для внешних печатных форм // Функция Печать () Экспорт

// Получим объект Microsoft Word из макета ОбъектВорд = ПолучитьМакет ( "ТрудовойДоговор" ). Получить ();

// Получим документ из объекта и активируем его Документ = ОбъектВорд . Application . Documents ( 1 ); Документ . Activate ();

// Поиск и замена маркеров Замена = Документ . Content . Find ; Замена . Execute ( "[НомерДоговора]" , , , , , , , , , "007" , 2 );

// Вывод документа ОбъектВорд . Application . Visible = Истина; ОбъектВорд . Activate ();

Из кода видно, что в файле шаблона производится поиск строки «[НомерДоговора]» и ее замена на строку «007».

Параметры авторегистрации

Для автоматического заполнения принадлежности печатной формы к объектам конфигурации, добавим еще один макет «Параметры_Авторегистрации». Это будет табличный документ, содержащий одну колонку с именами объектов метаданных, к которым будет принадлежать печатная форма. В нашем случае таблица будет выглядить следующим образом.

Сохраним получившуюся внешнюю обработку.

Подключение дополнительных внешних печатных форм

Запустим 1С Предприятие. Откроем справочник «Дополнительные внешние печатные формы» через меню «Сервис» — «Дополнительные отчеты и обработки».

Нажмем кнопку «Добавить», затем зарегистрируем новую печатную форму, нажав «Заменить файл внешней обработки». Автоматически заполнится принадлежность печатной формы справочнику «Сотрудники». Выберем «Трудовой договор» в колонке «Заменяемая печатная форма» чтобы стандартная печатная форма более не использовалась.

В итоге справочник будет выглядить следующим образом.

Проверка результата

Откроем любого работающего сотрудника и нажмем кнопку «Печать» — «Трудовой договор». Откроется документ Microsoft Word с трудовым договором под номером «007».

Дальнейшее описывать не имет смысла. Думаю, не составит большого труда доработать функцию Печать() и макет договора.

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