Имя: Пароль:
1C
1С v8
Как заполнять документ Word из 1С.
0 Вадяс
 
02.12.13
20:14
Заполняю договор в ворде из 1С.


    Документ = ПолучитьCOMОбъект("","Word.Application");
    Документ.Documents.Open(Константы.ИмяШаблонаДоговора.Получить());
    //Документ.ActiveDocument;
    Замена = Документ.ActiveDocument.Range().Find;
    Замена.Execute("пНомерДоговора", Ложь, Истина, Ложь, , , Истина, , Ложь, ОбщегоНазначения.ПолучитьНомерНаПечать(ЭтотОбъект));
    Замена = Документ.ActiveDocument.Range().Find;
    Замена.Execute("пДатаДоговора", Ложь, Истина, Ложь, , , Истина, , Ложь, Формат(Дата, "ДЛФ=DD"));
    Замена = Документ.ActiveDocument.Range().Find;
    Замена.Execute("пТуристы", Ложь, Истина, Ложь, , , Истина, , Ложь, ПолучитьТекстТуристов());


Проблема возникает с третьей заменой, так как ПолучитьТекстТуристов() возвращает длинную строку.
Как можно решить задачу?
Слишком длинный строковый параметр.
1 Вадяс
 
02.12.13
20:16
Ворд выдает ошибку:

Ошибка при вызове метода контекста (Execute)
Произошла исключительная ситуация (Microsoft Word): Слишком длинный строковый параметр.
2 bborisko
 
02.12.13
20:25
(1) Разбей на несколько покороче)
3 Вадяс
 
02.12.13
20:33
(2) мне кажется, что это будет мягко говоря через задницу. А покрасивше никак нельзя?
4 bborisko
 
02.12.13
20:40
http://forum.infostart.ru/forum26/topic72482/
цитата "Разбиваешь вставляемую строку на строку с количеством символов 255-ДлинаСтроки("{"+Элемент.Ключ+"}")
потом к каждой отрезанной части перед вставкой в ворд дописываешь "{"+Элемент.Ключ+"}" вот и всё.
Таким образом у тебя цикл будет постоянно находить ту часть, которую надо заменить твоим длинным текстом и по кускам ты его заменишь"
5 bborisko
 
02.12.13
20:41
Либо использовать например вставку из буфера - но тут надо спозиционироваться точно - куда вставлять  - зато любой размер)
6 МихаилМ
 
02.12.13
20:44
сделайте закладки или метки
и с ними работайте
7 Вадяс
 
02.12.13
21:00
(4) (6) Спасибо попробую.
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший