Имя: Пароль:
1C
 
Word, глюки с количеством страниц
0 Икогнито
 
17.11.09
09:41
Получаю количество страниц из 1С
КоличествоЛистовWord = СокрЛП(WordApplication.ActiveDocument.BuiltInDocumentProperties(14).Value);

Фигня следующая:
- если контролирую это в отладчике = 6 (правильно)
- если отключаю точку останова = 3 (не правильно)

Что за фигня может быть?
1 Икогнито
 
17.11.09
09:45
гз
2 Aprobator
 
17.11.09
09:46
Значит ошибка в чем-то другом. Не в этом месте кода. Может где позже КоличествоЛистовWord переопределяется. Для контроля. Сделай Сообщить(КоличествоЛистовWord ) после этой строчки кода.
3 Икогнито
 
17.11.09
09:49
(2)
В случае, если в отладчике точка останова стоит, сообщает 6 (правильно), если точка не стоит - сообщает 3(не правильно)
В аналогичной ситуации если документ из 5 листов, то сообщает 2 без точки останова
4 Икогнито
 
17.11.09
09:50
WordApplication = MSWord.Application;
       
       ЗаменаВWord(WordApplication.ActiveDocument,Параметры);    
       
       //прописываем верхний колонтитул
       WordApplication.ActiveDocument.Sections(1).Headers(1).Range.Text=?(Защищать,"типовой","нетиповой");
       WordApplication.ActiveDocument.Sections(1).Headers(1).Range.Font.Italic = 9999998;
       WordApplication.ActiveDocument.Sections(1).Headers(1).Range.Font.Underline = 1;
               
       //прописываем нижний колонтитул
       Текст = WordApplication.ActiveDocument.Sections(1).Footers(1).Range.Text;
       Текст = СтрЗаменить(Текст,"{КраткоеФизическоеЛицоПерваяСторона}",Параметры.КраткоеФизическоеЛицоПерваяСторона);
       Текст = СтрЗаменить(Текст,"{КраткоеФизическоеЛицоВтораяСторона}",Параметры.КраткоеФизическоеЛицоВтораяСторона);
       
       //MSR ***  16.11.09 добавил
       //{
       КоличествоЛистовWord = СокрЛП(WordApplication.ActiveDocument.BuiltInDocumentProperties(14).Value);
       Параметры.Очистить();
       Параметры.Вставить("КоличествоСтраницДокумента",КоличествоЛистовWord);
       ЗаменаВWord(WordApplication.ActiveDocument,Параметры);
       //}
       //MSR ***** 16.11.09 конец правки

       
       WordApplication.ActiveDocument.Sections(1).Footers(1).Range.Text=Текст;
       WordApplication.ActiveDocument.Sections(1).Footers(1).PageNumbers.Add(2, Истина);
               
       Если Защищать Тогда //устанавливаем защиту
           WordApplication.ActiveDocument.Protect(2,Ложь,СокрЛП(ТекущаяДата()),Ложь,Ложь);    
       КонецЕсли;

       WordApplication.ActiveDocument.Save();
       
       MSWord.ActiveWindow.Visible = Истина; //делаем окно видимым                    
       WordApplication.PrintPreview = Истина;
       MSWord.ActiveWindow.ActivePane.View.Zoom.Percentage = 120;
5 smaharbA
 
17.11.09
09:54
сперва весь код выкин на
6 Икогнито
 
17.11.09
09:59
Попытка
       MSWord = ПолучитьCOMОбъект("","Word.Application");
       MSWord.Documents.Open(ИмяВремФайлаШаблонаДоговора);
   Исключение
       MSWord = 0;
       Сообщить("Не удалось подключиться к MSWord!",СтатусСообщения.Внимание);
       Возврат;
   КонецПопытки;
   
   Попытка
       
       
       WordApplication = MSWord.Application;
       
       ЗаменаВWord(WordApplication.ActiveDocument,Параметры);    
       
       //прописываем верхний колонтитул
       WordApplication.ActiveDocument.Sections(1).Headers(1).Range.Text=?(Защищать,"типовой","нетиповой");
       WordApplication.ActiveDocument.Sections(1).Headers(1).Range.Font.Italic = 9999998;
       WordApplication.ActiveDocument.Sections(1).Headers(1).Range.Font.Underline = 1;
               
       //прописываем нижний колонтитул
       Текст = WordApplication.ActiveDocument.Sections(1).Footers(1).Range.Text;
       Текст = СтрЗаменить(Текст,"{КраткоеФизическоеЛицоПерваяСторона}",Параметры.КраткоеФизическоеЛицоПерваяСторона);
       Текст = СтрЗаменить(Текст,"{КраткоеФизическоеЛицоВтораяСторона}",Параметры.КраткоеФизическоеЛицоВтораяСторона);
       
       //MSR ***  16.11.09 добавил
       //{
       КоличествоЛистовWord = СокрЛП(WordApplication.ActiveDocument.BuiltInDocumentProperties(14).Value);
       Параметры.Очистить();
       Параметры.Вставить("КоличествоСтраницДокумента",КоличествоЛистовWord);
       ЗаменаВWord(WordApplication.ActiveDocument,Параметры);
       //}
       //MSR ***** 16.11.09 конец правки

       
       WordApplication.ActiveDocument.Sections(1).Footers(1).Range.Text=Текст;
       WordApplication.ActiveDocument.Sections(1).Footers(1).PageNumbers.Add(2, Истина);
               
       Если Защищать Тогда //устанавливаем защиту
           WordApplication.ActiveDocument.Protect(2,Ложь,СокрЛП(ТекущаяДата()),Ложь,Ложь);    
       КонецЕсли;

       WordApplication.ActiveDocument.Save();
       
       MSWord.ActiveWindow.Visible = Истина; //делаем окно видимым                    
       WordApplication.PrintPreview = Истина;
       MSWord.ActiveWindow.ActivePane.View.Zoom.Percentage = 120;        

   Исключение
       Сообщить("Не удалось сформировать договор! Обратитесь в службу поддержки!",СтатусСообщения.Важное);
       Сообщить(ОписаниеОшибки());
       WordApplication.ActiveDocument.Close();
   КонецПопытки;
   
   WordApplication = 0;
   MSWord = 0;
7 Aprobator
 
17.11.09
10:02
а WordApplication.ActiveDocument.Lists.Count что выдает?
8 Икогнито
 
17.11.09
10:11
(7) 1 выдает
9 Икогнито
 
17.11.09
10:22
up
10 Aprobator
 
17.11.09
10:26
попробуй принтер определить перед получением количества страниц.
11 Икогнито
 
17.11.09
10:50
(10) от лукавого это
12 smaharbA
 
17.11.09
12:38
(9) код целиком переписывай сперва, потом будет разговор...
код очень плохой