Как выгрузить прайс-лист в документ программы Microsoft Word?

Попытка 
 MSWord = Новый COMОбъект("Word.Application"); 
Исключение 
 Сообщить("Не удалось инициализировать Microsoft Word"); 
 Возврат; 
КонецПопытки; 

Запрос = Новый Запрос; 

// Получить данные для формируемого прайс-листа. 
Запрос.Текст = "ВЫБРАТЬ 
| ЦеныКомпанииСрезПоследних.ЕдиницаИзмерения.Наименование КАК ЕдиницаИзмерения, 
| ЦеныКомпанииСрезПоследних.Цена, 
| ЦеныКомпанииСрезПоследних.Номенклатура.Наименование КАК Номенклатура, 
| 1 КАК Количество 
|ИЗ 
| РегистрСведений.ЦеныКомпании.СрезПоследних(&Дата, ТипЦен = &ТипЦен) 
| КАК ЦеныКомпанииСрезПоследних 
|УПОРЯДОЧИТЬ ПО 
| Номенклатура 
|ИТОГИ Количество(Количество) ПО 
| ОБЩИЕ"; 

Запрос.УстановитьПараметр("Дата", ТекущаяДата()); 
Запрос.УстановитьПараметр("ТипЦен", ТипЦен); 

Результат = Запрос.Выполнить(); 

Попытка 

 // Создать новый документ 
 MSWord.Documents.Add(); 
 Документ = MSWord.ActiveDocument(); 

 // Добавить новый параграф в созданный документ. 
 Документ.Paragraphs.Add(); 
 НомерПараграфа = Документ.Paragraphs.Count(); 
 Параграф = Документ.Paragraphs.Item(НомерПараграфа); 

 // В созданный параграф вставить новый "диапазон" 
 // и разместить в нем текст "Прайс-Лист". 
 Параграф.Range.InsertAfter("Прайс-Лист"); 

 // Установить стиль параграфа "Заголовок 1" (он должен быть определен). 
 Параграф.Range.Style="Заголовок 1"; 
 
 Документ.Paragraphs.Add(); 
 НомерПараграфа = Документ.Paragraphs.Count(); 
 Параграф = Документ.Paragraphs.Item(НомерПараграфа); 
 Параграф.Range.InsertAfter("Сформирован на дату: " + Строка(ТекущаяДата())); 
 Параграф.Range.Style = "Обычный"; 

 ВыборкаКоличества = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); 
 ВыборкаКоличества.Следующий(); 
 КоличествоСтрок = ВыборкаКоличества.Количество; 

 Документ.Paragraphs.Add();
 НомерПараграфа = Документ.Paragraphs.Count(); 
 Параграф=Документ.Paragraphs.Item(НомерПараграфа); 

 // Вставить таблицу с количеством строк равным количеству записей 
 // в выборке результата запроса и с тремя колонками 
 Документ.Tables.Add(Параграф.Range, КоличествоСтрок, 3); 

 // Получить таблицу как объект в отдельную переменную 
 // учитывая тот факт, что таблица у нас единственная 
 Таблица = Документ.Tables.Item(1); 

 // Записать данные в ячейку таблицы строка №1, колонка №1 
 Таблица.Cell(1,1).Range().InsertAfter("Номенклатура"); 

 // Установить цвет фона в ячейке 
 Таблица.Cell(1,1).Shading.BackgroundPatternColor = 16776960; 
 Таблица.Cell(1,2).Range().InsertAfter("Цена"); 
 Таблица.Cell(1,2).Shading.BackgroundPatternColor = 16776960; 
 Таблица.Cell(1,3).Range().InsertAfter("Ед.Изм."); 
 Таблица.Cell(1,3).Shading.BackgroundPatternColor = 16776960; 

 НомерСтроки = 1; 
 
 Выборка = ВыборкаКоличества.Выбрать(); 
 Пока Выборка.Следующий() Цикл НомерСтроки = НомерСтроки + 1; 
  Таблица.Cell(НомерСтроки,1).Range().InsertAfter(Выборка.Номенклатура); 
  Таблица.Cell(НомерСтроки,2).Range().InsertAfter(Строка(Выборка.Цена)); 
  Таблица.Cell(НомерСтроки,3).Range().InsertAfter(Выборка.ЕдиницаИзмерения); 
 КонецЦикла; 

 MSWord.Visible = Истина; 
 MSWord.Activate(); 

Исключение 

 // Если произойдет ошибка выводятся данные об ошибке и объект закрывается. 
        Сообщить(ОписаниеОшибки()); 
 MSWord.Application.Quit(); 
КонецПопытки;
Comments