1с word saveas параметры
Microsoft.Interop.Word.Document.SaveAs. Неверное сохранение
Создаю новый документ .docх и пытаюсь сохранить в папке. Но файл сохраняется в папке на один.
Ошибка на saveas
procedure TForm1.MenuItem6Click(Sender: TObject); begin if filework='' then Saveas else .
Сохранение SaveAs
Подскажите, пожалуйста, как осуществить следующее: необходимо сохранить данные в новый файл excel.
Есть доступ до папки у пользователя ?
1С пробовал от админа запускать ?
И что за ошибка хоть ? 1. Процедура сервер
2. Есть доступ
3. Работаю по админом
4. Метод объекта не обнаружен (SaveAs)
Докум.SaveAs(ИмяФайла); Нельзя сохранять фалы на сервере, нужно перенести на клиент.
Ermak27, полностью процедуру всю переноси на клиент. А данные для заполнения вытаскивай через функции на сервере несли понадобится.
Перед процедурой у тебя написано &НаСервере, меняй это на &НаКлиенте. Повалятся ошибки, такие как обращение к константе например и начинай их исправлять потихоньку.
Я тебя не так понял на счёт сервера. У меня вообщем ничего не стоит перед процедурой. Нет &НаСервере и &НаКлиенте. У меня база крутиться на sql сервере Ermak27, хорошо. Напиши тогда где находится процедура. В модуле формы или модуле объекта ?Модуле формы. Процедура срабатывает при нажатии кнопки
Попробуй так прописать
У меня вообщем ничего не стоит перед процедурой. Нет &НаСервере и &НаКлиенте. ну не стоит и не стоит. где процедура выполняется, когда не стоит? в воздухе? вряд ли.посмотрите, есть ли у вас на сервере диск Е, куда вы пытаетесь записать, и есть ли права на запись на него
dggrom, выдаёт ошибку Поле объекта не обнаружено (Documents)
Докум.Documents.SaveAs(ИмяФайла);
Добавлено через 2 минуты
Yulunga, Я же писал что диск есть, права есть
Yulunga, у него метод записи самой не видет.
Ermak27, что за конфигурация, какие формы, управляемые или нет ?
по мне так проблема в этом:
Докум=Word.
Word=Докум;
Докум=Word.
запутал с какой-то целью. поэтому и нет там сейвас, что применяется не к тому к чему надо. чехарда. имена переменных закончились?
Yulunga, я закомментировал Word=Докум;, теперь выдаёт ошибку Метод объекта не обнаружен (Range)Докум = Word.Range(0,0); ну вот чем не код для рыбы. сейвас должен быть для активного документа
Код который в самом начале, он так и выводит как надо, но встала задача сохранить эти вордовские документы по индексу, вот тут проблема и появилась у меня. Вчера я переделал немного код
Создал форму с типом ActiveDocument. Написал код который сохраняет мне вордовские документы но значение заносит в каждый лист, а мне нужно два значения на лист.
Метод SaveAs в Excel
Всем доброго времени суток.Помогите разобраться с методом SaveAs Есть,ну назовем ее,небольшая.
SaveAS excel-файл на странице
привет всем на странице создаётся таблица с выбранными данными из базы данных, теперь требуется.
Lazarus MsWord SaveAs Error
Всем Доброго вечера. Уже 2 дня мучаюсь непонимаю что не так, не получается в lazarus-е сохранить.
Сохранение XL.ActiveWorkBook.SaveAs(buf);
Почему файл не сохраняется в папке в которой находится exe файл? В папке в которой хранится exe.
Не грузятся файлы! Call to a member function saveAs() on null
Я не пойму что он от меня хочет $form->file = UploadedFile::getInstance($form, 'file'); .
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Сохраняет указанный документ с новым именем или форматом. Некоторые аргументы этого метода соответствуют параметрам в диалоговом окне "Сохранить как" (вкладка "файл").
Параметры
Имя документа. Значение по умолчанию — текущая папка и имя файла. Если документ никогда не сохранялся, используется имя по умолчанию (например, Doc1. doc). Если документ с указанным именем уже существует, он перезаписывается без приглашения пользователя.
Формат, в котором сохранен документ. Может быть любой WdSaveFormat константой. Чтобы сохранить документ в другом формате, укажите соответствующее значение для SaveFormat свойства FileConverter объекта.
значение true , чтобы заблокировать документ для примечаний; в противном случае — false. Значение по умолчанию: false.
Строка пароля для открытия документа.
значение true , чтобы добавить документ в список недавно использовавшихся файлов в меню файл; в противном случае — false. Значение по умолчанию: true.
Строка пароля для сохранения изменений в документе.
значение true , чтобы при открытии документа в Microsoft Word предлагалось состояние "только чтение"; в противном случае — false. Значение по умолчанию: false.
значение true для сохранения шрифтов TrueType вместе с документом; в противном случае — false. Если этот параметр опущен, EmbedTrueTypeFonts параметр принимает значение EmbedTrueTypeFonts Свойства.
Если графика была импортирована с другой платформы (например, Macintosh), значение true , чтобы сохранить только версию импортированной графики Microsoft Windows.
значение true , чтобы сохранить данные, введенные пользователем в форме, в виде записи; в противном случае — false.
Если в документе есть вложенная почта, значение true , чтобы сохранить документ как аоце букву (средство рассылки сохраняется).
Кодовая страница или набор знаков, которые необходимо использовать для документов, сохраненных в виде кодированных текстовых файлов. По умолчанию используется системная кодовая страница. MsoEncodingС этим параметром нельзя использовать все константы.
Если документ сохраняется в виде текстового файла, значение true используется для вставки разрывов строк в конце каждой строки текста.
Если документ сохраняется в виде текстового файла, значение true позволяет Word заменять некоторые символы похожим на похожий текст. Например, отображение знака авторского права как (c). Значение по умолчанию: false.
Способ, с помощью которого Word помечает разрывы строк и абзацев в документах, сохраненных в виде текстовых файлов. Может быть одной из следующих WdLineEndingType констант: wdCRLF (по умолчанию) или ф:Микрософт.оффице.Интероп.Ворд.вдлининдингтипе.вдкронли.
значение true добавляет управляющие символы в выходной файл для сохранения макета текста в исходном документе с двунаправленным письмом.
Режим совместимости, который Word 2010 использует при открытии документа. WdCompatibilityModeизмен.
Метод ПолучитьМакет работает только на сервере. Методы работы или заполнения Word-а работают как на клиенте, так и на сервере. Показывать пользователю документ (Visible = Истина; Activate();) нужно на клиенте. Получается, нам нужно получить документ на сервере и передать его на клиент, чтобы показать. В данной статье будет рассмотрено 2 способа передачи с сервера на клиент. 1 способ для ActiveDocument, второй для ДвоичныеДанные.
Немного об ActiveDocument
Что пишет о ActiveDocument 1С:
Технология ActiveDocument предназначена для редактирования документов внешними по отношению к 1С:Предприятию 8 редакторами.
Эта технология позволяет редактировать документы визуально (например, Word или Excel) непосредственно в окне 1С:Предприятия 8, при этом элементы пользовательского интерфейса (меню, панели команд и т.д.) заменяются на предоставляемые редактором. Документы могут быть предварительно отредактированы и сохранены в макетах конфигурации, а затем макеты могут использоваться пользователями как основы для создания окончательных версий документов.
Следует заметить, что использование макетов ActiveDocument в режиме Предприятия осуществляется только программно - визуальное редактирование возможно только на этапе создания и редактирования конфигурации.
Эта технология применяется в случае, когда в конфигурации необходимо хранить данные, редактируемые другим приложением - такие, например, как шаблоны для факсов или деловых писем, созданные в Microsoft Word, или шаблоны прайс-листов в Microsoft Excel. Такая необходимость возникает, как правило, при регламентировании формата документов (как во внутреннем документообороте, так и при обмене документами со сторонними организациями и клиентами), однако при отсутствии ограничений на формат документа рекомендуется использовать существующие в 1С:Предприятии 8 возможности по оформлению электронных и печатных документов.
Другими словами: в ДвоичныеДанные вы можете только «Загрузить из файла» и «Выгрузить в файл»
А ActiveDocument можно прямо в конфигураторе редактировать в привычном интерфейсе Microsoft Word. Выглядит это так:
Я писал базу с нуля, где было много шаблонов Word, которые постоянно приходилось переписывать. Было очень удобно в конфигураторе открывать фактически Word, редактировать, перезапускать отладку и смотреть, что получилось. Если у вас шаблон не так часто меняется, то можно в принципе использовать «Двоичные данные».
Передача ActiveDocument с сервера на клиент
Просто получить ActiveDocument на сервере и передать его на клиент не получится. Но можно документ полностью заполнить на сервере, на клиент передать уже полностью готовый документ, и на клиенте его просто запустить.
Пример кода:
При использовании этого кода на сервере должен быть установлен офисный пакет. Представленный код является шаблоном (примером) для дальнейшего программирования. Краткий анализ кода:
1. НаКлиенте мы просто получаем файл в виде двоичных данных с сервера, записываем во временную папку и открываем оттуда файл.
2. НаСервере мы получаем макет, его заполняем (дан пример заполнения через метод Find. Execute), сохраняем во временную папку (это будет папка на сервере вида: C:\Users\<Имя пользователя, под которым запущена служба 1С>\AppData\Local\Temp\v8_F0FB_7f3.docx), переводим файл в двоичные данные и передаём на клиент. Для сохранения документа можно использовать методы Передача макет Word (Двоичные данные) с сервера на клиент
В случае передачи двоичных данных представлю практически весь код.
Краткий анализ кода:
Своим кодом я внедрился в СтандартныеПодсистемы.Печать. На форме документа 2 кнопки: «Письмо на оплату» (печать в табличный документ) и «Письмо на оплату (Word)» (печать в Word).
1. НаКлиенте на форме я получаю из модуля менеджера (функция ПечатьПисьма) структуру всех параметров. Далее получаю Word из макета (двоичные данные) и заполняю его на клиенте
2. Задача функции ПечатьПисьма модуля менеджера предназначена только для сбора сведений, которыми потом заполнится Word на клиенте.
Замечание: если вам адрес во временном хранилище нужен не сразу и единожды (как у меня), то корректней помещать во временное хранилище с уникальным идентификатором, дабы значение не удалилось пока не закрыли форму:
2. Можно сохранить файл Word в общую папку и с клиента его просто получать. Главное, чтобы файл никто не удалил.
По сути, что тут может быть особенно – нажал на кнопку "Сохранить" или "Сохранить Как" и все, радуйся жизни. Но, так как я очень люблю оперировать, тьфу ты… программировать, то я решил рассмотреть решение данной задачи программным путем.
Из всей объектной модели Word, компонентами, которые предоставляют средства для сохранения в ворде документа, являются объект Document и коллекция Documents. По сути, у объекта Document есть два метода: Save и SaveAs, которые соответствуют диалоговым окнам " Сохранить " и " Сохранить Как ", а коллекция предоставляет только метод Save. Я уже рассматривал данный объект и коллекцию, но не углублялся в методы Save и SaveAs, а все потому, что у метода SaveAs огромное количество параметров, описание которых тянет на отдельную статью. Вот я и решил собрать все это воедино, и описать.
Объект Document – сохранение в ворде
Save (NoPrompt, OriginalFormat) – Показывает, как в ворде сохранить все файлы, которые входят в коллекцию Documents.
NoPrompt – Если значение true, то Word автоматически сохранит все файлы. Если значение false - Word предложит пользователю сохранить каждый файл, изменившийся с момента последнего сохранения.
OriginalFormat - Определяет, как документы будут сохранены в ворде. Содержит значение константы WdOriginalFormat:
- wdOriginalDocumentFormat - 1 - Оригинальный формат.
- wdPromptUser - 2 – Пользователю будет предложено выбрать формат.
- wdWordDocument - 0 – Формат Microsoft Word.
Если сохранение в ворде ранее не производилось, то диалоговое окно "Сохранить как" запросит у пользователя имя файла.
SaveAs (FileName, FileFormat, LockComments, Password, AddToRecentFiles, WritePassword, ReadOnlyRecommended, EmbedTrueTypeFonts, SaveNativePictureFormat, SaveFormsData, SaveAsAOCELetter, Encoding, InsertLineBreaks, AllowSubstitutions, LineEnding, AddBiDiMarks, CompatibilityMode) – Сохранение файла Word с новым именем или форматом (Диалоговое окно "Сохранить Как").
FileName – Позволяет задать путь и имя сохраняемого файла в ворде. Если задать только имя файла, то произойдет сохранение в ворд в папке по умолчанию – "Мои Документы". Если документ с таким именем уже существует, то произойдет перезапись без уведомления пользователя.
FileFormat – Задаем формат, в котором сохраняется документ в Word. Значение константы WdSaveFormat.
Константа WdSaveFormat позволяет задать формат PDF (wdFormatPDF – 17) или XPS (wdFormatXPS - 18). Однако, что бы сохранить в ворде файл в этих форматах, вам придется установить расширение SaveAsPDFandXPS, которое доступно на сайте Майкрософт. Смотрите статью "Как в ворде сохранить документ в PDF формате"
LockComments – Содержит логические значения, true - заблокировать документ для комментариев. По умолчанию используется false.
Password – Пароль для открытия.
AddToRecentFiles – Содержит логическое значение, true - добавить документ в список недавно использовавшихся в меню Файл. По умолчанию используется True.
WritePassword - Пароль для сохранения в ворде изменений.
ReadOnlyRecommended - Содержит логические значения, true – открывать только для чтения. По умолчанию используется False.
EmbedTrueTypeFonts - Содержит логические значения, true – сохранить TrueType шрифты вместе с документом.
SaveNativePictureFormat – Параметр используется, если графики были импортированы из другой платформы (например, Macintosh). true - сохранить в ворд только версию Microsoft Windows импортируемых графиков.
SaveFormsData –true - сохранить в ворд данные, введенные пользователем в форме в виде записи.
SaveAsAOCELetter – Параметр актуален, если документ имеет прикрепленное почтовое вложение. true – сохраняем документ Word как AOCE письмо.
Encoding – Отвечает за кодировку текста. По умолчанию используется системная кодировка. Параметр должен содержать значение константы MsoEncoding .
InsertLineBreaks – Параметр используется, если происходит сохранение документа в Word в виде текстового файла. true - вставить разрывы строк в конце каждой строки текста.
AllowSubstitutions – Актуально, если файл ворд сохраняется в виде текстового файла. Значение true позволяет Word заменить некоторые символы в тексте их упрощенными аналогами. Например, символа авторского права. По умолчанию используется значение False.
LineEnding – Определяет форматирование строк и абзацев в документах, сохраненных в виде текстовых файлов. Может быть одним из следующих значений константы WdLineEndingType:
- wdCRLF - 0 - возврат каретки и строки.
- wdCROnly - 1 - Возврат только каретки.
AddBiDiMarks – true - добавить управляющие символы в выходной файл.
CompatibilityMode - Режим совместимости, который Word2010 использует при открытии документа. Значение константы WdCompatibilityMode:
- wdCurrent - 65535 - Совместимость режим эквивалентен последней версии Microsoft Word.
- wdWord2003 - 11 - Word2010 введен в режиме, который наиболее совместим с Word2003.
- wdWord2007 - 12 - Word2010 введен в режиме, который наиболее совместим с Office Word2007.
- wdWord2010 - 14 - Word2013 введен в режиме, который наиболее совместим.
- wdWord2013 - 15 - По умолчанию. Все функции Word 2013 включены.
Если данный параметр отсутствует, то принимается значение 0 – сохраняется текущий режим совместимости.
Коллекция Documents – как в ворде сохранить документ
Save (NoPrompt, OriginalFormat) – Метод выполняет ту же функцию, что и Save объекта Document, только для коллекции Documents.
Хорошо, с теорией закончили, теперь привожу два примера программного кода на языке VBScript и JScript, котрые создают новый документ, вставляют в него форматированный текст, содержащий информацию о сервере сценариев Windows Script Host и сохраняют в ворде данный документ в текущем каталоге (каталог, откуда был произведен запуск сценария).
Программный код на языке VBSCRIPT:
Программный код на языке JSCRIPT:
И так, с программированием закончили, теперь можно приступить к разбору программного кода. Обратите внимание, что в примере для JSCRIPT я изменил имена переменных, добавив к ним единицу .
В самом начале происходит подключение различных классов и коллекций, которые позволяет подключить объектную модель Word, и создать новый документ. Далее следует объявление переменной CurDir, она будет хранить путь к текущему каталогу, именно в этот каталог произойдет сохранение документа в ворде. Доступ к текущему каталогу осуществляется через класс WScript.Shell – смотрите статью "Объект WScript.Shell метод ExpandEnvironmentStrings и свойство CurrentDirectory - Переменные среды Windows и текущий каталог".
Далее с помощью класса Font – статья "Объект Word Font - параметры форматирования шрифта", происходит настройка параметров текста: цвет, размер и так далее. После с помощью метода TypeText класса Selection происходит вставка фразы "как в ворде сохранить документ", данная фраза также будет отформатирована: жирный шрифт и увеличенный размер символов. После мы дважды вставляет параграф – метод TypeParagraph.
Следующим этапом является использование несколько раз процедуры TXInsert, который будет передаваться два параметра: две текстовые строки. Все происходит так, что процедура вставляет в документ параметры свойств класса WScript – имя свойства и его значение.
После всей проделанной работы происходит вызов метода SaveAs, которые отвечает за сохранение файла Word. В нашем случае, в сценарии на языке VBSCRIPT произойдет сохранение документа в ворде под именем "WscInfo_vbs.doc", а в сценарии на языке JSCRIPT – сохранение файла в ворде под именем "WscInfo_js.doc"
Спасибо за внимание. Автор блога Владимир Баталий
Читайте также: