Имя: Пароль:
1C
1С v8
Работа с ActiveDocument
0 новичок12345
 
27.12.12
10:03
Добрый день, подскажите пожалуйста!
Хочу вывести в Ворд после определенной строки Таблицу Значений.
Стандартно - поиск и замена не знаю как вывести ТаблицуЗначений.
Поэтому решил найти строку, после которой нужно вставлять ТЗ:
Замена = Документ.Content.Find;
Замена.Execute("Строка поиска");
Для каждого Строка Из Товары Цикл
       
           Text.MoveRight(,1);
           Text.EndKey();
           Text.TypeParagraph();
           Text.TypeText("Текст");
       КонецЦикла;
Но курсор остается в начале, соответсвенно выводится не там где нужно моя ТЗ.
Подскажите, как поместить курсор в конец найденной строки?
1 новичок12345
 
27.12.12
10:15
ап
2 новичок12345
 
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;
                           КонецЕсли;
                       КонецЕсли;
                   КонецЦикла;                    
               КонецЕсли;
           КонецЦикла;
4 Lelic
 
27.12.12
10:26
недавно этим же мучалась. Я поставила метку в файле Word, там, где д.б. моя таблица
5 новичок12345
 
27.12.12
10:30
(3), (4) спасибо. Сейчас попробую
6 новичок12345
 
27.12.12
10:34
(4) а подскажи пожалуйста, как найти закладку нужную мне?
7 Lelic
 
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("*");
8 новичок12345
 
27.12.12
10:36
(7) оу, спасибо!!! Очень выручила!