1C и Google Maps была поставлена задача отображения на географической карте медицинских учреждений. После обзора предлагаемых решений был выбран сервис google. Но так же подобного рода подход будет работать и с картами сервиса yandex. Во время решения задачи было решено использовать геокодирование сервиса Google и Google Visualization для отображение элементов на карте.
Геокодирование – процесс преобразования адресов·(Украина, Киевская область, Киев, Крещатик 20) в географические координаты (широта 37.423021 и долгота -122.083739), которые можно использовать для размещения маркеров или расположения карты. Подробно про геокодирование можно почитать
тут .
Для работы с геокодированием необходимо
зарегистрировать ключ API карт Google .
Важный момент: если у вас программа работает в локальной сети и в Internet, то вам необходимо регистрировать два ключа. В зависимости от того, с какого места подключается пользователь к базе подставлять тот или иной ключ.
И так, собственно программная реализация.
В конфигурации есть две общих формы:
* Форма подбора координат. Данная форма формирует запрос на геокодирование и обрабатывает результат.
* Форма отображения объектов. Данная форма использует
API визуализации Google . В частности данная форма использует визуализацию
Map .
Запрос и обработка результата геокодирования.
Формирование запроса происходит с ключом output=csv, для вывода результата запроса в csv файл. После выполнения запроса проверяется код результата запроса и разбор csv файла на широту и долготу.
Код 1C v 8.2 УП #НаСервере
Процедура ОтправитьЗапросНаПоискКоординат()
Город = Параметры.ОбъектПодбора.Город.Наименование;
Страна = Параметры.ОбъектПодбора.Город.Владелец.Владелец.Наименование;
Адрес = Параметры.ОбъектПодбора.Адрес;
ПараметрПоиска = Страна + " " + Город + " " + Адрес;
АдресOutput = ПолучитьИмяВременногоФайла();
Ключ = Константы.КлючКарта.Получить();
ТекстСсылки = "maps/geo?q=" + EncodeURL(ПараметрПоиска)+"&output=csv&oe=utf8&sensor=false&key=" + Ключ;
ПроксиСервер = Неопределено;
HTTPСервис = Новый HTTPСоединение("maps.google.com",,,,ПроксиСервер,Ложь);
ПравильностьВыполнения = Истина;
Попытка
HTTPСервис.Получить(ТекстСсылки, АдресOutput);
Исключение
Сообщить(ОписаниеОшибки(), СтатусСообщения.Важное);
ПравильностьВыполнения = Ложь;
КонецПопытки;
Если ПравильностьВыполнения Тогда
// Распарсить результат ответа поиска
Текст = Новый ТекстовыйДокумент;
Текст.Прочитать(АдресOutput);
РезультатПоиска = Текст.ПолучитьСтроку(1);
КодРезультата = Лев(РезультатПоиска,3);
РезультатПоиска = Сред(РезультатПоиска, 7, СтрДлина(РезультатПоиска));
Если КодРезультата <> "200" Тогда
Возврат;
КонецЕсли;
Широта = Число(Сред(РезультатПоиска,0,10));
Долгота = Число(Сред(РезультатПоиска,12,10));
КонецЕсли;
КонецПроцедуры
Формирование карты отображения
При формировании отображения объекта на карте к стандартному коду визуализации добавлен следующий:
Код 1C v 8.х if(!google.visualization) setTimeout(checkIfGoogleLoad, 1000);
else drawMap();
Это связано с тем, что платформа не хочет сразу обновлять фрейм поля html документа.
Код 1C v 8.2 УП #НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
СсылкаНаБазу = ПолучитьНавигационнуюСсылкуИнформационнойБазы();
APIГугла = Константы.КлючКарта.Получить();
ТаблицаОбъектовДляВывода = Новый ТаблицаЗначений;
ТаблицаОбъектовДляВывода.Колонки.Добавить("Наименование",Новый ОписаниеТипов("Строка"));
ТаблицаОбъектовДляВывода.Колонки.Добавить("Город",Новый ОписаниеТипов("Строка"));
ТаблицаОбъектовДляВывода.Колонки.Добавить("Адрес",Новый ОписаниеТипов("Строка"));
ТаблицаОбъектовДляВывода.Колонки.Добавить("Широта",Новый ОписаниеТипов("Число",Новый КвалификаторыЧисла(10,6)));
ТаблицаОбъектовДляВывода.Колонки.Добавить("Долгота",Новый ОписаниеТипов("Число",Новый КвалификаторыЧисла(10,6)));
Если Параметры.ОтображатьСОтветственными Тогда
ТаблицаОбъектовДляВывода.Колонки.Добавить("Ответственный",Новый ОписаниеТипов("Строка"));
КонецЕсли;
Для Каждого ТекЭлемент Из Параметры.ОбъектыДляОтображения Цикл
КоординатыОбъекта = ОбщийМодульКартаСервер.ПолучитьКоординатыОбъекта(ТекЭлемент.Значение.ОбъектПосещения);
Если КоординатыОбъекта = Неопределено Тогда
Продолжить;
Иначе
НоваяСтрока = ТаблицаОбъектовДляВывода.Добавить();
НоваяСтрока.Наименование = ТекЭлемент.Значение.ОбъектПосещения.Наименование;
НоваяСтрока.Город = ТекЭлемент.Значение.ОбъектПосещения.Город.Наименование;
НоваяСтрока.Адрес = ТекЭлемент.Значение.ОбъектПосещения.Адрес;
НоваяСтрока.Широта = КоординатыОбъекта[0];
НоваяСтрока.Долгота = КоординатыОбъекта[1];
Если Параметры.ОтображатьСОтветственными Тогда
НоваяСтрока.Ответственный = ТекЭлемент.Значение.Ответственный.Наименование;
КонецЕсли;
КонецЕсли;
КонецЦикла;
ТекстСкрипта = "data.addRows(" + Строка(ТаблицаОбъектовДляВывода.Количество()) + ");";
Сч = 0;
Для Каждого ТекСтрока Из ТаблицаОбъектовДляВывода Цикл
ТекстСкрипта = ТекстСкрипта + " data.setCell(" + Строка(Сч) + ", 0, " +СтрЗаменить(Строка(ТекСтрока.Широта),",",".") + ");";
ТекстСкрипта = ТекстСкрипта + " data.setCell(" + Строка(Сч) + ", 1, " +СтрЗаменить(Строка(ТекСтрока.Долгота),",",".") + ");";
ТекстСкрипта = ТекстСкрипта + " data.setCell(" + Строка(Сч) + ", 2, '" +Строка(ТекСтрока.Наименование) + " "
+ Строка(ТекСтрока.Город) + " " + Строка(ТекСтрока.Адрес) + " " + ?(Параметры.ОтображатьСОтветственными, ".Ответственный: " + Строка(ТекСтрока.Ответственный), "") + " " + "');";
Сч = Сч + 1;
КонецЦикла;
СтраницаХТМЛ = "<html>
| <head>
| <script src=""http://maps.google.com/maps?file=api&v=2&key=" + APIГугла + """ type=""text/javascript""></script>
| <script type=""text/javascript"" src=""http://www.google.com/jsapi""></script>
| </head>
|
| <body>
| <div id=""map_div"" style=""width : 800px; height: 550px""></div>
| <script type=""text/javascript"">
|
| google.load(""visualization"", ""1"", {packages:[""map"">);
| google.setOnLoadCallback(drawMap);
| function checkIfGoogleLoad() {
| if(!google.visualization) setTimeout(checkIfGoogleLoad, 1000);
| else drawMap();
| }
| function drawMap() {
| var data = new google.visualization.DataTable();
| data.addColumn('number', 'Lat');
| data.addColumn('number', 'Lon');
| data.addColumn('string', 'Name');" + ТекстСкрипта + "
| var map = new google.visualization.Map(document.getElementById('map_div'));
| map.draw(data, {showTip: true, mapType: 'normal'});
| }
| checkIfGoogleLoad();
| </script>
| </body>
|</html>";
КонецПроцедуры
Андрей Данилюк Категория:
COM-объекты, WMI, WSH Печать в PDF Столкнулся с вопросом печати счета на оплату сразу в pdf.
Решение: установка виртуального принтера
bioPDF скачать можно тут. И прописывание в 1с следующего кода:
Код 1C v 8.х
Попытка
ПДФ_принтер = Новый COMОбъект("bioPDF.PDFPrinterSettings");
Исключение
#Если Клиент Тогда
Предупреждение("Не удалось подключиться к PDF-принтеру!", 60);
#КонецЕсли
Возврат;
КонецПопытки;
ПДФ_принтер_имя = ПДФ_принтер.GetPrinterName();
ИмяФайла = Константы.КаталогФайловПДФ.Получить() +"" + Заголовок + ".pdf";
ПДФ_принтер.SetValue("output", ИмяФайла);
ПДФ_принтер.SetValue("ConfirmOverwrite", "yes");
ПДФ_принтер.SetValue("ShowSaveAS", "never");
ПДФ_принтер.SetValue("ShowSettings", "never");
ПДФ_принтер.SetValue("ShowPDF", "no");
ПДФ_принтер.SetValue("Target", "printer");
ПДФ_принтер.SetValue("Subject", "Report generated at " + ТекущаяДата());
ПДФ_принтер.SetValue("UseThumbs", "yes");
ПДФ_принтер.SetValue("Zoom", "100");
ПДФ_принтер.SetValue("WatermarkFontSize", "10");
ПДФ_принтер.SetValue("WatermarkTransparency", "50");
ПДФ_принтер.SetValue("WatermarkVerticalPosition", "bottom");
ПДФ_принтер.SetValue("WatermarkHorizontalPosition", "right");
ПДФ_принтер.SetValue("WatermarkVerticalAdjustment", "3");
ПДФ_принтер.SetValue("WatermarkHorizontalAdjustment", "1");
ПДФ_принтер.SetValue("WatermarkRotation", "90");
ПДФ_принтер.SetValue("WatermarkColor", "#ff0000");
ПДФ_принтер.SetValue("WatermarkOutlineWidth ", "1");
ПДФ_принтер.WriteSettings(True);
ПечатныйДокумент.ИмяПринтера = ПДФ_принтер_имя;
ПечатныйДокумент.АвтоМасштаб = Истина;
ПечатныйДокумент.Напечатать();
Как выяснилось во время печати в pdf есть проблема с передачей прозрачности картинки. Если вставлять прозрачную печать в счет поверх подписи, то в pdf-документе печать будет непрозрачной и затрет все собой. У меня был частный случай, когда печать находилась на одном и том же месте документа и за ней постоянно было одно и то же. Решением в данном случае стала генерация картинки печати с фоном, на котором она должна быть и вставка её в макет.
Так же решением может быть печать не в pdf а xps документ. Там с прозрачностью все нормально.
Автор:
Андрей Данилюк
Экспорт печатных форм и любых данных из 1С в BMP, JPEG, PCX, PDF, PNG и TIFF. Категория:
COM-объекты, WMI, WSH Выгрузка данных в Excel с установкой разных параметров Код 1C v 8.х // Процедура выгружает из указанного справочника данные в режиме экспорта в файл в формате Microsoft Excel
// с указанным именем, используя преобразование данных к типу число и типу строка;
Процедура ОсновныеДействияФормыЭкспорт(Кнопка)
Попытка
Попытка
// Загрузка объекта Microsoft Excel
Состояние("Выгрузка данных из 1С в Microsoft Excel...");
ExcelПриложение = Новый COMОбъект("Excel.Application");
Исключение
Сообщить("Ошибка при запуске Microsoft Excel."
+ Символы.ПС + ОписаниеОшибки(), СтатусСообщения.Внимание);
Возврат;
КонецПопытки;
// Создадим книгу, по умолчанию в ней уже есть листы
Книга = ExcelПриложение.WorkBooks.Add();
// Используем первый лист книги Excel
Лист = Книга.WorkSheets(1);
// Сформировать шапку документа в первой строке листа
Колонка = 1;
Для каждого стр из ТП цикл
Если стр.Выгружать Тогда
Лист.Cells(1, Колонка).Value = стр.НазваниеРеквизита;
Колонка = Колонка + 1;
КонецЕсли;
КонецЦикла;
// Выгрузить данные справочника
выборка = Справочники[ИмяСправочника].Выбрать();
СтрокаЛиста = 2;
Пока выборка.Следующий() Цикл
Колонка = 1;
Для каждого стр из ТП цикл
Если стр.Выгружать Тогда
Попытка
// Установить значение в строке и колонке
Если ТипЗнч(выборка[стр.НазваниеРеквизита])=Тип("Число") Тогда
// Установить формат для типа Число
Лист.Cells(СтрокаЛиста, Колонка).NumberFormat = "0,00";
Лист.Cells(СтрокаЛиста, Колонка).Value =
Формат(выборка[стр.НазваниеРеквизита],"ЧГ=0");
иначе
// Для всех других типов установим формат "Текстовый"
Лист.Cells(СтрокаЛиста, Колонка).NumberFormat = "@";
Лист.Cells(СтрокаЛиста, Колонка).Value =
Строка(выборка[стр.НазваниеРеквизита]);
КонецЕсли;
исключение
// в случае ошибки вывести номер строки и колонки
Сообщить("Ошибка установки значения для: " +
выборка[стр.НазваниеРеквизита]);
Сообщить("Стр: " +СтрокаЛиста+ " Кол: " +
Колонка+ " Рек: " + стр.НазваниеРеквизита);
КонецПопытки;
Колонка = Колонка + 1;
КонецЕсли;
КонецЦикла;
СтрокаЛиста = СтрокаЛиста + 1;
Состояние("Экспорт из 1С в Excel " + СтрокаЛиста);
КонецЦикла;
// Сохраним созданную книгу в файл xls
Книга.SaveAs(имяФайла);
// Обязательно закроем соединение с COM объектом для освобождения памяти
ExcelПриложение.Quit();
Сообщить("Файл выгружен успешно: " + имяФайла );
Исключение
// Обработка ошибок экспорта данных из 1С в Excel
Сообщить("Ошибка записи данных файла :" + имяФайла);
Сообщить(ОписаниеОшибки());
Попытка
ExcelПриложение.Quit();
Исключение
КонецПопытки;
КонецПопытки;
КонецПроцедуры
Код 1C v 7.x //Простейший пример вывода из 1С:Предприятия 7.7 в MS Excel. Обеспечение наличия у рабочей книги единственного листа,
//установка размера, жирности и цвета шрифта, ширины колонок, рамок и заливки ячеек. Выравнивание текста
//ячеек, группировка строк, установка числового формата ячеек, закрепление области.
Процедура Вывод()
Попытка
Application=СоздатьОбъект("Excel.Application");
Исключение
Сообщить(ОписаниеОшибки(),"!!!");
Сообщить("Возможно, MS Excel не установлен на этом компьютере.");
Возврат;
КонецПопытки;
//Создание рабочей книги
WorkBook=Application.WorkBooks.Add();
//Получение окна
Window=WorkBook.Windows(1);
//Установка невидимости окна для убыстрения вывода
Window.Visible=0;
//Обеспечение наличия у рабочей книги единственного листа
Если WorkBook.Worksheets.Count=0 Тогда
WorkBook.Worksheets.Add();
Иначе
Application.DisplayAlerts=0;//не выдавать предупреждений
Пока WorkBook.Worksheets.Count>1 Цикл
WorkBook.Worksheets(1).Delete();
КонецЦикла;
Application.DisplayAlerts=-1;//восстановление флага выдачи предупреждений
КонецЕсли;
//Получение рабочего листа
Worksheet=WorkBook.Worksheets(1);
//Задание имени рабочего листа
Worksheet.Name="Пример вывода";
//Заголовок документа
Worksheet.Range("A1").Value="Пример вывода из 1С:Предприятия в MS Excel";
Worksheet.Range("A2").Value="сегодня "+ТекущаяДата();
Worksheet.Range("A1:A2").Font.Size=14;//размер шрифта
Worksheet.Range("A1:A2").Font.Bold=-1;//жирный шрифт
//Задание ширины колонок
Worksheet.Columns(1).ColumnWidth =60;
Worksheet.Columns(2).ColumnWidth =15;
Worksheet.Columns(3).ColumnWidth =15;
//Шапка документа
Worksheet.Range("A4").Value="Первая колонка";
Для ы=7 по 10 Цикл//рамки
Worksheet.Range("A4").Borders(ы).LineStyle=1;
Worksheet.Range("A4").Borders(ы).Weight=-4138;//xlMedium
КонецЦикла;
Worksheet.Range("A4").Interior.ColorIndex=15;//заливка серым
Worksheet.Range("A4").HorizontalAlignment=-4108;//выравнивание текста по центру
Worksheet.Range("B4").Value="Вторая";
Для ы=7 по 10 Цикл
Worksheet.Range("B4").Borders(ы).LineStyle=1;
Worksheet.Range("B4").Borders(ы).Weight=-4138;
КонецЦикла;
Worksheet.Range("B4").Interior.ColorIndex=15;
Worksheet.Range("B4").HorizontalAlignment=-4108;
Worksheet.Range("C4").Value="Третья";
Для ы=7 по 10 Цикл
Worksheet.Range("C4").Borders(ы).LineStyle=1;
Worksheet.Range("C4").Borders(ы).Weight=-4138;
КонецЦикла;
Worksheet.Range("C4").Interior.ColorIndex=15;
Worksheet.Range("C4").HorizontalAlignment=-4108;
//Для группировки строк:
Worksheet.Outline.SummaryRow=0;//"итоговые" строки отображать сверху (если снизу, то 1)
//Вывод строк
Worksheet.Range("A5").Value="Объект аналитики";
Worksheet.Range("A5").Font.ColorIndex=5;//цвет шрифта - синий
Worksheet.Range("B5").Value=123.45;
Worksheet.Range("B5").Font.ColorIndex=5;
Worksheet.Range("C5").Value=678.9;
Worksheet.Range("C5").Font.ColorIndex=5;
Worksheet.Range("A6").Value="Объект аналитики";
Worksheet.Range("A6").Font.ColorIndex=3;//цвет шрифта - красный
Worksheet.Range("B6").Value=123.45;
Worksheet.Range("B6").Font.ColorIndex=3;
Worksheet.Range("C6").Value=678.9;
Worksheet.Range("C6").Font.ColorIndex=3;
Worksheet.Range("A7").Value="Объект аналитики";
Worksheet.Range("B7").Value=123.45;
Worksheet.Range("C7").Value=678.9;
Worksheet.Range("A8").Value="Объект аналитики";
Worksheet.Range("B8").Value=123.45;
Worksheet.Range("C8").Value=678.9;
Worksheet.Range("A9").Value="Объект аналитики";
Worksheet.Range("A9").Font.ColorIndex=3;//цвет шрифта - красный
Worksheet.Range("B9").Value=123.45;
Worksheet.Range("B9").Font.ColorIndex=3;
Worksheet.Range("C9").Value=678.9;
Worksheet.Range("C9").Font.ColorIndex=3;
Worksheet.Range("A10").Value="Объект аналитики";
Worksheet.Range("B10").Value=123.45;
Worksheet.Range("C10").Value=678.9;
Worksheet.Range("A11").Value="Объект аналитики";
Worksheet.Range("B11").Value=123.45;
Worksheet.Range("C11").Value=678.9;
Worksheet.Range("A12").Value="Объект аналитики";
Worksheet.Range("A12").Font.ColorIndex=5;//цвет шрифта - синий
Worksheet.Range("B12").Value=123.45;
Worksheet.Range("B12").Font.ColorIndex=5;
Worksheet.Range("C12").Value=678.9;
Worksheet.Range("C12").Font.ColorIndex=5;
Worksheet.Range("A13").Value="Объект аналитики";
Worksheet.Range("A13").Font.ColorIndex=3;//цвет шрифта - красный
Worksheet.Range("B13").Value=123.45;
Worksheet.Range("B13").Font.ColorIndex=3;
Worksheet.Range("C13").Value=678.9;
Worksheet.Range("C13").Font.ColorIndex=3;
Worksheet.Range("A14").Value="Объект аналитики";
Worksheet.Range("B14").Value=123.45;
Worksheet.Range("C14").Value=678.9;
Worksheet.Range("A15").Value="Объект аналитики";
Worksheet.Range("B15").Value=123.45;
Worksheet.Range("C15").Value=678.9;
Worksheet.Range("A16").Value="Объект аналитики";
Worksheet.Range("A16").Font.ColorIndex=3;//цвет шрифта - красный
Worksheet.Range("B16").Value=123.45;
Worksheet.Range("B16").Font.ColorIndex=3;
Worksheet.Range("C16").Value=678.9;
Worksheet.Range("C16").Font.ColorIndex=3;
Worksheet.Range("A17").Value="Объект аналитики";
Worksheet.Range("B17").Value=123.45;
Worksheet.Range("C17").Value=678.9;
Worksheet.Range("A18").Value="Объект аналитики";
Worksheet.Range("B18").Value=123.45;
Worksheet.Range("C18").Value=678.9;
//Установка рамок
Для НомСтр=5 по 18 Цикл
Для ы=7 по 10 Цикл
Worksheet.Range("A"+НомСтр).Borders(ы).LineStyle=1;
Worksheet.Range("B"+НомСтр).Borders(ы).LineStyle=1;
Worksheet.Range("C"+НомСтр).Borders(ы).LineStyle=1;
КонецЦикла;
КонецЦикла;
//Группировка строк
Worksheet.Range("7:8").Rows.Group();
Worksheet.Range("10:11").Rows.Group();
Worksheet.Range("14:15").Rows.Group();
Worksheet.Range("17:18").Rows.Group();
Worksheet.Range("6:11").Rows.Group();
Worksheet.Range("13:18").Rows.Group();
//Свёртка группировок до первого уровня
Worksheet.Outline.ShowLevels(1);
//Установка числового формата
Попытка
Worksheet.Range("B5:C18").NumberFormat="# ##0.00";
Исключение
Попытка
Worksheet.Range("B5:C18").NumberFormat="# ##0,00";
Исключение
КонецПопытки;
КонецПопытки;
//Установка видимости приложения и его окна
Application.Visible=-1;
Window.Visible=-1;
//Закрепление области
Worksheet.Range("A5").S_elect();
Window.FreezePanes = -1;
КонецПроцедуры //Вывод
Категория:
Работа с Microsoft Office и OpenOffice Используем диалог открытия файлов Word в 1С,возможен множественный выбор Код 1C v 7.x oWord=СоздатьОбъект("Word.Application");
oWord.WindowState = 1;
oWord.Height = 0;
oWord.Width = 0;
myopendial = oWord.FileDialog(3);
myopendial.AllowMultiSelect = -1;
myopendial.Title = "Выбирайте файлы...";
Для i = 1 По myopendial.Filters.Count Цикл
myopendial.Filters.Delete();
КонецЦикла;
myopendial.Filters.Add("1С файлы", "*.ert; *.mxl; *.txt", 1);
oWord.Visible=-1;
oWord.Activate();
myopendial.Show();
Для i = 1 По myopendial.SelectedItems.Count Цикл
Сообщить(myopendial.SelectedItems.Item(i));
КонецЦикла;
oWord.Quit();
Категория:
Работа с Microsoft Office и OpenOffice Создание документа Excel по имеющемуся шаблону, оформлению. Код 1C v 8.х Попытка
// Создать объект.
Excel = Новый COMОбъект("Excel.Application");
Исключение
Сообщить("Не удалось инициализировать Excel");
Возврат;
КонецПопытки;
Попытка
// Если при отработке следующего фрагмента кода произойдет ошибка
// объект "Excel.Application" будет закрыт.
// Открыть книгу, содержащую шаблон оформления.
Excel.Workbooks.Open("c:\doc.xls");
НомерКниги = Excel.Workbooks.Count;
Книга = Excel.Workbooks.Item(НомерКниги);
Лист = Excel.ActiveSheet;
// Создать новую книгу (в нее будем записывать данные).
Excel.Application.Workbooks.Add(1);
НомерКниги = Excel.Workbooks.Count;
КнигаНовая = Excel.Workbooks.Item(НомерКниги);
ЛистНовый = Excel.ActiveSheet;
// Установить ширину колонки в новой книге.
ЛистНовый.Columns("B").ColumnWidth = 40;
// Копировать область из книги-шаблона в новую книгу.
Лист.Range("Шапка").Copy(ЛистНовый.Range("A1:E3"));
ЛистНовый.Cells(1, 1).Value = "Наименование контрагента";
// Считаем, что в нашем случае необходимо сформировать только
// две строки табличной части
Для НомерСтроки = 1 По 2 Цикл
Лист.Range("Строка").Copy(ЛистНовый.Range(ЛистНовый.Cells(3 + НомерСтроки,1), ЛистНовый.Cells(3 + НомерСтроки, 5)));
// Записать значение в ячейку листа новой таблицы
// в реальном примере данные будут браться из информационной базы
ЛистНовый.Cells(3 + НомерСтроки, 1).Value = НомерСтроки;
ЛистНовый.Cells(3 + НомерСтроки, 2).Value = "Наименование номенклатурной позиции " + Строка(НомерСтроки);
ЛистНовый.Cells(3 + НомерСтроки, 3).Value = НомерСтроки;
ЛистНовый.Cells(3 + НомерСтроки, 4).Value = НомерСтроки;
ЛистНовый.Cells(3 + НомерСтроки, 5).Value = НомерСтроки;
КонецЦикла;
Excel.Visible = Истина;
Исключение
Сообщить(ОписаниеОшибки());
Excel.Quit();
КонецПопытки;
Категория:
Работа с Microsoft Office и OpenOffice Пример построения в Word нумерованного списка, закладок, вставки картинки, настройки ее параметров. Часто при создании документа из макета используют метод замены кусков текста. В примере представлен другой вариант выполнения того же действия - с использованием закладок. Также представлен пример построения нумерованного списка, вставки картинки, настройки ее параметров.
Пример использования описанных возможностей прост. При формировании коммерческого предложения бывает необходимо описать список условий, добавить изображение образца продукции.
Для отображения закладок включите эту опцию в настройках вашего Word'а.
В моем примере я заранее создал новый пустой документ, путь к документу и картинке прописан в тексте. Не забудьте указать свои пути.
Тестировалось на Office 2007.
Некоторые переменные переименованы по стандарту Office: Text --> S_election. Doc --> ThisDocument.
Вот текст модуля:
Код 1C v 8.х Процедура ВыполнитьОбработку() Экспорт
Попытка
//Объект = ПолучитьCOMОбъект(ПутьКФайлу);
Объект = ПолучитьCOMОбъект("C:\Users\NKrylov\Desktop\Тест.docx");
// Покажем документ.
Объект.Application.Visible = 1;
Word = Объект.Application;
ThisDocument = Word.Documents(1);
ThisDocument.Activate();
// Отключим проверку грамматики и вывод информации о грамматических ошибках.
ThisDocument.GrammarChecked=0;
ThisDocument.ShowGrammaticalErrors=0;
// Готовим переменную в которой будет содержимое документа (текст).
S_election = Word.S_election;
// Очистим документ
// Ctrl-A
S_election.WholeStory();
// Del
S_election.Delete(1, 1);
// Уменьшим междустрочный интервал.
S_election.ParagraphFormat.LineSpacingRule = 0; // 1 по умолчанию
S_election.ParagraphFormat.SpaceAfter = 0; // 10 по умолчанию
// Разметим документ. Это можно сделать и предварительно в макете
ThisDocument.Bookmarks.Add("Закладка1", S_election.Range());
S_election.TypeParagraph();
S_election.TypeText("34r3 ");
S_election.HomeKey(, 1);
ThisDocument.Bookmarks.Add("Закладка2", S_election.Range());
S_election.EndKey();
S_election.TypeParagraph();
ThisDocument.Bookmarks.Add("Закладка3", S_election.Range());
S_election.TypeParagraph();
ThisDocument.Bookmarks.Add("Закладка4", S_election.Range());
S_election.EndKey();
// Так можно работать с текстом только в конкреной области документа - это и будет замена метода Find-Execute.
ThisDocument.Bookmarks("Закладка3").Range.S_elect();
S_election = Word.S_election;
Bookmark = ThisDocument.Bookmarks("Закладка3");
Table = ThisDocument.Tables.Add(Bookmark.Range(),1,5,1,2);
Table.Rows(1).Cells(1).Range.Text = 1;
Table.Rows(1).Cells(2).Range.Text = 2;
Table.Rows(1).Cells(3).Range.Text = 3;
Table.Rows(1).Cells(4).Range.Text = 4;
Table.Rows(1).Cells(5).Range.Text = 5;
// После вывода таблицы, появится "лишняя строка", удалим ее
// в результате курсор встанет в область закладки 4
S_election.MoveDown(, 1);
S_election.Delete(1, 1);
// Этот текст будет выведен не с последней позиции курсора, а в активной области.
// в данном случае - в области закладки 2
ThisDocument.Bookmarks("Закладка2").Range.S_elect();
S_election = Word.S_election;
Text = S_election.Range.Text;
S_election.TypeText(Text + " sdcsdcs");
// При выводе текста закладка "сбросилась". Восстановим.
// "Победить" эту проблему я так и не смог((
// Хотя на практике, закладка больше и не понадобится.
// Дважды выводить текст в одну и ту же область - не имеет смысла.
S_election.HomeKey(, 1);
ThisDocument.Bookmarks.Add("Закладка2", S_election.Range());
S_election.EndKey();
// В области закладки 4 сформируем нумерованный список
ThisDocument.Bookmarks("Закладка4").Range.S_elect();
S_election = Word.S_election; // активная (выделенная) область будет начинаться
// от закладки 4)
// Добавим текст "для опытов"
// 1
S_election.TypeText("sdcsdcsdcsdc");
S_election.TypeParagraph();
// 2
S_election.TypeText("sdcsdcsdcsdc");
S_election.TypeParagraph();
// 3
S_election.TypeText("sdcsdcsdcsdc");
S_election.TypeParagraph();
// 4
S_election.TypeText("sdcsdcsdcsdc");
S_election.TypeParagraph();
// Выделяем введенный текст
S_election.MoveUp(,4,1);
// Настроим шаблон объекта галереи списков
// Галереи списков бывают несккольких типов, 2 - нумерованные списки
ListTemplate = Word.ListGalleries(2).ListTemplates(1).ListLevels(1);
// Формат нумератора списка - точка после символа нумерации
ListTemplate.NumberFormat = "%1.";
// стиль нумератора - арабские цифры
ListTemplate.NumberStyle = 0; // wdListNumberStyleArabic
// 4 - маленькие латинские буквы.
// 2 - маленькие римские цифры.
// 58- меленькие русские буквы.
// Font = Template.Font; // можно указать форматирование текста списка
// Применим шаблон к выделенному тексту
S_election.Range.ListFormat.ApplyListTemplateWithLevel( Word.ListGalleries(2).ListTemplates(1));
// Перейдем в конец текста
S_election.EndKey(6);
// Добавим картинку
// Параметры: путь к файлу, создавать ссылку на картинку, сохранять с файлом
Picture = S_election.InlineShapes.AddPicture("C:\Users\NKrylov\Desktop\Новый.bmp", Ложь, Истина);
// Зададим размер
Picture.Height = 100;
Picture.Width = 150;
// Чтобы установить обтекание текста, конвертируем рисунок в фигуру
Shape = Picture.ConvertToShape();
Shape.WrapFormat.Type = 0; // по контуру...
ThisDocument.Save();
//Объект.Application.Quit();
Объект = Неопределено;
Исключение
ThisDocument.Save();
Сообщить(ОписаниеОшибки());
//Объект.Application.Quit();
Объект = Неопределено;
КонецПопытки;
КонецПроцедуры
Написал Nikola23 - http://infostart.ru/public/68072/ Категория:
Работа с Microsoft Office и OpenOffice Создание документа Word без использования макетов и пример создания таблицы и её оформление. Кроме прочего в статье присутствует пример создания таблицы с любым количеством колонок и столбцов. Несколько строк с форматированием текста и таблицы. Создание "объединенных" ячеек.
В качестве примера использования можно указать вот такую ситуацию: в зависимости от типа клиента (договора, документа и т.п) формируются разные тексты договоров с разным количеством таблиц. В реальности, конечно должены использоваться и макет и описанные здесь динамические механизмы.
В моем примере я заранее создал новый пустой документ.
Тестировалось на Office 2007.
Исп. переменные: "ПутьКФайлу" - строка. Полное имя файла в формате MSWord.
"Ссылка" - ДокументСсылка (в моем случае - счет).
Вот текст модуля:
Код 1C v 8.х Процедура ВыполнитьОбработку() Экспорт
Попытка
Объект = ПолучитьCOMОбъект(ПутьКФайлу);
// Покажем документ. Для красоты.
Объект.Application.Visible = 1;
Word = Объект.Application;
Doc = Объект.Application.Documents(1);
Doc.Activate();
// Готовим переменную в которой будет содержимое нашего документа
// (текст, таблицы и проч).
Text = Word.S_election;
// Очистим документ
// Ctrl-A
Text.WholeStory();
// Del
Text.Delete(1, 1);
// Двигаемся на 3 строки ниже. Документ пустой, поэтому добавляем
// строки "Переводами коретки"
Text.TypeText(Символы.ВК);
Text.TypeText(Символы.ВК);
Text.TypeParagraph(); // другой вариант того же действия
// Выводим текст.
Text.TypeText("Обычный текст, набранный первую очередь");
// Курсор в конце строки
// Эмулируем нажатие Shift+Home - выделяем строку
Text.HomeKey(, 1);
// Форматирование выделенной строки
Text.Font.Bold = 9999998;
Text.Font.Size = 14;
Text.Font.Name = "Verdana";
// Сдвигаем курсор. Сдвинуть курсор по строкам возможно, только,
// если эти строки уже содержат текст, иначе ничего не произойдет.
Text.MoveUp(,2); // вверх на 2 строки
//Word.S_election.MoveDown(,числострок); // вниз
//Word.S_election.MoveLeft(,числострок); // влево
//Word.S_election.MoveRight(,числострок);// вправо
// Добавление текста. Текст выводится начиная с текщей позиции
// курсора.
Text.HomeKey(, 1);
Text.TypeText("Обычный текст, набранный во вторую очередь");
Text.MoveDown(,1); // вниз на 2 строки
Text.EndKey(); // в конец строки
Text.TypeParagraph(); // и в начало следующей строки
// Очищаем форматирование
Text.ClearFormatting();
// Добавляем таблицу.
// Получаем текущую позицию курсора
Position = Text.Range();
// Параметры: Позиция, число строк, число колонок,
// последние 2 параметра отвечают за автоподбор высоты и отображение
// границ таблицы
Table = Doc.Tables.Add(Position, 1, 6, 1, 2);
// Устанавливаем ширину колонок
Table.Columns(1).PreferredWidth =10;
Table.Columns(2).PreferredWidth =50;
Table.Columns(3).PreferredWidth =10;
Table.Columns(4).PreferredWidth =10;
Table.Columns(5).PreferredWidth =10;
Table.Columns(6).PreferredWidth =10;
// Задаем заголовки колонок
Row1=Table.Rows(1);
Row1.Cells(1).Range.Text="№ п/п";
Row1.Cells(2).Range.Text="Наименование";
Row1.Cells(4).Range.Text="Кол-во";
Row1.Cells(3).Range.Text="Ед. изм.";
Row1.Cells(5).Range.Text="Цена,руб.";
Row1.Cells(6).Range.Text="Сумма,руб.";
// Построчно выводим содержимое таблицы Товары
НомерСтроки = 1;
Для каждого СтрокаТовары Из Ссылка.Товары Цикл
Row=Table.Rows.Add();
Row.Cells(1).Range.Text=НомерСтроки;
// Выравнивание по левому краю
Row.Cells(1).Range.ParagraphFormat.Alignment = 1;
// В качестве текста можно передать только значение "простого" формата
// все агрегатные объекты, переданные как текст, что нормально для платформы 1с
// вызовут исключение.
Row.Cells(2).Range.Text=СтрокаТовары.Номенклатура.Наименование
+?(ЗначениеЗаполнено(СтрокаТовары.ХарактеристикаНоменклатуры),
" ("+СтрокаТовары.ХарактеристикаНоменклатуры+")","");
Row.Cells(4).Range.Text=Строка(СтрокаТовары.Количество);
Row.Cells(4).Range.ParagraphFormat.Alignment = 1;
Row.Cells(3).Range.Text=?(ЗначениеЗаполнено(СтрокаТовары.Номенклатура.БазоваяЕдиницаИзмерения)
,СтрокаТовары.Номенклатура.БазоваяЕдиницаИзмерения.Наименование,"-");
Row.Cells(3).Range.ParagraphFormat.Alignment = 1;
Row.Cells(5).Range.Text=Формат(СтрокаТовары.Цена,"ЧДЦ=2");
Row.Cells(5).Range.ParagraphFormat.Alignment = 1;
Row.Cells(6).Range.Text=Формат(СтрокаТовары.Сумма,"ЧДЦ=2");
Row.Cells(6).Range.ParagraphFormat.Alignment = 1;
НомерСтроки=НомерСтроки+1;
КонецЦикла;
// Задаем форматирование первой строки
// Если сделать это сразу, то все новые строки таблицы будут
// формироваться с тем же форматом
Row1.Range.Font.Bold = 9999998;
Row1.Range.Font.Size = 14;
Row1.Range.Font.Name = "Verdana";
Row1.Range.ParagraphFormat.Alignment = 1;
// Последняя строка...
Row = Table.Rows.Add();
Row.Range.Font.Bold = 9999998;
Row.Cells(1).Range.Text="Итого:";
Исключение
Doc.Save();
Сообщить(ОписаниеОшибки());
Объект.Application.Quit();
Объект = Неопределено;
КонецПопытки;
Попытка // эта конструкция выдает исключительную ситуацию, но при этом
// результат все-равно работает))
// объединяем ячейки в конце таблицы
Table.cell(НомерСтроки+1, 1).Merge(Table.cell(НомерСтроки+1, 5));
Исключение
КонецПопытки;
Попытка
Row.Cells(1).Range.ParagraphFormat.Alignment = 3;
Row.Cells(2).Range.Text=Формат(Ссылка.Товары.Итог("Сумма"), "ЧДЦ=2");
Row.Cells(2).Range.ParagraphFormat.Alignment = 1;
Doc.Save();
Объект.Application.Quit();
Объект = Неопределено;
Исключение
Doc.Save();
Сообщить(ОписаниеОшибки());
Объект.Application.Quit();
Объект = Неопределено;
КонецПопытки;
КонецПроцедуры
Написал Nikola23 - http://infostart.ru/public/67727/ Категория:
Работа с Microsoft Office и OpenOffice Загрузка данных из текстовых файлов с выборкой через ADO. Часто бывает потребность загружать данные из текстовых форматов, причем информация для загрузки бьется на 2 и более файлов.
Хорошо бы посредством SQL запроса выбирать данные из этих файлов и производить загрузку! Это вполне возможно и я считаю этот способ наиболее грамотный для решения таких задач!
Имеем 2 файла:
- Head_XXXXX.txt
- Rows_XXXXX.txt
Где XXXXX – порядковой номер пары файлов
Структура строки в Head_XXXXX.txt :
Колонка1 20 символов – Номер заказа
Колонка2 5 символов – Код контрагента
Колонка3 10 символов – Дата заказа
Колонка4 10 символов – Дата доставки
Колонка5 10 символов – Дата сбора
Колонка6 4 символов – Количество строк в ТЧ
Структура строки в Rows_XXXXX.txt :
Колонка1 20 символов – Номер заказа
Колонка2 7 символов – Артикул номенклатуры
Колонка3 9 символов – Количество в базовых ед. изм.
В каждой паре файлов несколько Заказов.
Необходимо загрузить эти заказы в БД 1С
Для этого воспользуемся Microsoft.Jet.OLEDB.4.0
Для того чтоб данный драйвер корректно понимал структуру файлов необходимо в каталоге расположения данных файлов, перед выполнением запросов, создать специальный текстовый файл schema.ini cо следующими строками:
Код [ Head_XXXXX]
ColNameHeader=False
Format=FixedLength
Col1=NumberNote Text Width 20
Col2=StoreNum Text Width 5
Col3=DataNote DateTime Width 10
Col4=DataDev DateTime Width 10
Col5=DataDes DateTime Width 10
Col6=CountLine Long Width 4
[Rows_XXXXX]
ColNameHeader=False
Format=FixedLength
Col1=NumberNote Text Width 20
Col2=Articul Text Width 7
Col3=Counts Double Width 9
Как видим, здесь мы задаем структуру таблицы из файла.
Остается только выполнить запрос к полученной текстовой БД и обработать результат:
Ниже приведен пример кода для платформы 1С 8:
Код 1C v 8.х // Загружает данные из текстовых данных
// Параметры
// Стр_КаталогДанных - <Строка>
// Автор: Gmix 04.05.2006 12:22:09
// Возвращаемое значение:
// <Булево>
Функция ЗагрузитьДанныеИзtxt(Стр_КаталогДанных)
// проверки заполнения
ОБ_ФайлДанных=Новый Файл(Стр_КаталогДанных);
Если НЕ ОБ_ФайлДанных.ЭтоКаталог() Тогда
Сообщить("Необходимо указать каталог данных!",СтатусСообщения.ОченьВажное);
Возврат Ложь;
КонецЕсли;
Если НЕ ОБ_ФайлДанных.Существует() Тогда
Сообщить("Каталог """+Стр_КаталогДанных+""" не существует!",СтатусСообщения.ОченьВажное);
Возврат Ложь;
КонецЕсли;
ОБ_АДОКонект = Новый COMОбъект("ADODB.Connection");
ОБ_АДОРекордсетШапка = Новый COMОбъект("ADODB.Recordset");
ОБ_АДОРекордсетСтроки = Новый COMОбъект("ADODB.Recordset");
//Определяем пару файлов
Стр_ОкончаниеФайла="";
ФайлыШапок = НайтиФайлы(Стр_КаталогДанных, "Head_*.txt");
Для каждого ФайлШапки Из ФайлыШапок Цикл
Стр_ОкончаниеФайла=Сред(ФайлШапки.ИмяБезРасширения,6);
Стр_таблицаШапки=ФайлШапки.Имя;
Стр_ТаблицаСтрок="Rows_"+Стр_ОкончаниеФайла+".txt";
Стр_ИмяФайлСтрок=ДобавлениеСлеша(Стр_КаталогДанных)+Стр_ТаблицаСтрок;
ФайлСтрок=Новый Файл(Стр_ИмяФайлСтрок);
Если НЕ ФайлСтрок.Существует() Тогда
Сообщить("Не найден файл строк для файла шапки """+Стр_таблицаШапки+"""! Пара файлов не обработана",СтатусСообщения.Важное);
Продолжить;
КонецЕсли;
//Создаем схему данных
ФайлСхемыДанных=Новый Файл(ДобавлениеСлеша(Стр_КаталогДанных)+"schema.ini");
Если ФайлСхемыДанных.Существует() Тогда
Попытка
УдалитьФайлы(ФайлСхемыДанных.Путь,ФайлСхемыДанных.Имя);
Исключение
Сообщить("Не возможно удалить файл """+ФайлСхемыДанных.ПолноеИмя+""" для создания новой схемы данных! Проверте атрибуты файла",СтатусСообщения.Важное);
Возврат Ложь;
КонецПопытки;
КонецЕсли;
Стр_СхемаДанныхТхт="["+Стр_таблицаШапки+"]
|ColNameHeader=False
|Format=FixedLength
|Col1=NumberNote Text Width 20
|Col2=StoreNum Text Width 5
|Col3=DataNote DateTime Width 10
|Col4=DataDev DateTime Width 10
|Col5=DataDes DateTime Width 10
|Col6=CountLine Long Width 4
|["+Стр_ТаблицаСтрок+"]
|ColNameHeader=False
|Format=FixedLength
|Col1=NumberNote Text Width 20
|Col2=Articul Text Width 7
|Col3=Counts Double Width 9";
ТекстСхемы=Новый ЗаписьТекста(ФайлСхемыДанных.ПолноеИмя, КодировкаТекста.ANSI);
ТекстСхемы.Записать(Стр_СхемаДанныхТхт);
ТекстСхемы.Закрыть();
// Создаем коннект
Попытка
ОБ_АДОКонект.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+Стр_КаталогДанных+";Extended Properties='text;FMT=Delimited;HDR=NO'");
Исключение
Сообщить("Невозможно открыть соединение!"+ОписаниеОшибки(),СтатусСообщения.Важное);
Возврат Ложь;
КонецПопытки;
Стр_SQL = "S_elect * FROM "+Стр_таблицаШапки;
Попытка
ОБ_АДОРекордсетШапка=ОБ_АДОКонект.Execute(Стр_SQL);
Исключение
Сообщить("Ошибка выполнения запроса """+Стр_SQL+"""!"+ОписаниеОшибки(),СтатусСообщения.Важное);
Возврат Ложь;
КонецПопытки;
Пока НЕ ОБ_АДОРекордсетШапка.EOF Цикл
// Заказ
Стр_НомерЗаказа = ОБ_АДОРекордсетШапка.Fields("NumberNote").Value;
Стр_КодКА= ОБ_АДОРекордсетШапка.Fields("StoreNum").Value;
Д_ДатаЗаказа= ОБ_АДОРекордсетШапка.Fields("DataNote").Value;
Д_ДатаДоставки= ОБ_АДОРекордсетШапка.Fields("DataDev").Value;
Д_ДатаСбора= ОБ_АДОРекордсетШапка.Fields("DataDes").Value;
Ч_КоличествоСтрок = ОБ_АДОРекордсетШапка.Fields("CountLine").Value;
Сообщить("Заказ № "+Стр_НомерЗаказа+" от " +Д_ДатаЗаказа+ " Код контрагента: "+Стр_КодКА+" Дата доставки: "+Д_ДатаДоставки);
// Обработка строк заказа
Стр_SQL = "S_elect * FROM "+Стр_ТаблицаСтрок+" WHERE NumberNote='"+Стр_НомерЗаказа+"'";
Попытка
ОБ_АДОРекордсетСтроки=ОБ_АДОКонект.Execute(Стр_SQL);
Исключение
Сообщить("Ошибка выполнения запроса """+Стр_SQL+"""!"+ОписаниеОшибки(),СтатусСообщения.Важное);
Возврат Ложь;
КонецПопытки;
Сч=0;
Сообщить(" № Артикул Количество");
Пока НЕ ОБ_АДОРекордсетСтроки.EOF Цикл
//Заполняем таб часть документа
Сч=Сч+1;
Стр_Артикул=СокрЛП(ОБ_АДОРекордсетСтроки.Fields("Articul").Value);
Ч_Количество=ОБ_АДОРекордсетСтроки.Fields("Counts").Value;
Сообщить(""+Сч+" " +Стр_Артикул+ " "+Ч_Количество);
ОБ_АДОРекордсетСтроки.MoveNext();
КонецЦикла;
ОБ_АДОРекордсетШапка.MoveNext();
КонецЦикла;
КонецЦикла;
Возврат Истина;
КонецФункции
Автор
Журавлев Михаил Викторович Категория:
JSON, XML, TXT, CSV, DBF Установка полей и масштаба документа при сохранении из 1С MS Excel
Код 1C v 8.х Попытка
Excel = Новый COMОбъект("Excel.Application");
Исключение
Сообщить("ВНИМАНИЕ! TOpenOffice не установлен или недостаточно прав доступа!
| - " + ОписаниеОшибки(), СтатусСообщения.ОченьВажное);
Возврат;
КонецПопытки;
ТабДокумент = ПечатьЦенника(ВидЦенника);
ИмяФайла = ПутьДляСохранения+"\"+ТабДокумент.ИспользуемоеИмяФайла+".xls";
ТабДокумент.Записать(ИмяФайла, ТипФайлаТабличногоДокумента.XLS97);
МакетОформления = Неопределено;
// Откроем табличный документ
Excel.Workbooks.Open(ИмяФайла);
КнигаExcel = Excel.Workbooks.Item(Excel.Workbooks.Count);
ЛистExcel = КнигаExcel.WorkSheets.Item(1);
КнигаExcel.Activate();
ЛистExcel.Activate();
//Установка полей
//Значение - points. Придется делать пересчет (100 points = 3.8 inches)
ЛистExcel.PageSetup.LeftMargin = 28;
ЛистExcel.PageSetup.RightMargin = 28;
ЛистExcel.PageSetup.TopMargin = 25;
ЛистExcel.PageSetup.BottomMargin = 25;
//Установка ориентации
Если ТабДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт Тогда
ЛистExcel.PageSetup.Orientation = 2;
Иначе
ЛистExcel.PageSetup.Orientation = 1;
КонецЕсли;
//Установка масштаба печати
ЛистExcel.PageSetup.Zoom = ТабДокумент.МасштабПечати;
//Сохранение в Мои документы
КнигаExcel.Save();
//Покажем книгу на экран
Excel.Visible = 1;
//Отключаем COM - соединение
Excel.Quit();
OpenOffice Calc
Код 1C v 8.х Попытка
СервисМанагер = Новый COMОбъект("Com.Sun.Star.ServiceManager");
Исключение
Сообщить("Не могу создать объект Open Office!
| - " + ОписаниеОшибки(), СтатусСообщения.ОченьВажное);
Возврат;
КонецПопытки;
ТабДокумент = ПечатьЦенника(ВидЦенника);
ИмяФайла = ПутьДляСохранения+"\"+ТабДокумент.ИспользуемоеИмяФайла+".xls";
ТабДокумент.Записать(ИмяФайла, ТипФайлаТабличногоДокумента.XLS97);
МакетОформления = Неопределено;
// Откроем табличный документ
Скрипт = новый COMОбъект("MSScriptControl.ScriptControl");
Скрипт.language = "javascript";
Скрипт.eval("Massiv=new Array()");
Массив = Скрипт.eval("Massiv");
Скрипт.AddObject("СервисМанагер",СервисМанагер);
Скрипт.eval("Massiv[0]=СервисМанагер.Bridge_GetStruct('com.sun.star.beans.PropertyValue')");
Скрипт.eval("Massiv[0].Name='Hidden'");
Скрипт.eval("Massiv[0].Value=true");
Стол = СервисМанагер.createInstance("com.sun.star.frame.Desktop");
ВремПуть = СтрЗаменить(ПутьДляСохранения, "\", "/");
ВремПуть = СтрЗаменить(ВремПуть, " ", "%20");
УРЛ = "file:///"+ВремПуть+"/"+ТабДокумент.ИспользуемоеИмяФайла+".xls";
Документ = Стол.LoadComponentFromURL(УРЛ,"_blank",0,Массив);
Документ.lockControllers();
Документ.addActionLock();
Листы=Документ.getSheets();
ЛистДанные=Листы.getByIndex(0);
СтилиСтраницы=Документ.StyleFamilies.getByName("PageStyles");
ПараметрыСтраницы=СтилиСтраницы.getByName(ЛистДанные.PageStyle);
//Установка полей
ПараметрыСтраницы.LeftMargin = ТабДокумент.ПолеСлева * 100;
ПараметрыСтраницы.RightMargin = ТабДокумент.ПолеСправа * 100;
ПараметрыСтраницы.TopMargin = ТабДокумент.ПолеСверху * 100;
ПараметрыСтраницы.BottomMargin = ТабДокумент.ПолеСнизу * 100;
//Установка ориентации
Если ТабДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт Тогда
ПараметрыСтраницы.IsLandscape = Истина;
ПараметрыСтраницы.Width = 29700;
ПараметрыСтраницы.Height = 21000;
Иначе
ПараметрыСтраницы.IsLandscape = Ложь;
ПараметрыСтраницы.Width = 21000;
ПараметрыСтраницы.Height = 29700;
КонецЕсли;
//Установка масштаба печати
ПараметрыСтраницы.PageScale = ТабДокумент.МасштабПечати;
//Сохранение документа
Документ.unlockControllers();
Документ.removeActionLock();
Документ.store();
Документ.Close(Истина);
//Отключаем COM - соединение
Стол.terminate();
Категория:
Работа с Microsoft Office и OpenOffice Печать табличной части документа в Word'e Вот пример кода создания и заполнения таблиц(пример для 7.7, в 8.х заменить первую строку на МСВорд Новый COMОбъект("Word.Application")):
Код 1C v 7.x МСВорд = СоздатьОбъект("Word.Application");
Документ = МСВорд.Documents;
Документ.Add();
Документ = МСВорд.ActiveDocument();
Документ.Paragraphs.Add();
Диапазон = Документ.Paragraphs(Документ.Paragraphs.Count()).Range;
//Добавим таблицу фиксированного размера 3х2
Документ.Tables.Add(Диапазон,3,2);
Документ.Tables(1).Range.S_elect();
Выбор = МСВорд.S_election();
Выбор.Style = "Сетка таблицы";
//Установим ширину обоих колонок по 8 см
Документ.Tables(1).Columns(1).Width = МСВорд.CentimetersToPoints(8);
Документ.Tables(1).Columns(2).Width = МСВорд.CentimetersToPoints(8);
//Заполнение
Документ.Tables(1).Cell(1,1).Range.Text = "Это первая сирока, первая колонка";
Документ.Tables(1).Cell(2,1).Range.Text = "";
Документ.Tables(1).Cell(3,1).Range.Text = "";
Документ.Tables(1).Cell(1,2).Range.Text = "";
Документ.Tables(1).Cell(2,2).Range.Text = "";
Документ.Tables(1).Cell(3,2).Range.Text = "Это третья строка, вторая колонка";
//Добавим таблицу с произвольным количеством строк, для примера возьмем 4 колонки
//Сначала выведем заголовок таблицы
Документ.Paragraphs.Add();
Диапазон = Документ.Paragraphs(Документ.Paragraphs.Count()).Range;
Документ.Tables.Add(Диапазон,1,4);
Документ.Tables(2).Range.S_elect();
Выбор = МСВорд.S_election();
Выбор.Style = "Сетка таблицы";
Выбор.Rows.AllowBreakAcrossPages = 0;
//Зададим ширину колонок
Документ.Tables(2).Columns(1).Width = МСВорд.CentimetersToPoints(2);
Документ.Tables(2).Columns(2).Width = МСВорд.CentimetersToPoints(4);
Документ.Tables(2).Columns(3).Width = МСВорд.CentimetersToPoints(4);
Документ.Tables(2).Columns(4).Width = МСВорд.CentimetersToPoints(10);
//Заполнение шапки таблицы
Документ.Tables(2).Cell(1,1).Range.Paragraphs(1).Alignment = 1;
Документ.Tables(2).Cell(1,1).Range.Text = "№";
Документ.Tables(2).Cell(1,2).Range.Paragraphs(1).Alignment = 1;
Документ.Tables(2).Cell(1,2).Range.Text = "Колонка 2";
Документ.Tables(2).Cell(1,3).Range.Paragraphs(1).Alignment = 1;
Документ.Tables(2).Cell(1,3).Range.Text = "Колонка 3";
Документ.Tables(2).Cell(1,4).Range.Paragraphs(1).Alignment = 1;
Документ.Tables(2).Cell(1,4).Range.Text = "Примечание";
//Для документа можно так цикл организовать:
//Предположим, что Док - это документ, тогда
Для А =1 По Док.КоличествоСтрок() Цикл
Док.ПолучитьСтрокуПоНомеру(А);
Выбор.I_nsertRowsBelow(1);
Документ.Tables(2).Cell(А+1,1).Range.Text = Строка(А);//номер строки
Документ.Tables(2).Cell(А+1,2).Range.Text = Док.РеквизитТабличнойЧастиДокумента1;
Документ.Tables(2).Cell(А+1,3).Range.Text = Док.РеквизитТабличнойЧастиДокумента2;
Документ.Tables(2).Cell(А+1,4).Range.Text = Док.РеквизитТабличнойЧастиДокумента3;
КонецЦикла;
//или выведем таблицу по таблице значений
Для А = 1 По ТЗ.КоличествоСтрок() Цикл
//Добавим строку в таблицу
Выбор.I_nsertRowsBelow(1);
Документ.Tables(2).Cell(А+1,1).Range.Text = Строка(А);//номер строки
Документ.Tables(2).Cell(А+1,2).Range.Text = ТЗ.ПолучитьЗначение(А,1);
Документ.Tables(2).Cell(А+1,3).Range.Text = ТЗ.ПолучитьЗначение(А,2);
Документ.Tables(2).Cell(А+1,4).Range.Text = ТЗ.ПолучитьЗначение(А,3);
КонецЦикла;
//Запишем Документ
Документ.SaveAs("ПутьИИмяДокумента",0);
Документ.Close();
ТЗ - это таблица значений.
Для документа можно так цикл организовать:
Предположим, что Док - это документ, тогда
Код 1C v 8.2 УП Для А =1 По Док.КоличествоСтрок() Цикл
Док.ПолучитьСтрокуПоНомеру(А);
Выбор.I_nsertRowsBelow(1);
Документ.Tables(2).Cell(А+1,1).Range.Text = Строка(А);//номер строки
Документ.Tables(2).Cell(А+1,2).Range.Text = Док.РеквизитТабличнойЧастиДокумента1;
Документ.Tables(2).Cell(А+1,3).Range.Text = Док.РеквизитТабличнойЧастиДокумента2;
Документ.Tables(2).Cell(А+1,4).Range.Text = Док.РеквизитТабличнойЧастиДокумента3;
КонецЦикла;
Категория:
Работа с Microsoft Office и OpenOffice Выгрузка метаданных конфигурации в Microsoft Word и Excel Код 1C v 8.х
Перем ОбъектыКонфы;
Перем СтруктКонфы;
Процедура ВыгрузитьВWord()
Попытка
Word = Новый COMОбъект("Word.Application");
Исключение
Сообщить("Не удалось открыть Word");
Возврат;
КонецПопытки;
Word.Documents.Add();
Документ = Word.ActiveDocument();
// Перебор типов метаданных
Для Каждого ТипОбъекта Из ОбъектыКонфы Цикл
Состояние(ТипОбъекта.Значение);
Если Метаданные[ТипОбъекта.Ключ].Количество() > 0 Тогда
// Добавляем новый параграф
Документ.Paragraphs.Add();
Номер = Документ.Paragraphs.Count();
Документ.Paragraphs(Номер-1).Range().I_nsertAfter(ТипОбъекта.Значение);
Документ.Paragraphs(Номер).Range().Style="Заголовок 1";
//Перебираем конктретные объекты
Для каждого Объект Из Метаданные[ТипОбъекта.Ключ] Цикл
// Добавляем новый параграф
Документ.Paragraphs.Add();
Номер = Документ.Paragraphs.Count();
Документ.Paragraphs(Номер-1).Range().I_nsertAfter(Объект.Синоним);
Документ.Paragraphs(Номер).Range().Style="Заголовок 2";
// Перебираем параметры метаданных
Для каждого Параметр Из СтруктКонфы Цикл
Попытка
Количество = Объект[Параметр.Ключ].Количество();
Исключение
Продолжить;
КонецПопытки;
Если Количество > 0 Тогда
// Добавляем новый параграф
Документ.Paragraphs.Add();
Номер = Документ.Paragraphs.Count();
Документ.Paragraphs(Номер-1).Range().I_nsertAfter(Параметр.Значение + " (" + Количество + ")");
Документ.Paragraphs(Номер).Range().Style="Заголовок 3";
// Добавляем новый параграф
Документ.Paragraphs.Add();
Номер=Документ.Paragraphs.Count();
// Добавляем новую таблицу
Документ.Tables.Add(Документ.Paragraphs(Номер).Range(),Количество+1,4);
Счетчик = 1;
// Заполняем шапку таблицы
Таблица = Документ.Tables(Документ.Tables.Count());
Таблица.Cell(Счетчик,1).Range().I_nsertAfter("Имя");
Таблица.Cell(Счетчик,2).Range().I_nsertAfter("Синоним");
Таблица.Cell(Счетчик,3).Range().I_nsertAfter("Тип");
Таблица.Cell(Счетчик,4).Range().I_nsertAfter("Комментарий");
// Устанавливаем жирный шрифт для шапки таблицы
Документ.Range(Таблица.Cell(Счетчик,1).Range.Start,Таблица.Cell(Счетчик,4).Range.End).Font.Bold = Истина;
Для каждого Значение Из Объект[Параметр.Ключ] Цикл
Счетчик = Счетчик + 1;
// Заполняем содержимое таблицы
Попытка
Таблица.Cell(Счетчик,1).Range().I_nsertAfter(Значение.Имя);
Исключение
КонецПопытки;
Попытка
Таблица.Cell(Счетчик,2).Range().I_nsertAfter(Значение.Синоним);
Исключение
КонецПопытки;
Попытка
СтрокаТипов = "";
// Выводим все типы
Для каждого Тип Из Значение.Тип.Типы() Цикл
СтрокаТипов = СтрокаТипов + " " + Строка(Тип);
КонецЦикла;
Таблица.Cell(Счетчик,3).Range().I_nsertAfter(СтрокаТипов);
Исключение
КонецПопытки;
Попытка
Таблица.Cell(Счетчик,4).Range().I_nsertAfter(Значение.Комментарий);
Исключение
КонецПопытки;
КонецЦикла;
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецЕсли;
КонецЦикла;
// Показываем документ
Word.Visible = Истина;
// Устанавливаем активность документа
Word.Activate();
Word = Неопределено;
КонецПроцедуры
Процедура ВыгрузитьВExcel()
Попытка
Excel = Новый COMОбъект("Excel.Application");
Исключение
Сообщить("Не удалось открыть Excel");
Возврат;
КонецПопытки;
// Добавляем новый лист
Excel.Application.Workbooks.Add(1);
Лист = Excel.ActiveSheet;
// Задаем имя закладки
Лист.Name = "Данные";
НомерСтроки = 0;
// Перебор типов метаданных
Для Каждого ТипОбъекта Из ОбъектыКонфы Цикл
Состояние(ТипОбъекта.Значение);
Если Метаданные[ТипОбъекта.Ключ].Количество() > 0 Тогда
// Добавляем новую строку
НомерСтроки = НомерСтроки + 1;
// Устанавливаем текст в ячейку
Лист.Cells(НомерСтроки, 1).Value = ТипОбъекта.Значение;
// Устанавливаем размер шрифта
Лист.Cells(НомерСтроки, 1).Font.Size = 16;
// Устанавливаем цвет
Лист.Cells(НомерСтроки, 1).Font.ColorIndex = 3;
//Перебираем конктретные объекты
Для каждого Объект Из Метаданные[ТипОбъекта.Ключ] Цикл
// Добавляем новую строку
НомерСтроки = НомерСтроки + 1;
// Устанавливаем текст в ячейку
Лист.Cells(НомерСтроки, 1).Value = Объект.Синоним;
// Устанавливаем отступ в 2 символа
Лист.Cells(НомерСтроки, 1).I_nsertIndent(2);
// Устанавливаем размер шрифта
Лист.Cells(НомерСтроки, 1).Font.Size = 12;
// Устанавливаем цвет
Лист.Cells(НомерСтроки, 1).Font.ColorIndex = 5;
// Перебираем параметры метаданных
Для каждого Параметр Из СтруктКонфы Цикл
Попытка
Количество = Объект[Параметр.Ключ].Количество();
Исключение
Продолжить;
КонецПопытки;
Если Количество > 0 Тогда
// Добавляем новую строку
НомерСтроки = НомерСтроки + 1;
Лист.Cells(НомерСтроки, 1).Value = Параметр.Значение + " (" + Количество + ")";
Лист.Cells(НомерСтроки, 1).I_nsertIndent(4);
// Устанавливаем жирный шрифт
Лист.Cells(НомерСтроки, 1).Font.Bold = Истина;
// Устанавливаем цвет
Лист.Cells(НомерСтроки, 1).Font.ColorIndex = 16;
// Добавляем новую таблицу
НомерСтроки = НомерСтроки + 1;
Лист.Cells(НомерСтроки, 1).Value = "Имя";
Лист.Cells(НомерСтроки, 2).Value = "Синоним";
Лист.Cells(НомерСтроки, 3).Value = "Тип";
Лист.Cells(НомерСтроки, 4).Value = "Комментарий";
Для Ном = 1 По 4 Цикл
// Устанавливаем ширину колонки
Лист.Cells(НомерСтроки, Ном).ColumnWidth = 20;
Лист.Cells(НомерСтроки, Ном).Font.Bold = Истина;
// Очищаем все границы
Лист.Cells(НомерСтроки, Ном).Borders(5).LineStyle = -4142;
// Устанавливаем левую границу
Лист.Cells(НомерСтроки, Ном).Borders(7).LineStyle = 1;
// Устанавливаем верхнюю границу
Лист.Cells(НомерСтроки, Ном).Borders(8).LineStyle = 1;
// Устанавливаем нижнюю границу
Лист.Cells(НомерСтроки, Ном).Borders(9).LineStyle = 1;
// Устанавливаем правую границу
Лист.Cells(НомерСтроки, Ном).Borders(10).LineStyle = 1;
// Устанавливаем цвет фона
Лист.Cells(НомерСтроки, Ном).Interior.ColorIndex = 34;
КонецЦикла;
Для каждого Значение Из Объект[Параметр.Ключ] Цикл
НомерСтроки = НомерСтроки + 1;
// Заполняем содержимое таблицы
Попытка
Лист.Cells(НомерСтроки, 1).Value = Значение.Имя;
Исключение
КонецПопытки;
Попытка
Лист.Cells(НомерСтроки, 2).Value = Значение.Синоним;
Исключение
КонецПопытки;
Попытка
СтрокаТипов = "";
// Выводим все типы
Для каждого Тип Из Значение.Тип.Типы() Цикл
СтрокаТипов = СтрокаТипов + " " + Строка(Тип);
КонецЦикла;
Лист.Cells(НомерСтроки, 3).Value = СтрокаТипов;
Исключение
КонецПопытки;
Попытка
Лист.Cells(НомерСтроки, 4).Value = Значение.Комментарий;
Исключение
КонецПопытки;
Для Ном = 1 По 4 Цикл
// Установка границ
Лист.Cells(НомерСтроки, Ном).Borders(5).LineStyle = -4142;
Лист.Cells(НомерСтроки, Ном).Borders(7).LineStyle = 1;
Лист.Cells(НомерСтроки, Ном).Borders(8).LineStyle = 1;
Лист.Cells(НомерСтроки, Ном).Borders(9).LineStyle = 1;
Лист.Cells(НомерСтроки, Ном).Borders(10).LineStyle = 1;
// Устанавливаем выравнивание по левому краю
Лист.Cells(НомерСтроки, Ном).VerticalAlignment = -4160;
// Устанавливаем перенос слов
Лист.Cells(НомерСтроки, Ном).WrapText = Истина;
КонецЦикла;
КонецЦикла;
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецЕсли;
КонецЦикла;
// Показываем документ
Excel.Visible = Истина;
Excel = Неопределено;
КонецПроцедуры
Процедура Сформировать()
// Определяем все возможные объекты метаданных
ОбъектыКонфы = Новый Структура();
ОбъектыКонфы.Вставить("ОбщиеМодули", "Общие модули");
ОбъектыКонфы.Вставить("ОбщиеФормы", "Общие формы");
ОбъектыКонфы.Вставить("ОбщиеМакеты", "Общие макеты");
ОбъектыКонфы.Вставить("ОбщиеКартинки", "Общие картинки");
ОбъектыКонфы.Вставить("Роли", "Роли");
ОбъектыКонфы.Вставить("Интерфейсы", "Интерфейсы");
ОбъектыКонфы.Вставить("Стили", "Стили");
ОбъектыКонфы.Вставить("Языки", "Языки");
ОбъектыКонфы.Вставить("ПланыОбмена", "Планы обмена");
ОбъектыКонфы.Вставить("Константы", "Константы");
ОбъектыКонфы.Вставить("КритерииОтбора", "Критерии отбора");
ОбъектыКонфы.Вставить("Справочники", "Справочники");
ОбъектыКонфы.Вставить("Документы", "Документы");
ОбъектыКонфы.Вставить("ЖурналыДокументов", "Журналы документов");
ОбъектыКонфы.Вставить("Перечисления", "Перечисления");
ОбъектыКонфы.Вставить("Отчеты", "Отчеты");
ОбъектыКонфы.Вставить("Обработки", "Обработки");
ОбъектыКонфы.Вставить("ПланыВидовХарактеристик", "Планы видов характеристик");
ОбъектыКонфы.Вставить("ПланыСчетов", "Планы счетов");
ОбъектыКонфы.Вставить("ПланыВидовРасчета", "Планы видов расчета");
ОбъектыКонфы.Вставить("РегистрыСведений", "Регистры сведений");
ОбъектыКонфы.Вставить("РегистрыБухгалтерии", "Регистры бухгалтерии");
ОбъектыКонфы.Вставить("РегистрыРасчета", "Регистры расчета");
// Определяем все возможные параметры
СтруктКонфы = Новый Структура();
СтруктКонфы.Вставить("Измерения", "Измерения");
СтруктКонфы.Вставить("Ресурсы", "Ресурсы");
СтруктКонфы.Вставить("Реквизиты", "Реквизиты");
СтруктКонфы.Вставить("Формы", "Формы");
СтруктКонфы.Вставить("Макеты", "Макеты");
СтруктКонфы.Вставить("Графы", "Графы");
СтруктКонфы.Вставить("ТабличныеЧасти", "Табличные части");
СтруктКонфы.Вставить("Значения", "Значения");
ВыгрузитьВWord(); // из 1С в Microsoft Word
ВыгрузитьВExcel(); // из 1C в Microsoft Excel
КонецПроцедуры
Код 1C v 7.x
Процедура Справочник()
Ворд=СоздатьОбъект("Word.Application");
Ворд.DisplayAlerts=0;
Ворд.ActiveDocument.ActiveWindow.S_election.I_nsertRowsBelow(1);
Ворд.ActiveDocument.ActiveWindow.S_election.MoveLeft(1,1);
Ворд.ActiveDocument.ActiveWindow.S_election.TypeText("Код");
Ворд.ActiveDocument.ActiveWindow.S_election.MoveRight(1,1);
Тип=?(Метаданные.Справочник(СокрЛП(Имя)).ТипКода="Текстовый","Строка","Число");
Ворд.ActiveDocument.ActiveWindow.S_election.TypeText(Тип+" ("+СокрЛП(Метаданные.Справочник(СокрЛП(Имя)).ДлинаКода)+")");
Ворд.ActiveDocument.ActiveWindow.S_election.MoveRight(1,1);
Ворд.ActiveDocument.ActiveWindow.S_election.TypeText("");
Ворд.ActiveDocument.ActiveWindow.S_election.I_nsertRowsBelow(1);
Ворд.ActiveDocument.ActiveWindow.S_election.MoveLeft(1,1);
Ворд.ActiveDocument.ActiveWindow.S_election.TypeText("Наименование");
Ворд.ActiveDocument.ActiveWindow.S_election.MoveRight(1,1);
Ворд.ActiveDocument.ActiveWindow.S_election.TypeText("Строка ("+СокрЛП(Метаданные.Справочник(СокрЛП(Имя)).ДлинаНаименования)+")");
Ворд.ActiveDocument.ActiveWindow.S_election.MoveRight(1,1);
Ворд.ActiveDocument.ActiveWindow.S_election.TypeText("");
Для Сч=1 По Метаданные.Справочник(СокрЛП(Имя)).Реквизит() Цикл
Ворд.ActiveDocument.ActiveWindow.S_election.I_nsertRowsBelow(1);
Ворд.ActiveDocument.ActiveWindow.S_election.MoveLeft(1,1);
Реквизит=Метаданные.Справочник(СокрЛП(Имя)).Реквизит(Сч);
Синоним=Реквизит.Синоним;
Если ПустоеЗначение(Синоним)=0 Тогда
Если нрег(СтрЗаменить(Синоним," ",""))<>нрег(Реквизит.Идентификатор) Тогда
Синоним=" ("+Синоним+")";
Иначе
Синоним="";
КонецЕсли;
КонецЕсли;
Ворд.ActiveDocument.ActiveWindow.S_election.TypeText(СокрЛП(Реквизит.Идентификатор)+Синоним);
Ворд.ActiveDocument.ActiveWindow.S_election.MoveRight(1,1);
Тип=Реквизит.Тип;
Если Тип="Строка" Тогда
Тип=Тип+" ("+СокрЛП(Реквизит.Длина)+")";
ИначеЕсли Тип="Число" Тогда
Тип=Тип+" ("+СокрЛП(Реквизит.Длина);
Если ПустоеЗначение(Реквизит.Точность)=0 Тогда
Тип=Тип+"."+СокрЛП(Реквизит.Точность);
КонецЕсли;
Тип=Тип+")";
Иначе
Тип=Тип+"."+Реквизит.Вид;
КонецЕсли;
Ворд.ActiveDocument.ActiveWindow.S_election.TypeText(Тип);
Ворд.ActiveDocument.ActiveWindow.S_election.MoveRight(1,1);
Ворд.ActiveDocument.ActiveWindow.S_election.TypeText(Реквизит.Комментарий);
КонецЦикла;
Предупреждение("Готово",5);
КонецПроцедуры
Процедура Документ()
Ворд=СоздатьОбъект("Word.Application");
Ворд.DisplayAlerts=0;
Для Сч=1 По Метаданные.Документ(СокрЛП(Имя)).РеквизитШапки() Цикл
Ворд.ActiveDocument.ActiveWindow.S_election.I_nsertRowsBelow(1);
Ворд.ActiveDocument.ActiveWindow.S_election.MoveLeft(1,1);
Ворд.ActiveDocument.ActiveWindow.S_election.TypeText("Шапка");
Ворд.ActiveDocument.ActiveWindow.S_election.MoveRight(1,1);
Реквизит=Метаданные.Документ(СокрЛП(Имя)).РеквизитШапки(Сч);
Синоним=Реквизит.Синоним;
Если ПустоеЗначение(Синоним)=0 Тогда
Если нрег(СтрЗаменить(Синоним," ",""))<>нрег(Реквизит.Идентификатор) Тогда
Синоним=" ("+Синоним+")";
Иначе
Синоним="";
КонецЕсли;
КонецЕсли;
Ворд.ActiveDocument.ActiveWindow.S_election.TypeText(СокрЛП(Реквизит.Идентификатор)+Синоним);
Ворд.ActiveDocument.ActiveWindow.S_election.MoveRight(1,1);
Тип=Реквизит.Тип;
Если Тип="Строка" Тогда
Тип=Тип+" ("+СокрЛП(Реквизит.Длина)+")";
ИначеЕсли Тип="Число" Тогда
Тип=Тип+" ("+СокрЛП(Реквизит.Длина);
Если ПустоеЗначение(Реквизит.Точность)=0 Тогда
Тип=Тип+"."+СокрЛП(Реквизит.Точность);
КонецЕсли;
Тип=Тип+")";
Иначе
Тип=Тип+"."+Реквизит.Вид;
КонецЕсли;
Ворд.ActiveDocument.ActiveWindow.S_election.TypeText(Тип);
Ворд.ActiveDocument.ActiveWindow.S_election.MoveRight(1,1);
Ворд.ActiveDocument.ActiveWindow.S_election.TypeText(Реквизит.Комментарий);
КонецЦикла;
Для Сч=1 По Метаданные.Документ(СокрЛП(Имя)).РеквизитТабличнойЧасти() Цикл
Ворд.ActiveDocument.ActiveWindow.S_election.I_nsertRowsBelow(1);
Ворд.ActiveDocument.ActiveWindow.S_election.MoveLeft(1,1);
Ворд.ActiveDocument.ActiveWindow.S_election.TypeText("Таб. часть");
Ворд.ActiveDocument.ActiveWindow.S_election.MoveRight(1,1);
Реквизит=Метаданные.Документ(СокрЛП(Имя)).РеквизитТабличнойЧасти(Сч);
Синоним=Реквизит.Синоним;
Если ПустоеЗначение(Синоним)=0 Тогда
Если нрег(СтрЗаменить(Синоним," ",""))<>нрег(Реквизит.Идентификатор) Тогда
Синоним=" ("+Синоним+")";
Иначе
Синоним="";
КонецЕсли;
КонецЕсли;
Ворд.ActiveDocument.ActiveWindow.S_election.TypeText(СокрЛП(Реквизит.Идентификатор)+Синоним);
Ворд.ActiveDocument.ActiveWindow.S_election.MoveRight(1,1);
Тип=Реквизит.Тип;
Если Тип="Строка" Тогда
Тип=Тип+" ("+СокрЛП(Реквизит.Длина)+")";
ИначеЕсли Тип="Число" Тогда
Тип=Тип+" ("+СокрЛП(Реквизит.Длина);
Если ПустоеЗначение(Реквизит.Точность)=0 Тогда
Тип=Тип+"."+СокрЛП(Реквизит.Точность);
КонецЕсли;
Тип=Тип+")";
Иначе
Тип=Тип+"."+Реквизит.Вид;
КонецЕсли;
Ворд.ActiveDocument.ActiveWindow.S_election.TypeText(Тип);
Ворд.ActiveDocument.ActiveWindow.S_election.MoveRight(1,1);
Ворд.ActiveDocument.ActiveWindow.S_election.TypeText(Реквизит.Комментарий);
КонецЦикла;
Предупреждение("Готово",5);
КонецПроцедуры
Процедура Общие()
Ворд=СоздатьОбъект("Word.Application");
Ворд.DisplayAlerts=0;
Для Сч=1 По Метаданные.ОбщийРеквизитДокумента() Цикл
Ворд.ActiveDocument.ActiveWindow.S_election.I_nsertRowsBelow(1);
Ворд.ActiveDocument.ActiveWindow.S_election.MoveLeft(1,1);
Ворд.ActiveDocument.ActiveWindow.S_election.TypeText("Шапка");
Ворд.ActiveDocument.ActiveWindow.S_election.MoveRight(1,1);
Реквизит=Метаданные.ОбщийРеквизитДокумента(Сч);
Синоним=Реквизит.Синоним;
Если ПустоеЗначение(Синоним)=0 Тогда
Если нрег(СтрЗаменить(Синоним," ",""))<>нрег(Реквизит.Идентификатор) Тогда
Синоним=" ("+Синоним+")";
Иначе
Синоним="";
КонецЕсли;
КонецЕсли;
Ворд.ActiveDocument.ActiveWindow.S_election.TypeText(СокрЛП(Реквизит.Идентификатор)+Синоним);
Ворд.ActiveDocument.ActiveWindow.S_election.MoveRight(1,1);
Тип=Реквизит.Тип;
Если Тип="Строка" Тогда
Тип=Тип+" ("+СокрЛП(Реквизит.Длина)+")";
ИначеЕсли Тип="Число" Тогда
Тип=Тип+" ("+СокрЛП(Реквизит.Длина);
Если ПустоеЗначение(Реквизит.Точность)=0 Тогда
Тип=Тип+"."+СокрЛП(Реквизит.Точность);
КонецЕсли;
Тип=Тип+")";
Иначе
Тип=Тип+"."+Реквизит.Вид;
КонецЕсли;
Ворд.ActiveDocument.ActiveWindow.S_election.TypeText(Тип);
Ворд.ActiveDocument.ActiveWindow.S_election.MoveRight(1,1);
Ворд.ActiveDocument.ActiveWindow.S_election.TypeText(Реквизит.Комментарий);
КонецЦикла;
Предупреждение("Готово",5);
КонецПроцедуры
Процедура СтруктураРегистра()
Ворд=СоздатьОбъект("Word.Application");
Ворд.DisplayAlerts=0;
Для Сч=1 По Метаданные.Регистр(СокрЛП(Имя)).Измерение() Цикл
Ворд.ActiveDocument.ActiveWindow.S_election.I_nsertRowsBelow(1);
Ворд.ActiveDocument.ActiveWindow.S_election.MoveLeft(1,1);
Ворд.ActiveDocument.ActiveWindow.S_election.TypeText("Измерение");
Ворд.ActiveDocument.ActiveWindow.S_election.MoveRight(1,1);
Реквизит=Метаданные.Регистр(СокрЛП(Имя)).Измерение(Сч);
Синоним=Реквизит.Синоним;
Если ПустоеЗначение(Синоним)=0 Тогда
Если нрег(СтрЗаменить(Синоним," ",""))<>нрег(Реквизит.Идентификатор) Тогда
Синоним=" ("+Синоним+")";
Иначе
Синоним="";
КонецЕсли;
КонецЕсли;
Ворд.ActiveDocument.ActiveWindow.S_election.TypeText(СокрЛП(Реквизит.Идентификатор)+Синоним);
Ворд.ActiveDocument.ActiveWindow.S_election.MoveRight(1,1);
Тип=Реквизит.Тип;
Если Тип="Строка" Тогда
Тип=Тип+" ("+СокрЛП(Реквизит.Длина)+")";
ИначеЕсли Тип="Число" Тогда
Тип=Тип+" ("+СокрЛП(Реквизит.Длина);
Если ПустоеЗначение(Реквизит.Точность)=0 Тогда
Тип=Тип+"."+СокрЛП(Реквизит.Точность);
КонецЕсли;
Тип=Тип+")";
Иначе
Тип=Тип+"."+Реквизит.Вид;
КонецЕсли;
Ворд.ActiveDocument.ActiveWindow.S_election.TypeText(Тип);
Ворд.ActiveDocument.ActiveWindow.S_election.MoveRight(1,1);
Ворд.ActiveDocument.ActiveWindow.S_election.TypeText(Реквизит.Комментарий);
КонецЦикла;
Для Сч=1 По Метаданные.Регистр(СокрЛП(Имя)).Ресурс() Цикл
Ворд.ActiveDocument.ActiveWindow.S_election.I_nsertRowsBelow(1);
Ворд.ActiveDocument.ActiveWindow.S_election.MoveLeft(1,1);
Ворд.ActiveDocument.ActiveWindow.S_election.TypeText("Ресурс");
Ворд.ActiveDocument.ActiveWindow.S_election.MoveRight(1,1);
Реквизит=Метаданные.Регистр(СокрЛП(Имя)).Ресурс(Сч);
Синоним=Реквизит.Синоним;
Если ПустоеЗначение(Синоним)=0 Тогда
Если нрег(СтрЗаменить(Синоним," ",""))<>нрег(Реквизит.Идентификатор) Тогда
Синоним=" ("+Синоним+")";
Иначе
Синоним="";
КонецЕсли;
КонецЕсли;
Ворд.ActiveDocument.ActiveWindow.S_election.TypeText(СокрЛП(Реквизит.Идентификатор)+Синоним);
Ворд.ActiveDocument.ActiveWindow.S_election.MoveRight(1,1);
Тип=Реквизит.Тип;
Если Тип="Строка" Тогда
Тип=Тип+" ("+СокрЛП(Реквизит.Длина)+")";
ИначеЕсли Тип="Число" Тогда
Тип=Тип+" ("+СокрЛП(Реквизит.Длина);
Если ПустоеЗначение(Реквизит.Точность)=0 Тогда
Тип=Тип+"."+СокрЛП(Реквизит.Точность);
КонецЕсли;
Тип=Тип+")";
Иначе
Тип=Тип+"."+Реквизит.Вид;
КонецЕсли;
Ворд.ActiveDocument.ActiveWindow.S_election.TypeText(Тип);
Ворд.ActiveDocument.ActiveWindow.S_election.MoveRight(1,1);
Ворд.ActiveDocument.ActiveWindow.S_election.TypeText(Реквизит.Комментарий);
КонецЦикла;
Для Сч=1 По Метаданные.Регистр(СокрЛП(Имя)).Реквизит() Цикл
Ворд.ActiveDocument.ActiveWindow.S_election.I_nsertRowsBelow(1);
Ворд.ActiveDocument.ActiveWindow.S_election.MoveLeft(1,1);
Ворд.ActiveDocument.ActiveWindow.S_election.TypeText("Реквизит");
Ворд.ActiveDocument.ActiveWindow.S_election.MoveRight(1,1);
Реквизит=Метаданные.Регистр(СокрЛП(Имя)).Реквизит(Сч);
Синоним=Реквизит.Синоним;
Если ПустоеЗначение(Синоним)=0 Тогда
Если нрег(СтрЗаменить(Синоним," ",""))<>нрег(Реквизит.Идентификатор) Тогда
Синоним=" ("+Синоним+")";
Иначе
Синоним="";
КонецЕсли;
КонецЕсли;
Ворд.ActiveDocument.ActiveWindow.S_election.TypeText(СокрЛП(Реквизит.Идентификатор)+Синоним);
Ворд.ActiveDocument.ActiveWindow.S_election.MoveRight(1,1);
Тип=Реквизит.Тип;
Если Тип="Строка" Тогда
Тип=Тип+" ("+СокрЛП(Реквизит.Длина)+")";
ИначеЕсли Тип="Число" Тогда
Тип=Тип+" ("+СокрЛП(Реквизит.Длина);
Если ПустоеЗначение(Реквизит.Точность)=0 Тогда
Тип=Тип+"."+СокрЛП(Реквизит.Точность);
КонецЕсли;
Тип=Тип+")";
Иначе
Тип=Тип+"."+Реквизит.Вид;
КонецЕсли;
Ворд.ActiveDocument.ActiveWindow.S_election.TypeText(Тип);
Ворд.ActiveDocument.ActiveWindow.S_election.MoveRight(1,1);
Ворд.ActiveDocument.ActiveWindow.S_election.TypeText(Реквизит.Комментарий);
КонецЦикла;
Предупреждение("Готово",5);
КонецПроцедуры
Категория:
Работа с Microsoft Office и OpenOffice Сделать невидимыми столбцы, колонки Excel Код 1C v 8.х Лист.Columns("D:F").ColumnWidth = 0;
Категория:
Работа с Microsoft Office и OpenOffice Группировка строк Excel В ниже указанном коде нужно убрать символ
_
Код 1C v 8.х
//Группировка строк по уровню 2
Worksheet.Range("7:8").Rows.Group();
Worksheet.Range("10:11").Rows.Group();
Worksheet.Range("14:15").Rows.Group();
Worksheet.Range("17:18").Rows.Group();
//Группировка строк по уровню 1
Worksheet.Range("6:11").Rows.Group();
Worksheet.Range("13:18").Rows.Group();
//Свёртка группировок до первого уровня
Worksheet.Outline.ShowLevels(1);
//или
Excel.Range("A3:A6").S_elect();
Excel.S_election.Rows.Group();
// еще пример
BegCell = Лист.Cells(1,1);
EndCell = Лист.Cells(4,1);
Лист.Range(BegCell,EndCell).Rows.Group();
Код 1C v 7.x
//Простейший пример вывода из 1С:Предприятия 7.7 в MS Excel. Обеспечение наличия у рабочей книги единственного листа,
//установка размера, жирности и цвета шрифта, ширины колонок, рамок и заливки ячеек. Выравнивание текста
//ячеек, группировка строк, установка числового формата ячеек, закрепление области.
Процедура Вывод()
Попытка
Application=СоздатьОбъект("Excel.Application");
Исключение
Сообщить(ОписаниеОшибки(),"!!!");
Сообщить("Возможно, MS Excel не установлен на этом компьютере.");
Возврат;
КонецПопытки;
//Создание рабочей книги
WorkBook=Application.WorkBooks.Add();
//Получение окна
Window=WorkBook.Windows(1);
//Установка невидимости окна для убыстрения вывода
Window.Visible=0;
//Обеспечение наличия у рабочей книги единственного листа
Если WorkBook.Worksheets.Count=0 Тогда
WorkBook.Worksheets.Add();
Иначе
Application.DisplayAlerts=0;//не выдавать предупреждений
Пока WorkBook.Worksheets.Count>1 Цикл
WorkBook.Worksheets(1).Delete();
КонецЦикла;
Application.DisplayAlerts=-1;//восстановление флага выдачи предупреждений
КонецЕсли;
//Получение рабочего листа
Worksheet=WorkBook.Worksheets(1);
//Задание имени рабочего листа
Worksheet.Name="Пример вывода";
//Заголовок документа
Worksheet.Range("A1").Value="Пример вывода из 1С:Предприятия в MS Excel";
Worksheet.Range("A2").Value="сегодня "+ТекущаяДата();
Worksheet.Range("A1:A2").Font.Size=14;//размер шрифта
Worksheet.Range("A1:A2").Font.Bold=-1;//жирный шрифт
//Задание ширины колонок
Worksheet.Columns(1).ColumnWidth =60;
Worksheet.Columns(2).ColumnWidth =15;
Worksheet.Columns(3).ColumnWidth =15;
//Шапка документа
Worksheet.Range("A4").Value="Первая колонка";
Для ы=7 по 10 Цикл//рамки
Worksheet.Range("A4").Borders(ы).LineStyle=1;
Worksheet.Range("A4").Borders(ы).Weight=-4138;//xlMedium
КонецЦикла;
Worksheet.Range("A4").Interior.ColorIndex=15;//заливка серым
Worksheet.Range("A4").HorizontalAlignment=-4108;//выравнивание текста по центру
Worksheet.Range("B4").Value="Вторая";
Для ы=7 по 10 Цикл
Worksheet.Range("B4").Borders(ы).LineStyle=1;
Worksheet.Range("B4").Borders(ы).Weight=-4138;
КонецЦикла;
Worksheet.Range("B4").Interior.ColorIndex=15;
Worksheet.Range("B4").HorizontalAlignment=-4108;
Worksheet.Range("C4").Value="Третья";
Для ы=7 по 10 Цикл
Worksheet.Range("C4").Borders(ы).LineStyle=1;
Worksheet.Range("C4").Borders(ы).Weight=-4138;
КонецЦикла;
Worksheet.Range("C4").Interior.ColorIndex=15;
Worksheet.Range("C4").HorizontalAlignment=-4108;
//Для группировки строк:
Worksheet.Outline.SummaryRow=0;//"итоговые" строки отображать сверху (если снизу, то 1)
//Вывод строк
Worksheet.Range("A5").Value="Объект аналитики";
Worksheet.Range("A5").Font.ColorIndex=5;//цвет шрифта - синий
Worksheet.Range("B5").Value=123.45;
Worksheet.Range("B5").Font.ColorIndex=5;
Worksheet.Range("C5").Value=678.9;
Worksheet.Range("C5").Font.ColorIndex=5;
Worksheet.Range("A6").Value="Объект аналитики";
Worksheet.Range("A6").Font.ColorIndex=3;//цвет шрифта - красный
Worksheet.Range("B6").Value=123.45;
Worksheet.Range("B6").Font.ColorIndex=3;
Worksheet.Range("C6").Value=678.9;
Worksheet.Range("C6").Font.ColorIndex=3;
Worksheet.Range("A7").Value="Объект аналитики";
Worksheet.Range("B7").Value=123.45;
Worksheet.Range("C7").Value=678.9;
Worksheet.Range("A8").Value="Объект аналитики";
Worksheet.Range("B8").Value=123.45;
Worksheet.Range("C8").Value=678.9;
Worksheet.Range("A9").Value="Объект аналитики";
Worksheet.Range("A9").Font.ColorIndex=3;//цвет шрифта - красный
Worksheet.Range("B9").Value=123.45;
Worksheet.Range("B9").Font.ColorIndex=3;
Worksheet.Range("C9").Value=678.9;
Worksheet.Range("C9").Font.ColorIndex=3;
Worksheet.Range("A10").Value="Объект аналитики";
Worksheet.Range("B10").Value=123.45;
Worksheet.Range("C10").Value=678.9;
Worksheet.Range("A11").Value="Объект аналитики";
Worksheet.Range("B11").Value=123.45;
Worksheet.Range("C11").Value=678.9;
Worksheet.Range("A12").Value="Объект аналитики";
Worksheet.Range("A12").Font.ColorIndex=5;//цвет шрифта - синий
Worksheet.Range("B12").Value=123.45;
Worksheet.Range("B12").Font.ColorIndex=5;
Worksheet.Range("C12").Value=678.9;
Worksheet.Range("C12").Font.ColorIndex=5;
Worksheet.Range("A13").Value="Объект аналитики";
Worksheet.Range("A13").Font.ColorIndex=3;//цвет шрифта - красный
Worksheet.Range("B13").Value=123.45;
Worksheet.Range("B13").Font.ColorIndex=3;
Worksheet.Range("C13").Value=678.9;
Worksheet.Range("C13").Font.ColorIndex=3;
Worksheet.Range("A14").Value="Объект аналитики";
Worksheet.Range("B14").Value=123.45;
Worksheet.Range("C14").Value=678.9;
Worksheet.Range("A15").Value="Объект аналитики";
Worksheet.Range("B15").Value=123.45;
Worksheet.Range("C15").Value=678.9;
Worksheet.Range("A16").Value="Объект аналитики";
Worksheet.Range("A16").Font.ColorIndex=3;//цвет шрифта - красный
Worksheet.Range("B16").Value=123.45;
Worksheet.Range("B16").Font.ColorIndex=3;
Worksheet.Range("C16").Value=678.9;
Worksheet.Range("C16").Font.ColorIndex=3;
Worksheet.Range("A17").Value="Объект аналитики";
Worksheet.Range("B17").Value=123.45;
Worksheet.Range("C17").Value=678.9;
Worksheet.Range("A18").Value="Объект аналитики";
Worksheet.Range("B18").Value=123.45;
Worksheet.Range("C18").Value=678.9;
//Установка рамок
Для НомСтр=5 по 18 Цикл
Для ы=7 по 10 Цикл
Worksheet.Range("A"+НомСтр).Borders(ы).LineStyle=1;
Worksheet.Range("B"+НомСтр).Borders(ы).LineStyle=1;
Worksheet.Range("C"+НомСтр).Borders(ы).LineStyle=1;
КонецЦикла;
КонецЦикла;
//Группировка строк
Worksheet.Range("7:8").Rows.Group();
Worksheet.Range("10:11").Rows.Group();
Worksheet.Range("14:15").Rows.Group();
Worksheet.Range("17:18").Rows.Group();
Worksheet.Range("6:11").Rows.Group();
Worksheet.Range("13:18").Rows.Group();
//Свёртка группировок до первого уровня
Worksheet.Outline.ShowLevels(1);
//Установка числового формата
Попытка
Worksheet.Range("B5:C18").NumberFormat="# ##0.00";
Исключение
Попытка
Worksheet.Range("B5:C18").NumberFormat="# ##0,00";
Исключение
КонецПопытки;
КонецПопытки;
//Установка видимости приложения и его окна
Application.Visible=-1;
Window.Visible=-1;
//Закрепление области
Worksheet.Range("A5").S_elect();
Window.FreezePanes = -1;
КонецПроцедуры //Вывод
Категория:
Работа с Microsoft Office и OpenOffice Копирование данных из одного созданного экселя в другой и открытие excel (с сохранением форматов) Копирование данных из одного созданного экселя в другой и открытие excel (с сохранением шрифта, рамки положения текста) и с созданием закладки на которую как раз копируются данные:
Код 1C v 8.х // Данный код создает эксель, с одним листом и открывает в нем файл
// далее тут же создается второй лист с нужным нам наименованием
// и в созданный второй лист копируем данные из другого экселя, с сохранением всех атрибутов текста
Процедура КопируемЕксел()
ДокExcel = Новый COMОбъект("Excel.Application");
// этот кусок отвечает за создание чистого листа
//ДокExcel.Application.Workbooks.Application.Workbooks.Add(1);
//ДокExcel.Application.Workbooks.Application.ActiveSheet.Application.Workbooks.Open("d:\temp\file.xls");
// а здесь мы просто открываем любой указанный файл
ДокExcel.Application.Workbooks.Application.Workbooks.Open("d:\temp\file.xls");
ДокExcel.Application.Workbooks.Application.ActiveSheet.Name = "Отчет Общий";
// создаем второй лист с наименованием "Отчет Региональный"
ДокExcel.Application.Workbooks.Application.ActiveWorkbook.Worksheets.Add();
ДокExcel.ActiveWorkbook.Sheets.Application.ActiveSheet.Name = "Отчет Региональный";
xlLastCell = 11;
Попытка
Excel = Новый COMОбъект("Excel.Application");
Excel.WorkBooks.Open("d:\temp\Региональный.xls");
Состояние("Обработка файла Microsoft Excel...");
ExcelЛист = Excel.Sheets(1);
Исключение
Сообщить("Ошибка. Возможно неверно указан номер листа книги Excel.");
КонецПопытки;
ActiveCell = Excel.ActiveCell.SpecialCells(xlLastCell);
RowCount = ActiveCell.Row; // количество строк
ColumnCount = ActiveCell.Column; // колиество колонок
Для Column = 1 По ColumnCount Цикл
// Выставляем ширину колонок
ДокExcel.Columns(Column).ColumnWidth = ExcelЛист.Columns(Column).ColumnWidth ;
КонецЦикла;
Для Row = 1 По RowCount Цикл
Для Column = 1 По ColumnCount Цикл
// переносим значение ячейки
ДокExcel.Cells(Row,Column).Value = ExcelЛист.Cells(Row,Column).Value;
// Устанавливаем шрифт
ДокExcel.Cells(Row,Column).Font.Size = ExcelЛист.Cells(Row,Column).Font.Size;
ДокExcel.Cells(Row,Column).Font.Bold = ExcelЛист.Cells(Row,Column).Font.Bold;
// объединяем ячейки
ДокExcel.Range(ExcelЛист.Cells(Row,Column).MergeArea.Address).Select();
ДокExcel.Selection.Merge();
// обводим ячейки рамкой
ДокExcel.Range(ExcelЛист.Cells(Row,Column).MergeArea.Address).Borders.LineStyle = ExcelЛист.Cells(Row,Column).MergeArea.Borders.LineStyle; // рисуем рамку для одной ячейки или даипазона ячеек
ДокExcel.Range(ДокExcel.Cells(Row,Column), ДокExcel.Cells(Row,Column)).Borders.LineStyle = ExcelЛист.Cells(Row,Column).MergeArea.Borders.LineStyle; // рисуем рамку для одной ячейки или даипазона ячеек
ДокExcel.Range(ДокExcel.Cells(Row,Column), ДокExcel.Cells(Row,Column)).WrapText = Истина; // автоматический перенос больших строк
ДокExcel.Range(ДокExcel.Cells(Row,Column), ДокExcel.Cells(Row,Column)).VerticalAlignment = -4108; // Выравнивание по вертикали по центру //ExcelЛист.Cells(Row,Column).VerticalAlignment;
ДокExcel.Range(ДокExcel.Cells(Row,Column), ДокExcel.Cells(Row,Column)).HorizontalAlignment = - 4108; // Выравнивание по горизонтали по центру
КонецЦикла;
КонецЦикла;
Excel.WorkBooks.Close();
Excel = 0;
ДокExcel.Visible=1; //Делаем Ексель видимым
// Дополнительные параметры
//Exel.WorkBooks(1).WorkSheets(1).Cells(1,1).Interior.ColorIndex=1; //1= белый фон
//Exel.WorkBooks(1).WorkSheets(1).Cells(1,1).Font.ColorIndex=2; //2= черный цвет шрифта
//Exel.WorkBooks(1).WorkSheets(1).Cells(1,1).Font.Name= "Courier"; // указывает какой шрифт
//Exel.WorkBooks(1).WorkSheets(1).Cells(1,1).Font.Size=12; //размер шрифта
//Exel.WorkBooks(1).WorkSheets(1).Cells(1,1).Font.Bold=1; либо (0); //т.е. истина либо лож - ?(обычный, жирный)
//Exel.WorkBooks(1).WorkSheets(1).Cells(1,1).InsertIndent(2); //устанавливаем отступ (в данном случае на 2 символа)
//Exel.WorkBooks(1).WorkSheets(1).Cells(1,1).ColumnWidth = 10; // ширина колонки
//Exel.WorkBooks(1).WorkSheets(1).Cells(1,1).Borders(5).LineStyle = -4142; //очищаем все границы
//Exel.WorkBooks(1).WorkSheets(1).Cells(1,1).Borders(7).LineStyle=1; //добавили левую границу (7 - левая, 8 - верхняя, 9 - нижняя, 10 - правая )
//Exel.WorkBooks(1).WorkSheets(1).Cells(1,1).VerticalAlignment = -4160; //выравнивание по левому краю
//Exel.WorkBooks(1).WorkSheets(1).Cells(1,1).WrapText=1 (истина) //устанавливаем перенос слов
//Всего 56 цветов:
//1- белый
//2-черный
//3-красный
//5-синий
//6-желтый
//7-лиловый
//10-зеленый
//33-голубой
//39-сиреневый
//46-оранжевый
//адрес ячейки:
//.Address
//Прямоугольная область ячеек:
//Exel.WorkBooks(1).WorkSheets(2).Range("a1:b2");
//Exel.WorkBooks(1).WorkSheets(2).Range("a1:b2").Copy();
//Exel.WorkBooks(1).WorkSheets(2).Range("a11:b12").Select();
//Exel.WorkBooks(1).WorkSheets(2).Paste();
//Про Диаграммы:
//Два варианта: 1-й если Диаграмма будет распологаться непосредственно на листе с данными, 2-й на отдельном листе.
//Если Диаграмма распологается на листе с данными:
//в скобках параметры определения левого верхнего угла и размеры.
//Chart = Excel.WorkBooks(1).WorkSheets(2).ChartObjects.Add(,,,);
//Если все же на отдельном листе, то добавим Sheets наш элемент: *(СОДЕРЖИТ ЛИСТЫ ВСЕХ ТИПОВ)*
//Excel.WorkBooks(1).Sheets.Add(,,1,-4109);
//где:Add(ПЕРВЫЙ,ВТОРОЙ,1,-4109);
//ПЕРВЫЙ- номер листа, перед которым будет НАШ лист;
//ВТОРОЙ-номер листа, после которого будет НАШ лист;
//1- количество создоваемых листов;
//-4109 - рабочий лист ( -4109 = с диаграммой, -4167 = лист с данными)
КонецПроцедуры
Категория:
Работа с Microsoft Office и OpenOffice