Имя: Пароль:
1C
 
Запись в Word
0 Масянька
 
01.12.10
15:43
Возникла проблема:
печ. форма в Word, заполняется из 1С 7.7. Все хорошо, но в Word есть надпись, в которой надо заполнять строки из 7.7. Вот они и не заполняются.
Почему?

мОбъект.Find.Execute("[ПечИННПокупателя]",0,0,,,,,,,СокрЛП(мИННПокупателя),2);
мОбъект.Find.Execute("[ПечКПППокупателя]",0,0,,,,,,,СокрЛП(мКПППокупателя),2);
мОбъект.Find.Execute("[ПечРСПокупателя]",0,0,,,,,,,СокрЛП(мРСчетПокупателя),2);
мОбъект.Find.Execute("[ПечБанкПокупателя]",0,0,,,,,,,СокрЛП(мБанкПокупателя),2);
мОбъект.Find.Execute("[ПечКСПокупателя]",0,0,,,,,,,СокрЛП(мКСчетПокупателя),2);
1 План счетов
 
01.12.10
15:47
2 Масянька
 
01.12.10
16:24
я ПРОЧИТАЛА :) Спасибо. Но у меня в тексте замена происходит. Не меняет в надписи. Ни чем не поможете?
3 Масянька
 
01.12.10
16:29
Один разок апну :)
4 AlexYurg
 
01.12.10
16:35
А нельзя от надписей избавиться?
Например, в таблицу загнать.
5 Масянька
 
01.12.10
16:36
(4) А с ними так сложно?
6 AlexYurg
 
01.12.10
16:39
(5) У меня без надписей нормально работает, с надписями не пробовал. Вот я и говорю - если проблема возникает именно в надписях - попробуй от них избавиться.
7 Масянька
 
01.12.10
16:42
Да не хочется - очень уж красивенько. В таблице будет хуже. Но все равно - Спасибо.
8 План счетов
 
01.12.10
16:51
(7) может попробовать в ВОРДЕ макрос записать - когда вносите изменения в надпись, и код макроса перенести в 1С?
9 filh
 
01.12.10
16:52
попробуй:

мОбъект.Find.ClearFormatting
мОбъект.Find.Replacement.ClearFormatting

перед мОбъект.Find.Execute
10 Масянька
 
01.12.10
16:57
(8) Не умею я макросы писать :(
(9) Ругается - неопознанный оператор :(
11 smaharbA
 
01.12.10
17:37
надписи вобщето это шейпы а так
12 Масянька
 
01.12.10
18:00
(11) Шейпы = это чего?
13 Масянька
 
02.12.10
14:56
Поломав весь мозг дошла:

мWord = СоздатьОбъект("Word.Application");
мWord.Visible = 0;
мNewDoc = мWord.Documents;
мДок = мNewDoc.Add("D:\1С\БД клиентов\КС\1Сv7\Db\Договора\Шаблоны\Типовой_КуплиПродажи_1.dot", 0, 0, 1);  
мОбъект = мДок.Content;
       
мОбъект.Find.Execute("[ПечНомерДоговора]",0,0,,,,,,,НомерДоговора,2);
       
СчетчикЦикла = 0;
Для СчетчикЦикла = 1 По мДок.Shapes.Count Цикл
       мНашли = мДок.Shapes.Item(СчетчикЦикла).Select();
Сообщить("1 - " + мНашли);            
Сообщить("2 - " + мДок.Shapes.Count);            
Сообщить("3 - " + мНашли.Find("["));            
КонецЦикла;



На сточке с Find ругается.
Поможите, кто чем может :(
14 Масянька
 
06.12.10
12:53
Я все-таки победила :)))))))

// формируем файл
мWord = СоздатьОбъект("Word.Application");
мWord.Visible = 0;
мNewDoc = мWord.Documents;
мДок = мNewDoc.Add("D:\1С\БД клиентов\КС\1Сv7\Db\Договора\Шаблоны\Типовой_КуплиПродажи_1.dot", 0, 0, 1);  
мОбъект = мДок.Content;
   
