Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 8 общая

Работа с ActiveDocument

Работа с ActiveDocument
Я
   новичок12345
 
27.12.12 - 10:03
Добрый день, подскажите пожалуйста!
Хочу вывести в Ворд после определенной строки Таблицу Значений.
Стандартно - поиск и замена не знаю как вывести ТаблицуЗначений.
Поэтому решил найти строку, после которой нужно вставлять ТЗ:
Замена = Документ.Content.Find;
Замена.Execute("Строка поиска");
Для каждого Строка Из Товары Цикл
        
            Text.MoveRight(,1);
            Text.EndKey();
            Text.TypeParagraph();
            Text.TypeText("Текст");
        КонецЦикла;
Но курсор остается в начале, соответсвенно выводится не там где нужно моя ТЗ.
Подскажите, как поместить курсор в конец найденной строки?
 
 
   новичок12345
 
1 - 27.12.12 - 10:15
ап
   новичок12345
 
2 - 27.12.12 - 10:22
Помогите!!! Все утро мозг взрываю себе)
   ДайтеДайтеСказать
 
3 - 27.12.12 - 10:25
Вот так таблица значений выводится

    
   // Табличная часть
 
    ВсегоТЧ = УПН_ОбщиеПроцедуры.ПолучитьКоличествоТЧ(СсылкаНаОбъект);
    Для WordDocTableNuber = 1 По WordDoc.Tables.Count() Цикл
        TC = WordDoc.Tables(WordDocTableNuber);
        
       // Обходим все строки таблицы в документе Ворд
 
        НомерСтрокиДок = 1;
        Попытка
            СтрокаТаблицы = TC.Rows(НомерСтрокиДок);
        Исключение
           // Есть строки объединеные по вертикали
 
            Продолжить;
        КонецПопытки;
       //Для Каждого СтрокаТаблицы Из TC.Rows Цикл
 
        Пока НомерСтрокиДок <= TC.Rows.Count() Цикл
            СтрокаТаблицы = TC.Rows(НомерСтрокиДок);
           // Ищем реквизит ТЧ
 
            НашлиРеквизитТЧ = Ложь;
            КоличествоПолей = СтрокаТаблицы.Range.Fields.Count;
            Если КоличествоПолей > 0 Тогда
                Для Инд = 1 По КоличествоПолей Цикл
                    Ном = КоличествоПолей - Инд + 1;
                    СтрокаТаблицы.Range.Fields(Ном).Select(); 
                    ИмяРеквизита = WD.Selection.Text;                        
                    Если ПустаяСтрока(ИмяРеквизита) Тогда
                        Продолжить;
                    КонецЕсли;  
                   // Получим имя ТЧ
 
                    ПозицияТочки = Найти(ИмяРеквизита, ".");
                    Если ПозицияТочки > 0 Тогда
                        ИмяТЧ = Лев(ИмяРеквизита, ПозицияТочки - 1);
                    Иначе
                        Продолжить;
                    КонецЕсли;
                    Если Не УПН_ОбщиеПроцедуры.ОбъектСодержитТЧ(СсылкаНаОбъект, ИмяТЧ) Тогда
                        Продолжить;
                    Иначе
                        НашлиРеквизитТЧ = Истина;
                    КонецЕсли;
                   //ТабличнаяЧасть = УПН_ОбщиеПроцедуры.ПолучитьТаблицуЗначенийИЗТЧ(СсылкаНаОбъект, ИмяТЧ);
 
                    Прервать;
                КонецЦикла;                    
            КонецЕсли;
            
            Если Не НашлиРеквизитТЧ Тогда
                НомерСтрокиДок = НомерСтрокиДок + 1;
                Продолжить;
            КонецЕсли;
            
           // Добавляем пустые строки по количеству строк в ТЧ документа
 
            ПерваяСтрока = Истина;
            КоличествоСтрокТЧ = УПН_ОбщиеПроцедуры.ПолучитьКоличествоСтрокТЧ(СсылкаНаОбъект, ИмяТЧ);
            Если КоличествоСтрокТЧ = 0 Тогда
                Если TC.Rows.Count() = 1 Тогда
                Иначе
                    СтрокаТаблицы.Range.Cut();
                КонецЕсли;
            Иначе
                Для Сч = 1 По КоличествоСтрокТЧ Цикл
                    Если ПерваяСтрока Тогда
                        ПерваяСтрока = Ложь;
                        СтрокаТаблицы.Range.Copy();
                    Иначе    
                        СтрокаТаблицы.Range.Paste();
                    КонецЕсли;    
                КонецЦикла;
            КонецЕсли;
            
           // Обход таблицы документа по столбцам и заполняем строки
 
            Для Сч = 1 По КоличествоСтрокТЧ Цикл
                НомерСтрокиТЧ = НомерСтрокиДок + Сч - 1;
                СтрокаТаблицы = TC.Rows(НомерСтрокиТЧ);
                КоличествоПолей = СтрокаТаблицы.Range.Fields.Count;
                Если КоличествоПолей > 0 Тогда
                    Для Инд = 1 По КоличествоПолей Цикл
                        Ном = КоличествоПолей - Инд + 1;
                        СтрокаТаблицы.Range.Fields(Ном).Select(); 
                        ИмяРеквизита = WD.Selection.Text;                        
                        Если ПустаяСтрока(ИмяРеквизита) Тогда
                            Продолжить;
                        КонецЕсли;                                  
                        Если ИмяТЧ = Лев(ИмяРеквизита, СтрДлина(ИмяТЧ)) Тогда// Это реквзит ТЧ
 
                            ИмяРеквизита = Сред(ИмяРеквизита, СтрДлина(ИмяТЧ) + 2);
                            Значение = УПН_ОбщиеПроцедуры.ПолучитьЗначениеРеквизитаТЧДляWord(СсылкаНаОбъект, ИмяТЧ, Сч, ИмяРеквизита, ПолучитьСсылкуНаЗащищеннуюОбработку());
                            Если Значение <> Неопределено И ЗначениеЗаполнено(Значение) Тогда// М.С.Р. изменил 10.12.2012 16:14:25
 
                                Wd.ActiveWindow.View.ShowFieldCodes = -1;
                                Wd.Selection.Text = Строка(Значение);
                                Wd.ActiveWindow.View.ShowFieldCodes = 0;
                            Иначе
                                Wd.Selection.Font.Color = 255;
                            КонецЕсли;
                        Иначе// Это реквизит документа
 
                            Значение = УПН_ОбщиеПроцедуры.ПолучитьЗначениеРеквизитаДляWord(СсылкаНаОбъект, ИмяРеквизита, ПолучитьСсылкуНаЗащищеннуюОбработку());
                            Если Значение <> Неопределено И ЗначениеЗаполнено(Значение) Тогда// М.С.Р. изменил 10.12.2012 16:14:25
 
                                Wd.ActiveWindow.View.ShowFieldCodes = -1;
                                Wd.Selection.Text = Строка(Значение);
                                Wd.ActiveWindow.View.ShowFieldCodes = 0;
                            Иначе
                                Wd.Selection.Font.Color = 255;
                            КонецЕсли;
                        КонецЕсли;
                    КонецЦикла;                    
                КонецЕсли;
            КонецЦикла;
   Lelic
 
