Замена execute 1с параметры
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'); .
ВНИМАНИЕ! При использовании кодов описанных ниже, уберите символ _
Давайте рассмотрим на примерах как это делается! =) Мне известно 2 способа:
1. Путем замены шаблонного текста в макете Wordа.
2. Путем вставки текста с помощью закладок в Wordе,
В первом случае сразу скажу, что длина строки передаваемая в функцию замены, довольно небольшая 255 символов, да и расстановка шаблонных выражений в макете Word занимает довольно много времени. Через процедуру Content.Find.Execute.
Во втором случае длина, насколько мне известно неограниченна, также воськаться с закладками намного быстрее и удобнее, чем расставлять шаблонный текст. Используя Bookmarks().S_elect(). Поэтому давайте на коде рассмотрим второй пример.
И так, для начала необходимо добавить Word макет к документу. Добавляем макет с помощью конструктора макетов указав Active document и выбрав соответствующий макет.
Называем его Акт. Открываем макет в 1Ске, ставим курсор в нужном месте, переходим в меню Вставка закладка нажимаем добавить закладку к примеру у меня это НарушенияТекст
Теперь кидаем на форму документа кнопку Сформировать и по нажатию на нее пишем код который открывает наш макет Word ищем закладку по имени и вставляет туда текст:
Код 1C v 8.х
Это пример вывода множества строчек из табличной части одной строкой, если нужно просто выгрузить какой-то реквизит то можно пропустить часть 2 и перейти к части 3.
Для выгрузки табличной части в форме таблицы можно использовать функцию автоформата, примеру код выгрузки табличной части документа Предписание:
Код 1C v 8.х
Ну вот и все =)
Автор: saylolpls
Еще способ Active document
В Конфигураторе Макеты - правый клик - Добавить
Тип макета: Active document
Создать новый - Документ Microsoft Word
Меню Вставка - Поле - Автоматизация - DocVariable
Написать имя поля в графе "Новое имя:" ДатаПриказа
В модуле формы документа создаем кнопку, и в ее обработчике пишем:
Код 1C v 8.х
2) добавляем не поле, а Закладку
Меню Вставка - Закладка и далее указываем ее имя ("ИмяЗакл")
Код 1C v 8.х
Код 1C v 8.2 УП
Затем создадим процедуру, которая будет вытаскивать данные. Процедура будет иметь два параметра: обязательный и необязательный. Обязательным будет дата, начиная с которой брать данные, а необязательным будет массив артикулов.
Процедура вытаскивает данные по параметрам во временную таблицу, выводит её и, после этого, дропает.
По ощущениям, работает быстрее чем просто запрос к внешнему источнику.
С SQL всё. Переходим к 1С
Подключение к SQL Сервер:
Установка параметров процедуры и её вызов:
Ну и заполнение ТЗ результатами вызова:
После этого с ТЗ уже делаем, что хотим.
Для примера выкладываю обработку и бэкап SQL базы.
Тестировалось на платформе 8.3.12.1685, 8.3.14.1944, 8.3.15.1747.
Использование хранимых процедур MS SQL Server в 1С Использование хранимых процедур MS SQL Server в 1С + гуманитарная помощь автору для совершенствования самообразованияСпециальные предложения
Вы о чем . Пусть этим контролем занимается та система, в которой эти сотни таблиц созданы. Писать напрямую в эти таблицы из 1С никто не заставляет. Для этого и есть механизм вызова хранимых процедур, если это разумно при интеграции. Внешние источники очень удобны для загрузки данных в 1С. Во внешней системе делаем нужные вьюшки и подключаем их. В саму эту систему отправляем какие-либо подтверждения через вызов процедур. Если нужны выгрузки миллиардов записей, то задача решается совершенно другим способом.
(1) Если необходимо разрабатывать запрос с нуля, то возможно и выгоднее их использовать, но если требуется получить данные, которые уже можно выдрать с использованием хитрых хранимок - себе дороже. К тому же структура внешнего источника может дорабатываться. Использование хранимок позволяет переложить реализацию и контроль получения данных на тех, кто сопровождает внешнюю систему или как минимум получить консультацию, почему данные криво приходят.Если не сложно - можете рассказать, как обновляете внешние источники (структуру) вкратце. В этом году пришлось много работать над интеграцией с ms sql server - показалось неудобно обновлять базу, после изменения внешнего источника (в расширение не пробовал переносить). (1) ограниченный взгляд, отрицание опыта человечества .
Берем данные из другой системы(oracle) используем при обработке и sql и pl-sql. (16) Что сказать то хотели ? Автор предложил корявый механизм работы с хранимыми процедурами. Через внешние источники данных в связке с sql можно решить любую задачу.
Однако далее в комментариях вы утверждаете что для любых задач, другие инструменты нужны :-)
Автор, а в чем смысл создавать таблицу?
Сначала создаешь таблицу, потом помещаешь туда выборку, потом получаешь все данные из этой таблицы, потом убиваешь таблицу.
Так ты возьми и просто получи данные из выборки.
Также непонятен смысл использования EXEC. Напиши сразу запрос выборки, зачем сначала формировать текст запроса в твоем ЭЛЕМЕНТАРНОМ примере, а потом его выполнять.
(5) Автор имеет ввиду, что хранимая процедура может делать что-то сложное и результат возвращать в табличном виде.Есть только вариант вызывать функцию, которая вернет таблицу и это хорошо обыгрывается через внешние источники.
Но возможности функций в SQL значительно меньше, чем процедур.
В 1С через внешние источники нельзя вызвать процедуру с возвратом таблицы.
Вот это он хотел сказать. Просто самое решение очень корявое.
Использование хранимых процедур, как и любое подключение возможностей прямого доступа к данным - особая зона возможностей, на мой взгляд очень недооцененная.
Пример с хранимой процедурой из собственного опыта: была поставлена задача максимально быстрой синхронизации справочника "Номенклатура" в двух независимых базах (самостоятельные информационные системы разных организаций).
Самый быстрый вариант - в момент записи элемента в 1 базе, сразу-же создавать(изменять) соответствующий элемент в другой. Связь по ссылке. Т.к организации независимые и самостоятельные, раскрывать внутреннюю структуру и параметры подключения пользователей SQL с доступом к изменению данных - недопустимо. Кроме этого базы разделены территориально. В данном случае использование хранимой процедуры - идеальное решение, которое в описанном случае работает более 3х лет без единого сбоя.
Реализация:
1.В базе-приемнике создана хр. процедура, создающая(обновляющая) прямым запросом элемент номенклатуры по входным параметрам, переданным в процедуру. Возвращаемое значение - признак успешной загрузки;
2.В базе-приемнике создан пользователь, имеющий доступ только к хранимой процедуре;
3.В базе-источнике после записи нового(измененного) элемента выполняется прямое подключение к приемнику и запуск хр. процедуры с ключевыми параметрами записываемого элемента. Выполнение производится под пользователем с правами только к выполняемой процедуре, в запросе только имя процедуры и передаваемые параметры, структура данных скрыта, что и требуется по условиям задачи.
(12) а что будет, если в момент записи элемента справочника в одной базе будет недоступен канал связи между двумя базами?
Или такие риски не считаются?
Имхо, это решение - подходящее, но называть его идеальным - это слишком громко
И вообще, то, что создаете элементы в базе 1С прямыми запросами - это как-то не очень похвально, учитывая то, что для решения данной задачи имеются штатные механизмы
Использование костылей в данном примере - не обоснованно.
Данная статья - попытка собрать сведения по работе (на начальном уровне) с MS Word в одном месте. Полно похожего материала, и при наличии должной усидчивости это все можно найти. Хотелось собрать основные моменты в одном месте.
- заполнение шаблона Word данными из 1С;
- заполнение колонтитулов Word данными из 1С;
- заполнение таблицы в Word данными из 1С;
В большинстве случаев перед нами ставится следующая задача:
Нужно открыть документ Word, заполненный данными из 1С.
Для этого нам нужно подготовить шаблон документа Word. Не путайте это с Word Template, специальные файлы Word, которые содержат настройки документов для многократного использования. Нам нужен обычный вордовский документ с расширениеми *.docx или *.doc. А далее поместить этот документ в макет с двоичными данными.
Читатель может справедливо заметить, что используется модальный вызов, и погрозить автору пальцем. И будет прав.
Далее я обычно создаю структуру полей, которые будут заполняться в шаблоне. Такой подход позволяет унифицировать процедуру заполнения шаблона, а также упростить последующее его изменение.
Углубимся немножко в принципы работы Word.
Каждый документ Word разделен на разделы, которые состоят из страниц.
Для каждого раздела есть возможность создавать свою нумерацию элементов, уникальные колонтитулы и настройки параметров страницы. Так, например, чтобы повернуть одну из страниц (вывести на печать как альбомную), нужно создать под неё отдельный раздел.
- Верхний колонтитул
- Основной текст
- Нижний колонтитул
Заполнение пользовательских параметров
При обращении к этим коллекциям мы можем выполнять в них поиск и получать встроенные объекты, например, таблицы.
Теперь мы более-менее поняли, как обращаться к областям Word, можем в них пошуровать и выполнить замену наших параметров:
Рассмотри подробнее метод Execute. Его параметры идентичны диалоговуму окну при замене/поиске непоседресвенно из MS Word:
2016_05_22_12_28_10.jpg ( 36.38 килобайт ) Кол-во скачиваний: 7
- Искомый текст - Строка - Текст для замены. Текст может содержать специальные параметры. Например, ^p - абзац, ^t - табуляция
- Чувствительность к регистру - Булево - Если истина, то поиск будет осуществляться с учетом регистра
- Слова целиком - Булево - Если истина, то ищутся слова целиком. Вхождение слов не учитываются. Например, при поиске слова дом будет пропущено слово домашний
- Использовать подстановочные знаки - Булево - Если истина, то используются встроенные регулярные выражения.
- Искать похожие - Булево - Если истина, то результат поиска будет содержать похожие слова
- Искать все формы - Булево - Если истина, то результат поиска будет содержать различные формы слов.
- Поиск сначала - Булево - Если истина, то будет осуществляться с начала до конца документа
- Охват - WdFindWrap - Опредяляет направление поиска
- Формат - Format - Формат искомого текста
- Строка замены - Строка - Строка, на которую будет заменен исходный текст
- Количество замен - WdReplace - Определяет сколько раз выполнять замену
- и т.д.
Данный метод не позволяет получить "Строка замены" как выделенную область, но он работает где-то в 10 раз медленнее. Для получения выделенной области можно воспользоваться немножко откорректированной типовой функцией:
Уже получив выделенную область можно отредактировать стиль текста, шрифт и т.д.
Также есть второй подход, использующий такой объект Word, как поля. Мне он не очень нравится, т.к. в больших документах, порядка 100 страниц, эти поля начинают глючить (исчезать, не подставлять нужные значения) и прочая ерунда. Ну по крайней мере в Word 2007. Но я его все равно приведу:
При подготовке шаблона в тело документа необходимо навставлять полей с типом DOCVARIABLE (можно вставлять горячими клавишими Ctrl+F9).
Доступ к таким полям можно получить следующим нехитрым образом:
Заполнение таблиц по шаблону
Итак, мы заполнили параметры в основном тексте документа, заменили параметры в колонтитулах, но у нас еще есть одна неприятность - нужно заполнить таблицу.
Подход, описанный ниже, годится только для таблиц с заранее известным форматом. Т.е. мы можем как угодно отформатировать таблицу и её строки изначально. Но потом изменять довольно-таки проблематично.
К таблицам можно получить доступ через области документа.
Далее, получив таблицу, мы работаем с ней по привычной схеме - строки, столбцы.
Для задания форматирования легче в шаблоне создать таблицу с пустой первой строкой, которую мы в последующем удалим.
Вот, в принципе, и все. Основные вопросы, возникающие при работе с Word, я постарался осветить. Надеюсь, данный обзор поможет вам в работе =)
Читайте также: