Имя: Пароль:
1C
1С v8
как установить размер колонок в макете active document?
0 9451523
 
02.05.19
13:36
Привет
никак не получается настроить размер колонок при открытии документа word (офис 2016)
тупо вываливает таблицу с одинаковым размером колонок, подскажите что не так с кодом?

       MSWord = Макет.Получить();
       Попытка
           Документ = MSWord.Application.Documents(1);
           Документ.Activate();
          
          
           Для Каждого Поле Из Документ.Fields Цикл
        ПолноеИмяПоля = Поле.Code.Text;
  
        Если (Найти(ПолноеИмяПоля, " MERGEFIELD") = 1) Тогда
            ПозицияСлеша = Найти(ПолноеИмяПоля, "\*");
            КороткоеИмяПоля = СокрЛП(Сред(ПолноеИмяПоля, 12, ПозицияСлеша - 12));

            ЗначениеПоля = "";

            Если КороткоеИмяПоля = "НомерДок" Тогда
                ЗначениеПоля = Номер;
            ИначеЕсли
                КороткоеИмяПоля = "Организация" Тогда
                ЗначениеПоля = Организация.НазваниеОрганизации;
            ИначеЕсли
                КороткоеИмяПоля = "Менеджер" Тогда
                ЗначениеПоля = ФИО(Константы.Организация.Получить().МенеджерПоПродажам);
            ИначеЕсли
                КороткоеИмяПоля = "Доверенность" Тогда
                ЗначениеПоля = Доверенность;
            ИначеЕсли     
                КороткоеИмяПоля = "ВсегоКОплате" Тогда
                Итог = ТаблицаТоваров.Итог("Сумма");
                ИтогНДС = ТаблицаТоваров.Итог("НДС");
                ИтогСумма = ТаблицаТоваров.Итог("Всего");
                ЗначениеПоля = СформироватьПараметрПрописи(ИтогСумма,6);
            ИначеЕсли
                КороткоеИмяПоля = "Резюме" Тогда
                Если СтавкаНДС.Ставка=0 Тогда
                     ЗначениеПоля = "Без НДС.";
                Иначе
                     ЗначениеПоля = "В т.ч. НДС - " + ТаблицаТоваров.Итог("НДС");    
                КонецЕсли;    
            КонецЕсли;
            

            Если ЗначениеПоля <> "" Тогда
                Поле.Select();
                Документ.Application.Selection.TypeText(ЗначениеПоля);
            КонецЕсли;            
        КонецЕсли;
    КонецЦикла;
    
        NR = 2;
        KR = 3;
            Документ.Tables(1).Columns(1).PreferredWidth=10;
            Документ.Tables(1).Columns(2).PreferredWidth=50;
            Документ.Tables(1).Columns(3).PreferredWidth=10;
            Документ.Tables(1).Columns(4).PreferredWidth=10;
            Документ.Tables(1).Columns(5).PreferredWidth=10;
            Документ.Tables(1).Columns(6).PreferredWidth=20;
            Документ.Tables(1).Columns(7).PreferredWidth=10;
            Документ.Tables(1).Columns(8).PreferredWidth=30;
            Документ.Tables(1).Columns(9).PreferredWidth=30;

        
        
        Для I = 1 по ТаблицаТоваров.Количество()  Цикл
            Если I > KR-NR тогда
                 Документ.Tables(1).Rows.Add();
                 KR = KR+1;
            КонецЕсли;
            
            Документ.Tables(1).Cell(I+NR-1,1).Range.Text = Строка(I);
            Документ.Tables(1).Cell(I+NR-1,2).Range.Text = Строка(ТаблицаТоваров[i-1].Товар);
            Документ.Tables(1).Cell(I+NR-1,3).Range.Text = Строка(ТаблицаТоваров[i-1].Товар.ЕдиницаИзмерения);
            Документ.Tables(1).Cell(I+NR-1,4).Range.Text = Строка(ТаблицаТоваров[i-1].Количество);
            Документ.Tables(1).Cell(I+NR-1,5).Range.Text = Строка(ТаблицаТоваров[i-1].Цена);
            Документ.Tables(1).Cell(I+NR-1,6).Range.Text = Строка(ТаблицаТоваров[i-1].Сумма);
            Документ.Tables(1).Cell(I+NR-1,7).Range.Text = Строка(СтавкаНДС.Ставка);
            Документ.Tables(1).Cell(I+NR-1,8).Range.Text = Строка(ТаблицаТоваров[i-1].НДС);
            Документ.Tables(1).Cell(I+NR-1,9).Range.Text = Строка(ТаблицаТоваров[i-1].Всего);
            
        КонецЦикла;
                
        
           MSWord.Application.Visible = Истина;
           MSWord.Activate();
       Исключение
           Сообщить(ОписаниеОшибки());
           MSWord.Application.Quit();
       КонецПопытки;
Программист всегда исправляет последнюю ошибку.