Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Подстановочные классы для перехода с Rainbow на ++ (число прочтений - 4219 )
Quan
1c++ donor
1c++ power user
Отсутствует


I'm old, bald and ugly.

Сообщений: 273
Местоположение: Новосибирск -- Москва
Зарегистрирован: 20. Мая 2006
Пол: Мужской
Подстановочные классы для перехода с Rainbow на ++
27. Мая 2006 :: 08:09
Печать  
Перенесено из общей ветки
Подстановочные классы для быстрого перехода из под rainbow.dll на 1С++.
Позволяют быстро, путем незначительных переделок, отказаться от загрузки конфликтующей с 1СРР радуги, а потом уже начинать не спеша и со вкусом дописывать/переписывать и т.д.

1СРР во многом совместим с радугой; для учета несовместимостей я быстренько слепил пару подстановочных классов


Обработка.Defcls
Код
Выбрать все
класс ПризракРадуги=ПризракРадуги@MD : ODBCRecordSet
{
    Неопределенный GetNumeric(НомРекв);
    Неопределенный GetString(НомРекв);
    число IsOK();
    void GotoNext();
    число Open();
    число Prepare(Строка TextSQL,число П1,число П2);
    void Reset();
};
класс ПризракМетадаты=ПризракМетадаты@MD : MetaDataWork
{
    Неопределенный ValueFromDBString(Число Тип, Неопределенный Вид, Строка Объект);
};
 



Обработка.ПризракРадуги
Код
Выбрать все
//класс ПризракРадуги=ПризракРадуги@MD : ODBCRecordSet
//{
//    Неопределенный GetNumeric(НомРекв);
//    Неопределенный GetString(НомРекв);
//    число IsOK();
//    void GotoNext();
//    число Open();
//    число Prepare(Строка TextSQL,число П1,число П2);
//    void Reset();
//};

Перем СРР;
Перем лTextSQL;
Перем лТаблица;
Перем лСтрокВТаблице;
Перем лТекСтрока;


Функция Сам(Конт) Возврат Конт; КонецФункции

Процедура Конструктор()
    СРР=Сам(Контекст).ПолучитьБазовыйКласс("ODBCRecordSet");
    лТаблица=СоздатьОбъект("ТаблицаЗначений");
КонецПроцедуры

Процедура Деструктор()
    СРР=0;
КонецПроцедуры

Процедура Reset() Экспорт
КонецПроцедуры

Функция Prepare(TextSQL,П1,П2) Экспорт
    Возврат СРР.Prepare(TextSQL);
КонецФункции

Функция Open() Экспорт
    СРР.Open();
    СРР.GetResultsInVT(лТаблица, 1) ;
    лСтрокВТаблице=лТаблица.КоличествоСтрок();
    лТекСтрока=0;
    Возврат 1;
КонецФункции

Процедура GotoNext() Экспорт
    лТекСтрока=лТекСтрока+1;
КонецПроцедуры

Функция IsOK() Экспорт
    Если лТекСтрока>лСтрокВТаблице Тогда
        Возврат 0;
    КонецЕсли;
    Возврат 1;
КонецФункции

Функция GetString(НомРекв) Экспорт
    Возврат лТаблица.ПолучитьЗначение(лТекСтрока,НомРекв+1);
КонецФункции

Функция GetNumeric(НомРекв) Экспорт
    Возврат лТаблица.ПолучитьЗначение(лТекСтрока,НомРекв+1);
КонецФункции

Процедура ПриОткрытии()
    Форма.Параметр._ПриОткрытии();
КонецПроцедуры
 



Обработка.ПризракМетадаты
Код
Выбрать все
//класс ПризракМетадаты=ПризракМетадаты@MD : MetaDataWork
//{
//    Неопределенный ValueFromDBString(Число Тип, Неопределенный Вид, Строка Объект);
//};

Перем СРР;


Функция Сам(Конт) Возврат Конт; КонецФункции

Процедура Конструктор()
    СРР=Сам(Контекст).ПолучитьБазовыйКласс("MetaDataWork");
КонецПроцедуры

Процедура Деструктор()
    СРР=0;
КонецПроцедуры

Функция ValueFromDBString(Тип, Вид, Объект) Экспорт
    Возврат СРР.ValueFromDBString(Тип, Число(Вид), Объект);
КонецФункции


Процедура ПриОткрытии()
    Форма.Параметр._ПриОткрытии();
КонецПроцедуры
 



Далее комментим подключение rainbow.dll; вместо нее подключаем 1CPP.dll
и заменяем

СоздатьОбъект("RainbowService")
на
СоздатьОбъект("ПризракМетадаты")

и

СоздатьОбъект("ODBCQuery")
на
СоздатьОбъект("ПризракРадуги")

а СоздатьОбъект("MetaDataWork") в 1СРР оказывается вообще обратно совместим с радугой; менять ничего не надо.

Данная доработка уже полгода успешно работает в немаленькой фирме; негативных последствий хирургического вмешательства не наблюдалось


ЗЫЖ Ваялось все на коленке и быстро-быстро, то есть, переопределялись только методы, которые реально использовались. Возможно , кому-то потребуется еще что-нибудь переопределять, но принцип, я надеюсь, понятен...
  

А для тех, кто не хотел учить SQL, господь сотворил курсоры
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать