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