|
v7: Не получается изменить нижний колонтитул в Word из-под 1с 7.7 | ☑ | ||
---|---|---|---|---|
0
Absurdus
29.11.16
✎
11:12
|
Процедура ЗаменитьТекст(Текст1,Текст2)
Word.Selection.Find.Replacement.ClearFormatting(); Word.Selection.Find.Execute(Текст1,0,0,0,0,0, 1,1,0,Текст2,2); КонецПроцедуры//ЗаменитьТекст Процедура ЗаменитьТекстКолонтитула(Текст1,Текст2) Word.Selection(1).Footers.Range.Find.Execute(Текст1,,,,,,,,,Текст2,2); КонецПроцедуры//ЗаменитьТекст Процедура Печать() ШаблонДоговора = КаталогИБ() + "\Шаблоны\Договор с ТД.doc"; Если ФС.СуществуетФайл(ШаблонДоговора) = 0 Тогда Предупреждение("Нет файла шаблона договора с ТД Гидросервис!"); СтатусВозврата(0); Возврат; КонецЕсли; Word = СоздатьОбъект("Word.Application"); Word.Visible = 1; Doc = Word.Documents.Add(ШаблонДоговора); //***Номер документа ЗаменитьТекст("%НомерДоговора%" ,СокрЛП(НомерДог)); //***Дата договора ДатаДок = ДатаДог; День = ""; Месяц = ""; Год = ""; День = ?(ДатаЧисло(ДатаДок)<10,"0"+ДатаЧисло(ДатаДок),ДатаЧисло(ДатаДок)); МесяцЧисло = 0 ; МесяцЧисло = ДатаМесяц(ДатаДок); СЗМ = СоздатьОбъект("СписокЗначений"); СЗМ.ДобавитьЗначение("Января"); СЗМ.ДобавитьЗначение("Февраля"); СЗМ.ДобавитьЗначение("Марта"); СЗМ.ДобавитьЗначение("Апреля"); СЗМ.ДобавитьЗначение("Мая"); СЗМ.ДобавитьЗначение("Июня"); СЗМ.ДобавитьЗначение("Июля"); СЗМ.ДобавитьЗначение("Августа"); СЗМ.ДобавитьЗначение("Сентября"); СЗМ.ДобавитьЗначение("Октября"); СЗМ.ДобавитьЗначение("Ноября"); СЗМ.ДобавитьЗначение("Декабря"); Месяц = СЗМ.ПолучитьЗначение(МесяцЧисло); Год = ДатаГод(ДатаДок); ЗаменитьТекст("%День%" ,День); ЗаменитьТекст("%Месяц%" ,Месяц); ЗаменитьТекст("%Год%" ,Год); //***Контрагент ЗаменитьТекст("%Контрагент%" ,СокрЛП(Контрагент)); //***Должность ЗаменитьТекст("%Должность%" ,СокрЛП(Должность)); //***ФИО директора ЗаменитьТекст("%ФИО%" ,СокрЛП(ФИО)); //***Дейтсвует на основании ЗаменитьТекст("%ДействующегоНаОсновании%" ,СокрЛП(ДействующегоНаОсновании)); //***Отсрочка ЗаменитьТекст("%ДнейОтсрочки%" ,СокрЛП(ДнейОтсрочки)); ЗаменитьТекст("%СуммаОтсрочки%" ,СокрЛП(СуммаОтсрочки)); //***Платежные реквизиты ЗаменитьТекст("%КраткоеНаименование%",СокрЛП(КраткоеНаименование)); ЗаменитьТекст("%ОГРН%" ,СокрЛП(ОГРН)); ЗаменитьТекст("%ЮрАдрес%" ,СокрЛП(ЮрАдрес)); ЗаменитьТекст("%ПочтовыйАдрес%" ,СокрЛП(ПочтовыйАдрес)); ЗаменитьТекст("%ИНН%" ,СокрЛП(ИНН)); ЗаменитьТекст("%КПП%" ,СокрЛП(КПП)); ЗаменитьТекст("%РассчетныйСчет%" ,СокрЛП(РассчетныйСчет)); ЗаменитьТекст("%Банк%" ,СокрЛП(Банк)); ЗаменитьТекст("%КоррСчет%" ,СокрЛП(КоррСчет)); ЗаменитьТекст("%БИК%" ,СокрЛП(БИК)); ЗаменитьТекст("%Телефоны%" ,СокрЛП(Телефоны)); ЗаменитьТекст("%Емаил%" ,СокрЛП(Емаил)); ЗаменитьТекст("%РасшифровкаПодписи%",СокрЛП(РасшифровкаПодписи)); //Нижний колонтитул ЗаменитьТекстКолонтитула("%НомерДоговора%",СокрЛП(НомерДог)); ЗаменитьТекстКолонтитула("%ДатаДоговора%" ,СокрЛП(Строка(ДатаДог))); Doc.Activate(); Word = 0; КонецПроцедуры Ну и ошибка в итоге: Word.Selection(1).Footers.Range.Find.Execute(Текст1,,,,,,,,,Текст2,2); {C:\USERS\VPN1C\DESKTOP\База\EXTFORMS\ПЕЧАТЬДОГОВОРА.ERT(152)}: Коллекции не поддерживаются Как побороть? |
|||
1
Масянька
29.11.16
✎
11:15
|
У меня верхний работает так:
// верхний колонтитул мКолонтитул = мДок.Sections.Item(1).Headers.Item(1).Range; мКолонтитул.Find.Execute("[ПечНомерДоговора]",0,0,,,,,,,мНомерДоговора,2); мКолонтитул.Find.Execute("[ПечДатаДоговора]",0,0,,,,,,,Нрег(СокрЛП(мДатаДоговора)),2); Нижний не использую. Скорее всего - по аналогии. |
|||
2
Absurdus
29.11.16
✎
11:27
|
(1) Word.Selection.Item(1).Footers.Item(1).Range.Find.Execute(Текст1,,,,,,,,,Текст2,2);
{C:\USERS\VPN1C\DESKTOP\База\EXTFORMS\ПЕЧАТЬДОГОВОРА.ERT(152)}: Поле агрегатного объекта не обнаружено (Item) |
|||
3
Absurdus
29.11.16
✎
11:28
|
Вернее так
Word.Sections.Item(1).Footers.Item(1).Range.Find.Execute(Текст1,,,,,,,,,Текст2,2); {C:\USERS\VPN1C\DESKTOP\База\EXTFORMS\ПЕЧАТЬДОГОВОРА.ERT(152)}: Поле агрегатного объекта не обнаружено (Sections) |
|||
4
Масянька
29.11.16
✎
11:42
|
(3) У меня:
1. инфу из верхнего перенесла в нижний (в шаблоне Word). 2. изменила строку кода: мКолонтитул = мДок.Sections.Item(1).Footers.Item(1).Range; В колонтитуле такая строчка - Договор № [ПечНомерДоговора] на поставку товаров от [ПечДатаДоговора]. Всё арбайтен. |
|||
5
Масянька
29.11.16
✎
11:44
|
+ (4) Не плохая инфа для работы с Word - https://msdn.microsoft.com/ru-ru/library/kw65a0we.aspx
|
|||
6
Базис
naïve
29.11.16
✎
11:46
|
Включи запись макроса, сделай руками, останови запись макроса.
|
|||
7
Ёпрст
29.11.16
✎
11:49
|
(3) дык не к тому объекту применяешь метод.
|
|||
8
Ёпрст
29.11.16
✎
11:49
|
к объекту doc пробуй.
|
|||
9
Absurdus
29.11.16
✎
11:55
|
Doc.Sections.Footers.Item(1).Range();
Doc.Find.Execute(Текст1,,,,,,,,,Текст2,2); {C:\USERS\VPN1C\DESKTOP\База\EXTFORMS\ПЕЧАТЬДОГОВОРА.ERT(153)}: Microsoft Word: "Range" не является методом. |
|||
10
Масянька
29.11.16
✎
11:58
|
(9)
// формируем файл мWord = СоздатьОбъект("Word.Application"); мWord.Visible = 0; мNewDoc = мWord.Documents; мШаблон = СокрЛП(Строка(КаталогШаблонов + мШаблон)); мДок = мNewDoc.Add(мШаблон, 0, 0, 1); |
|||
11
Ёпрст
29.11.16
✎
12:05
|
(9) range без скобок
|
|||
12
Absurdus
29.11.16
✎
12:22
|
(11) Doc.Sections.Item(1).Footers.Item(1).Range<<?>>;
{C:\USERS\VPN1C\DESKTOP\База\EXTFORMS\ПЕЧАТЬДОГОВОРА.ERT(153)}: Неопознанный оператор |
|||
13
Absurdus
29.11.16
✎
12:31
|
Doc.Sections(1).Footers(1).Range.Find.Execute(Текст1,,,,,,,,,Текст2,2);
Такое прокатило. Всем спасибо. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |