COM соединение в 1С 8.3 (часть 2)

Jan 11, 2024 15:53

COM соединение в 1С 8.3 (часть 1)

Как организовать считывание данных из файлов *.xls?

Док = ПолучитьCOMОбъект(Путь + "ценыконкурентов.xls");
КоличествоСтраниц = 2;

Для ТекНомер = 1 По КоличествоСтраниц Цикл
Контрагент = Док.Sheets(ТекНомер).Cells(1,1).Value;
Товар = Док.Sheets(ТекНомер).Cells(2,2).Value;
Цена = Док.Sheets(ТекНомер).Cells(2,3).Value;

счСтроки = 3;
Сообщить(Строка(Товар) + "-" + Строка(Цена));

// можно использовать другой признак окончания данных на листе
Пока СокрЛП(Товар) <> "" Цикл
Товар = Док.Sheets(ТекНомер).Cells(СчСтроки,2).Value;
Цена = Док.Sheets(ТекНомер).Cells(СчСтроки,3).Value;
Сообщить(Строка(Товар) + "-" + Строка(Цена));
счСтроки = счСтроки + 1;
КонецЦикла;
КонецЦикла;

Док.Application.Quit();


Как запустить макрос, записанный в книге Microsoft Excel?

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

Попытка
// В реальном примере путь может быть совершенно другим.
Excel.Workbooks.Open("c:\doc.xls");

// Запустить макрос с именем "Оформление".
Excel.Run("Оформление");
Excel.Visible = Истина;
Исключение
// Если произойдет ошибка выводятся данные об ошибке и объект закрывается.
Сообщить(ОписаниеОшибки());
Excel.Quit();
КонецПопытки;

Как создать документ программы Microsoft Excel по оформлению, приведенному в другом документе?

Попытка
// Создать объект.
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 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();
КонецПопытки;

Как выполнить запрос к произвольной базе данных SQL?

стрПодключения = "Driver={SQL Server};"
стрПодключения = стрПодключения + ИмяСервера + ";";
стрПодключения = стрПодключения +"Uid=" + ИмяПользователя + ";";
стрПодключения = стрПодключения + "Pwd=" + Пароль + ";";
стрПодключения = стрПодключения + "DataBase =" + ИмяБазы + ";";
стрПодключения = стрПодключения + "Pwd=" + Пароль + ";";

Connection = Новый COMОбъект("ADODB.Connection");
Connection.OpenServer = стрПодключения;

RS = Новый COMОбъект("ADODB.Recordset");

// Запрос к базе на языке SQL запросов.
RS.Open("Select * from TradeUnit", Connection);

Пока RS.EOF() = 0 Цикл

// Можно обращаться и обрабатывать значения полей выборки.
ИД = RS.Fields("ID").Value;
Код = RS.Fields("Code").Value;

// Обработка других полей

RS.MoveNext();
КонецЦикла;

RS.Close();
Connection.Close();

Смотрите также:
Электронный учебник по программированию в 1С
Рекомендации по изучению программирования 1С с нуля
Игра "Кто хочет стать миллионером?" с вопросами на определенную тематику (язык программирования JavaScript, английские, немецкие, французские, испанские, португальские, ни­дер­ландские, итальянские слова, электробезопасность, промышленная безопасность, бокс и т.п.), написанная на 1С
Программирование в 1С 8.3 с нуля - краткий самоучитель
Комплексная подготовка программистов 1С:Предприятие 8.2
Сайты с уроками программирования и со справочниками
Youtube-каналы с уроками программирования
Сайты для обучения программированию
Лекции и уроки

программирование

Previous post Next post
Up