Центральный Дом Знаний - Работа в 1С 42

Информационный центр "Центральный Дом Знаний"

Заказать учебную работу! Жми!



ЖМИ: ТУТ ТЫСЯЧИ КУРСОВЫХ РАБОТ ДЛЯ ТЕБЯ

      cendomzn@yandex.ru  

Наш опрос

Я учусь (закончил(-а) в
Всего ответов: 2653

Онлайн всего: 1
Гостей: 1
Пользователей: 0


Форма входа

Логин:
Пароль:

Работа в 1С 42

Работа в программе 1С

стр.: 1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29  30  31  32
33  34  35  36  37  38  39  40  41  42  43  44  45  

Тема 15 Связь с внешними приложениями посредством механизмов DDE и OLE

Цель:

  1. познакомится с возможностями связи с внешними приложениями через механизмы OLE и DDE;

  2. приобрести и закрепить навыки выгрузки данных в Microsoft Excel посредством механизма OLE Automation;

  3. приобрести и закрепить навыки выгрузки данных в Microsoft Excel посредством механизма DDE.

Пояснения к работе

При формировании пользовательского интерфейса прикладной задачи довольно часто существуют ситуации, когда для удобства работы пользователя необходимо дать возможность обрабатывать имеющиеся данные с помощью других, имеющихся на компьютере программ.

Одним из примеров использования такой возможности может служить запуск программы Microsoft Excel (непосредственно из программы 1С:Предприятие) с одновременным выводом в нее результатов расчета. Далее пользователь может обрабатывать полученные результаты (просматривать, редактировать, печатать и т. п.) непосредственно в среде Microsoft Excel.

Одну из возможностей запуска и управления внешними приложениями дает механизм OLE Automation. Встроенный язык системы 1С:Предприятие поддерживает технологию управления объектами OLE. Непосредственно при помощи операторов языка можно управлять, например, программами, входящими в Microsoft Office.

Внешнее приложение, с которым предполагается устанавливать связь, должно отвечать следующим условиям: внешнее приложение должно поддерживать механизм OLE Automation и должно быть установлено на том компьютере, где его намечено использовать.

Во всех программных модулях вызов процедур или функций внешнего приложения может выполняться только при помощи переменной со ссылкой на объект, который создается функцией СоздатьОбъект(). Чтобы вызвать метод внешнего приложения, имя метода (с указанием необходимых параметров) пишется через точку после идентификатора переменной.

При создании переменной со ссылкой на внешнее приложение, в качестве имени объекта в операторе СоздатьОбъект() должен выступать зарегистрированный OLE идентификатор внешнего приложения.

Зарегистрированный OLE идентификатор внешнего приложения – это уникальный идентификатор программного продукта, который записывается в регистрационную базу Windows при инсталляции программы.

Примеры OLE идентификаторов:

Excel – "Excel.Application"

LotusApproach – "Approach.Application"

MSGraph – "MSGraph.Application"

PowerPoint – "PowerPoint.Application"

Кроме того, другие приложения могут использовать 1С:Предприятие в качестве OLE Automation сервера и получать данные из 1С:Предприятие. В этом случае выполняется следующая последовательность действий:

  • создается объект с OLE идентификатором:

    • V1СEnterprise.Application – версия независимый ключ;

    • V77.Application – версия зависимый ключ;

    • V77S.Application – версия зависимый ключ, SQL версия;

    • V77L.Application – версия зависимый ключ, локальная версия;

    • V77M.Application – версия зависимый ключ, сетевая версия.

  • выполняется инициализация системы 1С:Предприятие методом Initialize.

  • вызываются атрибуты и методы системы 1С:Предприятие как OLE Automation сервера

Поскольку программа 1С:Предприятие является одновременно OLE Automation сервером и OLE Automation клиентом, то возможно из 1С:Предприятие обращаться к другой копии 1С:Предприятие (например, к другой конфигурации) для обмена данными. В основном все современные программные продукты поддерживают механизм OLE Automation, это касается в частности MS Office, MS FoxPro и приложений на них написанных, DAO и т. п., поэтому программа 1С:Предприятие может полностью интегрироваться с ними.

Другим способом обращения к данным 1С:Предприятие а из внешних программ является режим DDE. Основное преимущество данного режима является динамическое обновление получаемых из 1С:Предприятие данных.

Система 1С:Предприятие является DDE сервером и предоставляет свой сервис в получении данных и уведомлении DDE клиента об их изменении.

Не рекомендуется обращаться посредством DDE к функциям 1С:Предприятие, которые могут выполняться продолжительное время. Это связано с тем, что обращение к данной функции будет выполняться достаточно часто при обновлениях DDE связей.

15.1 Методы для работы с Microsoft Excel

Методы для работы через механизм OLE Automation

Методы внешних приложений, а также синтаксис их использования у каждого приложения свои. Описание процедур и функций внешнего приложений можно получить только в документации данного приложения. Например, практически все программы, входящие в пакет Microsoft Office используют для своего управления версию языка Visual Basic.

Чтобы вызвать метод внешнего приложения в языке системы 1С:Предприятие, имя метода (с указанием необходимых параметров) пишется через точку после имени ссылки на объект внешнего приложения.

Рассмотрим методы для работы с внешними приложениями на примере Microsoft Excel.

// Создать объект Excel (запускаем программу Excel)

ОкноЕхсеl = СоздатьОбъект("Excel.Application");

// сделать окно программы Excel видимым и активным

ОкноЕхсеl.Visible = 1;

// установить имя окна Excel

ОкноЕхсеl.Caption = "Отчет";

// создать новую рабочую книгу

НовыеРабочиеКниги = ОкноЕхсеl.Workbooks;

РабочаяКнига = НовыеРабочиеКниги.Add();

// определить ячейку (номер строки, номер столбца)

Ячейка = ОкноЕхсеl.Cells(2, 1);

// задать значение ячейки

Ячейка.Value = "Строка ";

// формат ячейки

// размер шрифта

Ячейка.Font.Size=20;

// шрифт

Ячейка.Font.Name="Courier New";

// ширина столбца

Ячейка.ColumnWidth = 100;

// вертикальное выравнивание в ячейке: 2 – по левому краю, 3 – по центру,

// 4 – по правому краю

Ячейка.VerticalAlignment = 3;

// горизонтальное выравнивание

Ячейка.HorizontalAlignment = 3;

// установка RGB цвета

Ячейка.Font.Color=456;

// установка стиля «выделенный»

Ячейка.Font.Bold = 1;

// ориентация текста внутри ячейки в градусах

Ячейка.Orientation = 90;

// высота строки

Ячейка.RowHeight=50;

// пернос по словам внутри ячейки

Ячейка.WrapText=1;

// формат числовой ячейки

Ячейка.NumberFormat = "0,00";

// выделить область в таблице (указывается левая верхняя ячейка области и правая нижняя)

// и присвоим ее переменной языка

Область = ОкноЕхсеl.Range(ОкноЕхсеl.Cells(1, 1), ОкноЕхсеl.Cells(2, 5));

//объединение ячеек области

Область.Merge();

// задать имя выделенной области

Область.Name = "ОбластьДанных";

// определить рамку выделенной области и присвоим ее переменной языка

Рамка = Область.Borders;

// установить стили для рамки выделенной области

Рамка.LineStyle = 1;

Рамка.Colorlndex = 567;

// формат ячеек обрасти задается так же, как формат ячейки

// высота строки

Область.RowHeight=50;

Методы для работы Microsoft Excel в режим DDE для связи с 1С: Предприятие

В качестве DDE сервера 1С:Предприятие может возвращать значение некоторого выражения, записанного на встроенном языке 1С:Предприятие. Возвращаемое значение является строкой. Для того, чтобы рассматривать результат выражения в качестве числа или даты, например в ячейке MS Excel, может потребоваться задание формата значения.

Для доступа к 1С:Предприятие посредством DDE следует использовать DDE–объект с именем 1CV7|DDE.

Пример:

Ниже приведены примеры размещения в ячейках MS Excel DDE связей с программой 1С:Предприятие. Первое выражение в примере обращается к стандартной функции встроенного языка 1С:Предприятие. Второе выражение в примере обращается к функции, записанной в глобальном модуле конфигурации программы 1С:Предприятие.

='1CV7'|DDE!'РабочаяДата()'

Для правильной интерпретации значения выражения в качестве числа или даты в MS Excel, нужно в операционной системе установить соответствующий формат представления даты и числа, как он принят в 1С:Предприятие.

15.2 Выгрузка данных в Microsoft Excel

Создадим процедуру, которая выгружаем данные отчета ОСотрудниках непосредственно в Microsoft Excel. Разместите на форме отчета ОСотрудниках кнопку Excel (рисунок 15.2.1), указав в качестве ее свойства ФормулаВыгрузитьВExcel().

Рисунок 15.2.1

В программном модуле создадим процедуру:

Процедура ВыгрузитьВExcel()

// вызов процедуры формирования запроса

Запросить();

// Создать объект Excel (запускаем программу Excel)

ОкноЕхсеl = СоздатьОбъект("Excel.Application");

// сделать окно программы Excel видимым и активным

ОкноЕхсеl.Visible = 1;

// установить имя окна Excel

ОкноЕхсеl.Caption = Заголовок;

// создать новую рабочую книгу

НовыеРабочиеКниги = ОкноЕхсеl.Workbooks;

РабочаяКнига = НовыеРабочиеКниги.Add();

// определяем заголовок и его формат

Ячейка = ОкноЕхсеl.Cells(2, 2);

Ячейка.Value = Заголовок;

Ячейка.Font.Size=12;

Ячейка.Font.Bold = 1;

Ячейка.HorizontalAlignment = 3;

// задаем ширину столбцов таблицы

Ячейка.ColumnWidth = 6;

Ячейка = ОкноЕхсеl.Cells(2, 3);

Ячейка.ColumnWidth = 24;

Ячейка = ОкноЕхсеl.Cells(2, 4);

Ячейка.ColumnWidth = 15;

Ячейка = ОкноЕхсеl.Cells(2, 5);

Ячейка.ColumnWidth = 16;

// задаем область под заголовок

Область = ОкноЕхсеl.Range(ОкноЕхсеl.Cells(2, 2), ОкноЕхсеl.Cells(2, 5));

//объединение

Область.Merge();

// перенос текста по словам

Область.WrapText=1;

// высота строки

Область.RowHeight=30;

// форма заголовка таблицы

Ячейка = ОкноЕхсеl.Cells(4, 2);

Ячейка.Value = "№ п/п";

Ячейка = ОкноЕхсеl.Cells(4, 3);

Ячейка.Value = "ФИО сотрудника";

Ячейка = ОкноЕхсеl.Cells(4, 4);

Ячейка.Value = "Дата приема";

Ячейка = ОкноЕхсеl.Cells(4, 5);

Ячейка.Value = "Дата увольнения";

Область = ОкноЕхсеl.Range(ОкноЕхсеl.Cells(4, 2), ОкноЕхсеl.Cells(4, 5));

Область.Font.Bold=1;

Область.HorizontalAlignment = 3;

// рамка

Рамка = Область.Borders;

// установить стили для рамки выделенной области

Рамка.LineStyle = 1;

// для подсчета заполненных строк

Строки=4;

// определяем номер синего цвета через RGB

Цвет=Форма.ВыбДата.Цвет(0,0,255);

Цвет=Форма.ВыбДата.Цвет(0,0,255);

Если Признак=0 Тогда

Пока Запрос.Группировка("Долж")=1 Цикл

Строки=Строки+1;

Ячейка = ОкноЕхсеl.Cells(Строки, 2);

Ячейка.Value=Строка(Запрос.Долж);

Область = ОкноЕхсеl.Range(ОкноЕхсеl.Cells(Строки, 2),

ОкноЕхсеl.Cells(Строки, 3));

Область.Merge();

Область.HorizontalAlignment = 3;

Область.Font.Color=Цвет;

Область.Font.Bold=1;

Ячейка = ОкноЕхсеl.Cells(Строки, 4);

Ячейка.Value=Строка(Запрос.Кол_во)+" человек";

Область=ОкноЕхсеl.Range(ОкноЕхсеl.Cells(Строки,4),

ОкноЕхсеl.Cells(Строки,5));

Область.Merge();

Область.HorizontalAlignment = 3;

Область.Font.Color=Цвет;

Область.Font.Bold=1;

Нум=0; // для нумерации сотрудников

Пока Запрос.Группировка("ФИО")=1 Цикл

Если Запрос.ФИО.ЭтоГруппа()=1 Тогда

Строки=Строки+1;

Ячейка = ОкноЕхсеl.Cells(Строки, 2);

Ячейка.Value=Строка(Запрос.ФИО);

Область = ОкноЕхсеl.Range(ОкноЕхсеl.Cells(Строки, 2),

ОкноЕхсеl.Cells(Строки, 3));

Область.Merge();

Область.Font.Italic=1;

Ячейка = ОкноЕхсеl.Cells(Строки, 4);

Ячейка.Value=Строка(Запрос.Кол_во)+" человек";

Область = ОкноЕхсеl.Range(ОкноЕхсеl.Cells(Строки, 4),

ОкноЕхсеl.Cells(Строки, 5));

Область.Merge();

Область.HorizontalAlignment = 3;

Область.Font.Italic=1;

Иначе

Нум=Нум+1;

Строки=Строки+1;

Ячейка = ОкноЕхсеl.Cells(Строки, 2);

Ячейка.Value=Строка(Нум);

Ячейка = ОкноЕхсеl.Cells(Строки, 3);

Ячейка.Value=Строка(Запрос.ФИО);

Ячейка = ОкноЕхсеl.Cells(Строки, 4);

Ячейка.Value=Строка(Запрос.ФИО.ДатаПриема);

Ячейка = ОкноЕхсеl.Cells(Строки, 5);

Ячейка.Value=Строка(Запрос.ФИО.ДатаУвольнения);

КонецЕсли;

КонецЦикла;

КонецЦикла;

Иначе

// если меньше двух группировок

Нум=0;

Пока Запрос.Группировка("ФИО")=1 Цикл

Если Запрос.ФИО.ЭтоГруппа()=1 Тогда

Строки=Строки+1;

Ячейка = ОкноЕхсеl.Cells(Строки, 2);

Ячейка.Value=Строка(Запрос.ФИО);

Область = ОкноЕхсеl.Range(ОкноЕхсеl.Cells(Строки, 2),

ОкноЕхсеl.Cells(Строки, 3));

Область.Merge();

Область.Font.Italic=1;

Ячейка = ОкноЕхсеl.Cells(Строки, 4);

Ячейка.Value=Строка(Запрос.Кол_во)+" человек";

Область = ОкноЕхсеl.Range(ОкноЕхсеl.Cells(Строки, 4),

ОкноЕхсеl.Cells(Строки, 5));

Область.Merge();

Область.HorizontalAlignment = 3;

Иначе

Нум=Нум+1;

Строки=Строки+1;

Ячейка = ОкноЕхсеl.Cells(Строки, 2);

Ячейка.Value=Строка(Нум);

Ячейка = ОкноЕхсеl.Cells(Строки, 3);

Ячейка.Value=Строка(Запрос.ФИО);

Ячейка = ОкноЕхсеl.Cells(Строки, 4);

Ячейка.Value=Строка(Запрос.ФИО.ДатаПриема);

Ячейка = ОкноЕхсеl.Cells(Строки, 5);

Ячейка.Value=Строка(Запрос.ФИО.ДатаУвольнения);

КонецЕсли;

КонецЦикла;

КонецЕсли;

// обрамляем всю таблицу

Область = ОкноЕхсеl.Range(ОкноЕхсеl.Cells(4, 2), ОкноЕхсеl.Cells(Строки, 5));

Рамка = Область.Borders;

Рамка.LineStyle = 1;

Ячейка = ОкноЕхсеl.Cells(Строки+1, 3);

Ячейка.Value="Итого";

Ячейка.Font.Italic=1;

Ячейка.Font.Color=Цвет;

Ячейка.Font.Bold=1;

Ячейка.HorizontalAlignment = 4;

Область = ОкноЕхсеl.Range(ОкноЕхсеl.Cells(Строки+1, 4),

ОкноЕхсеl.Cells(Строки+1, 5));

Область.Merge();

Область.HorizontalAlignment = 3;

Ячейка = ОкноЕхсеl.Cells(Строки+1, 4);

Ячейка.Value=Строка(Запрос.Кол_во)+" человек";

Ячейка.Font.Italic=1;

Ячейка.Font.Color=Цвет;

Область.Font.Bold=1;

КонецПроцедуры

Сохраните конфигурацию и запустите 1С в режиме Предприятие. Выберите из меню отчет О сотрудниках, отметьте группировки и нажмите кнопку Excel. Приблизительный результат приведен на рисунке 15.2.2.

Рисунок 15.2.2

Теперь попробуем получить данные из 1С: Предприятия в Microsoft Excel посредством механизма DDE. Запустите 1С в режиме Предприятие (если 1С: Предприятие не запущено данные передать не удастся). Затем запустите Microsoft Excel, выберите любую ячейку и запишите в ячейку следующую формулу:

='1CV7'|DDE!'Константа.ЮридическийАдрес'

И нажмите Enter.

При правильной последовательности действий в выбранной ячейке появится юридический адрес, хранящийся в константе.

Задания:

В конфигурациях, созданных на прошлых занятиях, выполните выгрузку данных в Microsoft Excel через механизм OLE Automation в отчете по главному справочнику.

Контрольные вопросы:

  1. Для чего используется механизмы OLE и DDE?

  2. В чем преимущества использования данных механизмов?

  3. Каким условиям должно отвечать приложение, с которым возможно установить связь через OLE Automation?

  4. Что такое OLE идентификатор внешнего приложения?

  5. Как использовать 1С:Предприятие в качестве OLE Automation сервера?

  6. Как получить доступ к 1С:Предприятие посредством DDE?

Loading

Календарь

«  Май 2019  »
ПнВтСрЧтПтСбВс
  12345
6789101112
13141516171819
20212223242526
2728293031

Архив записей

Друзья сайта

  • Заказать курсовую работу!
  • Выполнение любых чертежей
  • Новый фриланс 24