// подставляем значения по тексту договора - признак замены []
мОбъект.Find.Execute("[ПечНомерДоговора]",0,0,,,,,,,НомерДоговора,2);
мОбъект.Find.Execute("[ПечДатаДоговора]",0,0,,,,,,,Нрег(СокрЛП(мДатаДоговора)),2);
мОбъект.Find.Execute("[ПечПокупатель]",0,0,,,,,,,СокрЛП(мПокупатель),2);
мОбъект.Find.Execute("[ПечРуководитель]",0,0,,,,,,,мПечОтветственноеЛицо,2);
мОбъект.Find.Execute("[ПечОснование]",0,0,,,,,,,СокрЛП(Основание),2);      
       
// подставляем значения в реквизиты покупателя: надпись, признак замены []
СчетчикЦикла = 0;
КолВоНадписей = мДок.Shapes.Count;
Для СчетчикЦикла = 1 По КолВоНадписей Цикл
   мНашли = мДок.Shapes.Item(СчетчикЦикла).Select();
   Если Число(мДок.Application.Selection.ShapeRange.Type) = 17 Тогда
       мДок.Application.Selection.Range.Find.Execute("[ПечПокупательРеквизиты]",0,0,,,,,,,СокрЛП(мПокупатель),2);
       мДок.Application.Selection.Range.Find.Execute("[ПечЮрАдресПокупателя]",0,0,,,,,,,СокрЛП(мЮрАдресПокупателя),2);
       мДок.Application.Selection.Range.Find.Execute("[ПечПочтАдресПокупателя]",0,0,,,,,,,СокрЛП(мПочтПокупателя),2);
       мДок.Application.Selection.Range.Find.Execute("[ПечТелефонПокупателя]",0,0,,,,,,,СокрЛП(мТелефонПокупателя),2);
       мДок.Application.Selection.Range.Find.Execute("[ПечИННПокупателя]",0,0,,,,,,,СокрЛП(мИННПокупателя),2);
       мДок.Application.Selection.Range.Find.Execute("[ПечКПППокупателя]",0,0,,,,,,,СокрЛП(мКПППокупателя),2);
       мДок.Application.Selection.Range.Find.Execute("[ПечРСПокупателя]",0,0,,,,,,,СокрЛП(мРСчетПокупателя),2);
       мДок.Application.Selection.Range.Find.Execute("[ПечБанкПокупателя]",0,0,,,,,,,СокрЛП(мБанкПокупателя),2);
       мДок.Application.Selection.Range.Find.Execute("[ПечКСПокупателя]",0,0,,,,,,,СокрЛП(мКСчетПокупателя),2);
       мДок.Application.Selection.Range.Find.Execute("[ПечБИКБанкаПокупателя]",0,0,,,,,,,СокрЛП(мБИКПокупателя),2);
       мДок.Application.Selection.Range.Find.Execute("[ПечПокупательПодпись]",0,0,,,,,,,СокрЛП(ПодписьОтветственногоЛица),2);
   КонецЕсли;
КонецЦикла;
       
// записываем файл
мДок.SaveAs(мИмяФайла);
15 dk
 
06.12.10
12:59
а сразу в шейпах текст менять? без поиска
16 Масянька
 
06.12.10
13:14
Подскажиет как?
17 dk
 
06.12.10
13:30
шейп = мНашли = мДок.Shapes.Item(СчетчикЦикла);
шейп.TextFrame.TextRange.Text = "ываывафываываыва"
----
или надо номера шейпов заранее знать типа
шейпИНН = мНашли = мДок.Shapes.Item(НомерШейпаИНН);
шейпИНН.TextFrame.TextRange.Text = мИННПокупателя;
18 dk
 
06.12.10
13:31
мНашли лишнее )
19 Масянька
 
06.12.10
13:38
Насчет мНашли согласна.
Остальное - проверю.
20 Масянька
 
06.12.10
13:43
Ругается: Данный объект не поддерживает вложенный текст.
Еще предложения?
21 Масянька
 
06.12.10
14:54
Раз других предложений нет - можно (14) порекомендовать в Базу знаний?
Очень долго искала решение - может кому-то поможет.
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.