#0
by poligraf
Думал всегда, что неплохо Ворд знаю, но тут заковыка Есть вот такая обработка - Не могу и все поле в документе добавить! Делаю, как написано в инструкции - ничего не добавляет. При том, любые поля документа, DocProperty которые, добавляет. Может сначала требуется где-нибудь описать поля?
#2
by vde69
себе писал универсальную обработку // Обработка выводит в копию файла шаблона ТЗ // Файл шаблона должен иметь название СокрЛП(ИмяШаблона) + ".doc" // и лежать в каталоге КаталогИБ + "ExtFormsPrnForms" // // Параметры запуска должен быть списком значения: // "Идентификатор" - Обязательный // "КаталогДляСохранения" - Обязательный // "ИмяФайла" - Не обязательный (если пусто, то используеться имя шаблона) // "СписокПеременных" - Не обязательный (Список значений, связь по представлению, см ниже) // //***************************************************************************************************** // // Настройка шаблона WORD // // В шаблоне должны использоваться поля типа {DOCVARIABLE ИмяПеременной } // переменные Document.Variables могут не существовать, обработка сама добавляет необходимые // Перем СписокПараметров; Перем ИмяШаблона, КаталогДляСохранения, ИмяФайла, ТЗ; //******************************************* // функция возвращает строку индикатор длиной 100 символов Функция Обмен_Индикатор(значение, максимум=100) Если максимум > 0 Тогда Длина=50; Если значение<=0 тогда стр=""; Для е = 1 по Длина Цикл стр=стр+"."; КонецЦикла; Возврат "[" + стр + "]"; КонецЕсли; е1=""; Для е = 1 По Длина Цикл Если е<=((значение*Длина)/максимум) Тогда е1=е1+"|"; Иначе е1=е1+"."; КонецЕсли; КонецЦикла; Возврат "[" + е1 + "]"; Иначе Возврат ""; КонецЕсли; КонецФункции // функция устанавливает связь с WORD // в качестве параметра требуется имя открываемого файла // в случае удачи возвращает соответствие из обьектов ОЛЕ, в случае не удачи - 0 Функция WORD_УстановитьСвязь (ПолноеИмяФайла)Экспорт Результат = 0; Состояние("Идет установка связи, ждите....."); Попытка Результат = СоздатьОбъект("СписокЗначений"); Результат.УдалитьВсе; BaseOLE = СоздатьОбъект("Word.Application"); BaseOLE.ScreenUpdating = 0; BaseOLE.Visible = 0; Результат.Установить("WORD", BaseOLE); WORDФайл = BaseOLE.Documents.Add(ПолноеИмяФайла); Результат.Установить("WORDФайл", WORDФайл); МассивПеременныхДокумента = СоздатьОбъект("СписокЗначений"); МассивПеременныхДокумента.УдалитьВсе; КоличествоПеременных = WORDФайл.Fields.Count; Для е = 1 по КоличествоПеременных Цикл //Result Code ИмяПеременной = ""; ЗнПоля = СокрЛП(WORDФайл.Fields(е).Code.text); Если ВРег(Лев(ЗнПоля,11)) = "DOCVARIABLE" Тогда ЗнПоля = СокрЛП(Сред(ЗнПоля, 12)); ИмяПеременной = СокрЛП(Лев(ЗнПоля, Найти(ЗнПоля, " "))); КонецЕсли; Если ИмяПеременной <> "" Тогда МассивПеременныхДокумента.ДобавитьЗначение(ИмяПеременной); КонецЕсли; КонецЦикла; Результат.Установить("Переменные", МассивПеременныхДокумента); Исключение Результат = 0; Сообщить("Ошибка создания обьекта Microsoft Word" + ОписаниеОшибки); КонецПопытки; Возврат Результат; КонецФункции // функция разрывает связь с WORD // в качестве параметра требуеться структура созданая при установке соединения Процедура WORD_РазорватьСвязь (СписокОбьектов) Экспорт Попытка СписокОбьектов.Получить("WORDФайл").Close; СписокОбьектов.Получить("WORD").Quit; СписокОбьектов.Установить("WORD", 0); СписокОбьектов.УдалитьВсе; Исключение Сообщить(ОписаниеОшибки); КонецПопытки; КонецПроцедуры Процедура ЗакрытьОбработку (ТекстСообщения = "", СписокЗагрузки = 0) Если ТипЗначенияСтр(СписокЗагрузки) = "СписокЗначений" Тогда WORD_РазорватьСвязь (СписокЗагрузки); КонецЕсли; Если СокрЛП(ТекстСообщения) <> "" Тогда Сообщить(ТекстСообщения); КонецЕсли; СтатусВозврата; Форма.Закрыть; КонецПроцедуры Процедура Сохранить Если (СокрЛП(КаталогДляСохранения) = "") или (ФС.СуществуетФайл(СокрЛП(КаталогДляСохранения)) = 0) Тогда ЗакрытьОбработку ("Не верный каталог для сохранения"); Возврат; КонецЕсли; // подработка имени каталога Если Прав(СокрЛП(КаталогДляСохранения),1) <> "" Тогда КаталогДляСохранения = СокрЛП(КаталогДляСохранения) + ""; КонецЕсли; // подработка имени файла Если Найти(СокрЛП(ИмяФайла),".") > 0 Тогда ИмяФайла = Лев(СокрЛП(ИмяФайла), Найти(СокрЛП(ИмяФайла),".") - 1); КонецЕсли; // будем подключаться СписокЗагрузки = WORD_УстановитьСвязь (КаталогИБ + "ExtFormsPrnForms"+ СокрЛП(ИмяШаблона) + ".doc"); Если СписокЗагрузки = 0 тогда ЗакрытьОбработку ("Ошибка подключения к шаблону"); Возврат; КонецЕсли; Попытка СписокЗагрузки.Получить("WORD").DisplayAlerts = 0; СписокЗагрузки.Получить("WORDФайл").SaveAs(СокрЛП(КаталогДляСохранения) + СокрЛП(ИмяФайла) + ".doc"); СписокЗагрузки.Получить("WORD").DisplayAlerts = -1; Исключение ЗакрытьОбработку ("Неудачное копирование шаблона, " + ОписаниеОшибки, СписокЗагрузки); Возврат; КонецПопытки; СписокПеременныхДокумента = СписокЗагрузки.Получить("Переменные"); Для е = 1 по СписокПеременныхДокумента.РазмерСписка Цикл Состояние("Заполнение шапки " + Обмен_Индикатор(е, СписокПеременныхДокумента.РазмерСписка)); ИмяПеременной = СокрЛП(СписокПеременныхДокумента.ПолучитьЗначение(е)); ЗначениеПеременной = СписокПараметров.Получить(ИмяПеременной); Если СокрЛП(ЗначениеПеременной) = "" Тогда ЗначениеПеременной = " "; // пустое значение в переменную ворда не записывается, будем писать пробел КонецЕсли; ЕстьПерем = 0; КоличествоПеременных = СписокЗагрузки.Получить("WORDФайл").Variables.Count; Для е1 = 1 по КоличествоПеременных Цикл Если СокрЛП(СписокЗагрузки.Получить("WORDФайл").Variables(е1).Name) = ИмяПеременной Тогда ЕстьПерем = 1; Прервать; КонецЕсли; КонецЦикла; Если ЕстьПерем = 0 Тогда СписокЗагрузки.Получить("WORDФайл").Variables.Add(ИмяПеременной, ЗначениеПеременной); Иначе СписокЗагрузки.Получить("WORDФайл").Variables(ИмяПеременной).Value = ЗначениеПеременной; КонецЕсли; КонецЦикла; // все теперь запишем Попытка СписокЗагрузки.Получить("WORD").DisplayAlerts = 0; СписокЗагрузки.Получить("WORDФайл").Fields.Update; СписокЗагрузки.Получить("WORDФайл").SaveAs(СокрЛП(КаталогДляСохранения) + СокрЛП(ИмяФайла) + ".doc"); СписокЗагрузки.Получить("WORD").DisplayAlerts = -1; Исключение ЗакрытьОбработку ("Неудачное сохранение шаблона", СписокЗагрузки); Возврат; КонецПопытки; // усе, можно выходить ЗакрытьОбработку ("Файл удачно сохранен", СписокЗагрузки); КонецПроцедуры Процедура ПриОткрытии ТекСписокПараметров = Форма.Параметр; Если ТипЗначенияСтр(ТекСписокПараметров) = "СписокЗначений" Тогда // загрузим параметры Попытка ИмяШаблона = СокрЛП(ТекСписокПараметров.Получить("Идентификатор")); КаталогДляСохранения = СокрЛП(ТекСписокПараметров.Получить("КаталогДляСохранения")); ИмяФайла = СокрЛП(ТекСписокПараметров.Получить("ИмяФайла")); СписокПараметров = ТекСписокПараметров.Получить("СписокПеременных"); Если СокрЛП(ИмяФайла) = "" Тогда ИмяФайла = ИмяШаблона; КонецЕсли; Если ТипЗначенияСтр(СписокПараметров) <> "СписокЗначений" Тогда СписокПараметров = СоздатьОбъект("СписокЗначений"); СписокПараметров.УдалитьВсе; КонецЕсли; Исключение ЗакрытьОбработку ("Ошибка параметров"); Возврат; КонецПопытки; // авто выполнение Сохранить; Форма.Закрыть; КонецЕсли; КонецПроцедуры ТЗ = СоздатьОбъект("ТаблицаЗначений"); ТЗ.Очистить; СписокПараметров = СоздатьОбъект("СписокЗначений"); СписокПараметров.УдалитьВсе; Описание = "Обработка выводит в копию файла шаблона список переменных |Файл шаблона должен иметь название СокрЛП(ИмяШаблона) + "".doc"" |и лежать в каталоге КаталогИБ + ""ExtFormsPrnForms"" | |Параметры запуска должен быть списком значения: |""Идентификатор"" - Обязательный |""КаталогДляСохранения"" - Обязательный |""ИмяФайла"" - Не обязательный (если пусто, то используеться имя шаблона) |""СписокПеременных"" - Не обязательный (Список значений, связь по представлению, см ниже) |"
#3
by poligraf
та обработка, как я понимаю то же самое делает. У тебя, судя по "КоличествоПеременных = WORDФайл.Fields.Count", тоже работает с полями в документе. Я не могу в Ворде поля создать:) Через вставить - поле - DocVariable Имя поля пишу - ничего не добавляется
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- Печать бланков Word из 1с по типу слияния
- Печать 2-х различных форм на 2-х листах по одной кнопке "Печать"
- Программная печать(печать без просмотра) на сетевой принтер(с установкой)
- Печать договоров из среды 1С:Предприятие в формате MS Word
- Добавление кнопки печать и печать по умолчанию?
- Печать табличной части документа в word
- БСП 2.1. Подсистема "Печать" печать с выбором печатной формы.
- Печать комплекта документов. Двусторонняя печать.
В этой группе 1С
- Регулярное перепроведение документов в 1С.Бухгалтерии 8
- Где хранятся сохраняемые значения форм?
- Как вывести данные из построителя в свой макет ?
- Как добавить произвольный подвал в СКД?
- внешняя функция в запросе в регистру партий 77
- Аналог Project Expert
- Режим пароля в табличном поле...
- Списание материалов на 20 счет в комплексной автоматизации
- ЗУП - расходы будущих периодов
- БП 1.6.23.2. Закрытие 23 счета.
- Каким отчетом можно посмотреть Остатки товаров по ГТД в бух 8
- Поступление набор комплекта
- Оплата труда при ОСНО и ЕНВД в «1С:Зарплата и управление персоналом 8»
- Как определить дату и время проведения документа?
- Конвертер УСН 7.7 --> УТ 8.1
- Обработчик кнопки Сформировать
- Прочитать текст в KOI-8
- ВДГБ: Бухгалтерия для НКО не хочет обновляться
- Комплексная автоматизация, 1.0.6.1, РАУЗ, Расчет себестоимости
- И снова порно-вирус-смс