Перенесено из общей веткиПодстановочные классы для быстрого перехода из под 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СРР оказывается вообще обратно совместим с радугой; менять ничего не надо.
Данная доработка уже полгода успешно работает в немаленькой фирме; негативных последствий хирургического вмешательства не наблюдалось
ЗЫЖ Ваялось все на коленке и быстро-быстро, то есть, переопределялись только методы, которые реально использовались. Возможно , кому-то потребуется еще что-нибудь переопределять, но принцип, я надеюсь, понятен...