Адрес этой странички: http://d1cv8.narod.ru/top_005/d1cv8_20090926_001/d1cv8_20090926_004.htm
Дата: 28.09.2009
Интернет-приложение
к книге
"Delphi и 1С:Предприятие.Программирование информационного обмена"
           Часть

Глава 5. Расширение функционала 1С.
ActiveFormX в среде 1Cv8.
(продолжение)

Чтение информации из открытого (в контексте ActiveFormX) набора данных.

Тема этой статьи НЕ отражена в контексте содержания книги ...


Информацию о назначении технологии
ActiveX в контексте системы 1Cv8 можно посмотреть на сайте фирмы 1С : http://v8.1c.ru/overview/IntegrationActiveX.htm
 

 

1 Создание ActiveFormX и "внедрение" ее в форму внешней обработки 1Cv8
2 Продолжение. Свойства и методы ActiveFormX (доступ из 1Cv8)
3 Продолжение. События ActiveFormX. Обработчики событий (от ActiveX-формы) в контексте 1Cv8
4 Продолжение. Считывание (в контексте 1Cv8) информации из открытого (в контексте нашей ActiveX-формы) набора данных.

 


Для данного примера требуется, чтобы на компьютере был установлен пакет BDE-5.


 

Еще расширим функционал нашей ActiveX-формы.

Цель - иллюстрация процесса считывания (в контексте
1Cv8) информации из открытого (в контексте нашей ActiveX-формы) набора данных.

 

За основу возьмем часто использующийся в среде Delphi демонстрационный пример (FishFact).
Исходные тексты этого примера находятся в папке :

...\Delphi7\Demos\Db\FishFact\

Внешний вид формы примера (FishFact) :

 

 

Доработаем нашу ActiveX-форму следующим образом :


Свойства
Delphi-компонента Table_1 :
    DatabaseName := 'DBDEMOS';
    TableName    := 'biolife.db';


Реализация обработчиков событий Table_1   :

 

Набор данных (в контексте Table_1) будет автоматически открываться в том случае, если  TN1.PageIndex=1 и закрываться в противном случае :

procedure TMy_ActiveFormX_01.TN1Change(Sender: TObject; NewTab: Integer; var AllowChange: Boolean);
begin
    ...
    ...
    if NewTab=1 then begin
        Table_1.Active:=true;
    end
    else begin
        Table_1.Active:=false;
    end;
end;

 

 

Добавим к нашей ActiveX-форме следующие свойства и методы (пункт меню "View" -> "Type  Library") :

Свойство/Метод Вид/Атрибут Назначение Реализация
DatabaseName Свойство (только чтение) Alias (BDE) Базы Данных
TableName Свойство (только чтение) Имя таблицы Базы Данных
FieldCount Свойство (только чтение) Количество полей открытого набора данных
FieldByName_Get Метод  (чтение) Получить значение поля (по имени поля)
FieldByNumber_Get Метод  (чтение) Получить значение поля (по номеру поля)
FieldName_Get Метод  (чтение) Получить ИМЯ  поля (по номеру поля)
FieldType_Get Метод  (чтение) Получить ТИП поля (по имени поля)

Исходный текст функции MyFieldType_Get (определить тип поля) :

 

 

Далее, скомпилировать проект (результирующий файл : My_ActiveFormX_01_afx.ocx).

Закрыть конфигуратор (и программу) 1Cv8.

Заменить ocx-файл с предыдущей версией нашей ActiveX-формы (в каталоге OCX) - на новый.

Зарегистрировать (если это еще не производилось с предыдущей версией ocx-файла) : RegSvr32 My_ActiveFormX_01_afx.ocx


 

Теперь, нужно открыть конфигуратор 1Cv8 :

 

Откроем обработку Тест_My_ActiveFormX_01_afx_ocx_04.epf и доработаем ее форму следующим образом  :

Исходные тексты (в контексте формы обработки) :

Здесь комментарии излишни ...

 

Теперь нужно сохранить изменения в новый файл:  Тест_My_ActiveFormX_01_afx_ocx_05.epf

 

Запустить программу 1С:Предприятие, открыть файл внешней обработки Тест_My_ActiveFormX_01_afx_ocx_05.epf и перейти на вкладку "Данные" нашей ActiveX-формы :

 

Чтобы убедиться в том, что функционал нашей ActiveX-формы работает корректно - "сделаем текущей" какую-нибудь другую  строку открытого набора данных :

и убедимся, что в элементах управления на форме "внешней обработки" 1Cv8 информация меняется синхронно с перемещением по открытому набору данных в контексте нашей ActiveX-формы ...

 

 

Исходники этого примера можно скачать здесь : Delphi-проект (575 кб) , "Внешняя обработка" (1Cv8) (5.6 кб).


 

 

Еще доработаем нашу ActiveX-форму (попробуем реализовать возможность синхронного отображения "картинки" из открытого набора данных в ActiveX-форме - в соотв. элемент управления на форме 1Cv8).
 

Добавим метод Picture_SaveToFile .

Его назначение : сохранить "картинку" из Delphi-компонента  DBImage1 в заданный файл на диске :

 

Затем, доработаем форму "внешней обработки" (1Cv8) Тест_My_ActiveFormX_01_afx_ocx_05.epf  следующим образом :



Изменим исходный код функции Прочитать_Данные_Из_Таблицы :

 

Сохраним внешнюю обработку под именем Тест_My_ActiveFormX_01_afx_ocx_06.epf и откроем ее из программы 1С:Предприятие (режим RunTime) :

 


Результат тестирования :
 

 

Приведенный здесь пример "считывания" (в контексте формы 1Cv8) "картинки" из открытого  (в контексте ActiveX-формы) набора данных - является всего лишь "мелкотравчатым" вариантом решения задачи и не претендует на бОльшее ...

 

 

Исходники этого примера можно скачать здесь : Delphi-проект (575 кб) , "Внешняя обработка" (1Cv8) (6.1 кб).

 

 

1 Создание ActiveFormX и "внедрение" ее в форму внешней обработки 1Cv8
2 Продолжение. Свойства и методы ActiveFormX (доступ из 1Cv8)
3 Продолжение. События ActiveFormX. Обработчики событий (от ActiveX-формы) в контексте 1Cv8
4 Продолжение. Считывание (в контексте 1Cv8) информации из открытого (в контексте нашей ActiveX-формы) набора данных.

 

 

 


(c) Сергей Попов, респ.Коми, г.Усинск, 2007  Письмецо написать ...


Hosted by uCoz