Как выгрузить прайс-лист в документ программы 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(); 
КонецПопытки; 

 

29.03.2024