В общем, делаю очередную попытку перейти на свежие версии 1с++.
Исходные данные.Имеем классы:
1)
class РегистрСведений = @CLASSES\РегистрСведений.ert : Регистры{
// назначение регистра
void Назначить (Строка ИмяРегистра);
// получение среза последних. Позиционирует регистр.
Число ПолучитьПоследнее(Дата ДатаСреза) ;
.... // далее несущественно
}
///// кусок кода метода ///////////////////////
Процедура Назначить(ИмяРегистра) Экспорт
НоваяБаза = СоздатьОбъект("Регистр."+ИмяРегистра);
а=Сам().ЗаменитьБазовыйОбъект("Регистры", НоваяБаза);
//Сообщить(а);
КонецПроцедуры //
Функция ПолучитьСрез(ДатаСреза, Последнее = 0)
....
Конт = Сам();
Если ТипЗначенияСтр(Фильтр) = "СписокЗначений" Тогда
Для ц=1 По Фильтр.РазмерСписка() Цикл
_Измерение = "";
_Значение = Фильтр.ПолучитьЗначение(ц,_Измерение);
Конт.УстановитьЗначениеФильтра(_Измерение,_Значение);
КонецЦикла;
.......................
/////////////////////////////////////////////
2)
class ОЭПО.ДокСчет = @CLASSES\ОЭПО_ДокСчет.ert : Документ.Счет{
Void Печать();
Строка Акта();
Документ ВыбратьПодчиненныйДокумент(Строка ВидДокумента, Число НуженСписок=0, Неопределенный СписокДокументов=0) Экспорт
.... // далее несущественно
}
// завершение определения класса !!
Имеем исходный /
версия 1с++ 2.0.2.2/
работающий код:
а) форма документа "Счет"
Функция Печать()
_Сам = СоздатьОбъект("ОЭПО.ДокСчет");
_Сам.ЗаменитьБазовыйОбъект("Документ.Счет",Конт);
_Сам.Печать();
_Сам = 0;
Возврат 1;
КонецФункции//Печать()
б) в другом классе
РегСв = СоздатьОбъект("РегистрСведений");
РегСв.Назначить("рсПодписки");
....
РегСв.УстановитьФильтр("Контрагент",_База);
РегСв.УстановитьФильтр("ЗаМесяц",ДатаПодписки);
Если РегСв.ПолучитьПоследнее(ДатаПроверки)=0 Тогда
.......
Результат.1) Версия 1с++ 2.0.3.1 /или 2.0.3.1 последняя ночная/
Не работает форма документа счет /класс ОЭПО.ДокСчет/
( не отработывает код
_Сам.ЗаменитьБазовыйОбъект("Документ.Счет",Конт);
т.е. возвращает 0;)
Насколько я понимаю - считает форму документа счет наследником группового контекста, а не наследником документа.2) Версия 1с++ 2.5.0.0 от 2006-10-26
форма документа счет работает (ЗаменитьБазовыйОбъект() возвращает 1),
но не отрабатывает класс РегистрСведений
а=Сам().ЗаменитьБазовыйОбъект("Регистры", НоваяБаза);
возвращает 0 и отсутствуют методы регистров,
вываливается на ПолучитьСрез() в момент
Конт.УстановитьЗначениеФильтра(_Измерение,_Значение);
Насколько я понимаю - считает, что "Регистры" и "Регистр.ХХХ" это два принципиально разных класса.Итого:
Кто виноват (ну это я знаю - я сам
) и что делать?