4 - 27.12.12 - 10:26
недавно этим же мучалась. Я поставила метку в файле Word, там, где д.б. моя таблица
   новичок12345
 
5 - 27.12.12 - 10:30
(3), (4) спасибо. Сейчас попробую
   новичок12345
 
6 - 27.12.12 - 10:34
(4) а подскажи пожалуйста, как найти закладку нужную мне?
   Lelic
 
7 - 27.12.12 - 10:35
У меня в документе таблицы не было, я ее добавляла
   // вставим таблицу ТОВАРЫ
 
        
        //находим свою закладку в документе Word
 
        MSWord.Bookmarks("МояЗакладка").Select();

       //MSWord.Application.Selection.TypeText(НарушенияТекст);
 
        
       Документ.Paragraphs.Add();
      //подготовка таблицы:
 
        
       Rng = Word.Selection.Range;
       
          
      //Формируем заголовок:
 
       Rng.InsertAfter("№ *Наименование товара*Ед.изм.*Кол-во*Цена,руб*Стоимость,руб.");  
       Rng.InsertParagraphAfter();
       
      //сама таблица
 
       НумераторСтрок=0;
       СуммаИтого=0;
       КолСтрок=ЗапросТовары.Количество();
       
       Для каждого ВыборкаСтрокТовары Из ЗапросТовары Цикл 

            Если ВыборкаСтрокТовары.КоличествоТовара = 0 Тогда
                Продолжить;
            КонецЕсли;
        
            Если НЕ ЗначениеЗаполнено(ВыборкаСтрокТовары.Номенклатура) Тогда
                Сообщить("В одной из строк не заполнено значение номенклатуры - строка при печати пропущена.", СтатусСообщения.Важное);
                Продолжить;
            КонецЕсли;

            НумераторСтрок = НумераторСтрок + 1;
            
            Товар = СокрП(ВыборкаСтрокТовары.НаименованиеПолное) + ФормированиеПечатныхФорм.ПредставлениеСерий(ВыборкаСтрокТовары)
                                                                    + ?(ВыборкаСтрокТовары.НомерТЧ = 3, " (возвратная тара)", "");
            Rng.InsertAfter(Строка(НумераторСтрок)+"*"+Товар+"*"+
                              Строка(ВыборкаСтрокТовары.ЕдиницаИзмерения)+"*"+ 
                               Строка(ВыборкаСтрокТовары.КоличествоТовара)+"*"+ 
                               Формат(ВыборкаСтрокТовары.Цена,"ЧЦ=9; ЧДЦ=2; ЧГ=")+"*"+ 
                            Формат(ВыборкаСтрокТовары.Сумма,"ЧЦ=10; ЧДЦ=2"));
            Rng.InsertParagraphAfter();
            СуммаИтого=СуммаИтого+ВыборкаСтрокТовары.Сумма;

        КонецЦикла;
        
        Rng.InsertAfter("* * *ИТОГО: * *"+Формат(СуммаИтого,"ЧЦ=10; ЧДЦ=2"));  
       Rng.InsertParagraphAfter();
       
       Rng.ConvertToTable("*");
   новичок12345
 
8 - 27.12.12 - 10:36
(7) оу, спасибо!!! Очень выручила!

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует