|
Печать в word | ☑ | ||
---|---|---|---|---|
0
ИУБиПовиц
30.07.12
✎
13:38
|
Здравствуйте. На текущий момент есть печатная форма, которая печатается из документа в табличный документ. Необходимо переделать, что бы печатолось в word. Собственно переделал, но некоторые параметры не заполняются, логику я понять толком не могу. вот код.
Функция ПолучитьМассивИменПараметров(ОбластьТабДокумента) Экспорт МассивИменПараметров = Новый Массив; Для НомерСтроки = 1 По ОбластьТабДокумента.ВысотаТаблицы Цикл Для НомерКолонки = 1 По ОбластьТабДокумента.ШиринаТаблицы Цикл Ячейка = ОбластьТабДокумента.Область(НомерСтроки, НомерКолонки, НомерСтроки, НомерКолонки); Если Ячейка.Заполнение = ТипЗаполненияОбластиТабличногоДокумента.Параметр Тогда //если такого параметра еще нет, то добавим его Если МассивИменПараметров.Найти(Ячейка.Параметр) = Неопределено тогда МассивИменПараметров.Добавить(Ячейка.Параметр); КонецЕсли; ИначеЕсли Ячейка.Заполнение = ТипЗаполненияОбластиТабличногоДокумента.Шаблон Тогда //выделим все параметры в шаблоне в отдельные строки ТекстШаблона = Ячейка.Текст; ТекстШаблона = СтрЗаменить(ТекстШаблона, "[", Символы.ПС + "["); ТекстШаблона = СтрЗаменить(ТекстШаблона, "]", Символы.ПС); Для Счетчик = 1 По СтрЧислоСтрок(ТекстШаблона) Цикл ТекСтрока = СтрПолучитьСтроку(ТекстШаблона, Счетчик); Если Лев(ТекСтрока, 1) = "[" тогда ИмяПараметра = Сред(ТекСтрока, 2); //если такого параметра еще нет, то добавим его Если МассивИменПараметров.Найти(ИмяПараметра) = Неопределено тогда МассивИменПараметров.Добавить(ИмяПараметра); КонецЕсли; КонецЕсли; КонецЦикла; КонецЕсли;//конец проверки, что в ячейке - текст, параметр или шаблон КонецЦикла;//конец обхода по колонкам КонецЦикла;//конец обхода по строкам Возврат МассивИменПараметров; КонецФункции Функция Печать(ДокОбъект, ТабДок,ИзОБработки = ЛОЖЬ) Экспорт ТабДокСПарам = Новый ТабличныйДокумент; Списокмакетов = Новый СписокЗначений; Печать_БезПечати(ДокОбъект,ТабДокСПарам,ИзОБработки,СписокМакетов); //тут собственно старая обработка печати из которой я параметры хочу выдернуть Макет= ПолучитьМакет("макетВорд"); ОбъектВорд = Макет.Получить(); // Документ из объекта и его активация Документ = ОбъектВорд.Application.Documents(1); Документ.Activate(); // Выборка данных Выборка = ОбъектВорд.Application.Selection; для каждого Макет из СписокМакетов цикл знч = макет.Значение; ИмяПараметров = ПолучитьМассивИменПараметров(знч); для каждого имя из ИмяПараметров цикл Замена = Документ.Content.Find; попытка РезультатЗамены = Замена.Execute("[" + имя + "]", , , , , , , , , знч.Параметры[имя], ); исключение Сообщить("не могу вывести " + "[" + имя + "]" + знч.Параметры[имя]); КонецПопытки; КонецЦикла; КонецЦикла; ОбъектВорд.Application.Visible = Истина; ОбъектВорд.Activate(); |
|||
1
Масянька
30.07.12
✎
13:43
|
По коду - вроде (!) все правильно.
Какие параметры не заполняются? |
|||
2
ИУБиПовиц
30.07.12
✎
13:56
|
Да он как то их по своему разумению заполняет-не заполняет, я пока и непойму в чем беда..
|
|||
3
ИУБиПовиц
30.07.12
✎
14:02
|
(1) не знаете Документ.Content.Find чувствителен к регистру? поиск по всему доку идет или первый попавшийся?
|
|||
4
Масянька
30.07.12
✎
14:05
|
[Перем] - именно так и надо искать/менять.
Таблицы, надписи - так такой алес капут.... |
|||
5
ИУБиПовиц
30.07.12
✎
14:14
|
Все разобрался, дело было в обычных 95%(прокладке между стулом и компьютером:)) иногда параметры имели тип справочник, и в этом случае надо было пихать спр.наименование..
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |