Форум Кладовочки АЛьФ`а

Обсуждение проектов => Дружественные проекты => Тема начата: alyuev от 04 марта 2026, 19:29

Название: Класс-обертка для объекта Таблица
Отправлено: alyuev от 04 марта 2026, 19:29
Всем привет.

Захотел было сделать класс наследник объекта Таблица.

Определяю класс как

класс Таблица=ПерехватТаблицы.ert : Table {}
Т.е. по сути все методы, где вызывается СоздатьОбъект("Таблица") - должны будут обработаться этим новым классом.


Перем ОбъектТабл Экспорт;

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

Функция ВывестиСекцию(ИмяСекции) Экспорт //+Al 2026-03-03 11:31:06 Переопределение стандартного метода для Таблицы
    //Не будет перехватывать прикрепленные к форме таблицы
     ОбъектТабл.PutSection(ИмяСекции);//Здесь используется только Англ имя метода, чтобы класс не зациклился, перехватив самого себя!!!

КонецФункции


Процедура Конструктор()
ОбъектТабл = Сам(Контекст).ПолучитьБазовыйКласс("Таблица");//Если написать "Table", то программа объект не увидит!!!
КонецПроцедуры

Сделал тест - начал ругаться в методе ВывестиСекцию: 

Класс: Таблица - ошибка синтаксиса
//Строка №1    Тхт<<?>>
//Variable is not defined (Тхт)

В секции прописана переменная Тхт и вызов вывода секции не увидел эту переменную.
Кто-то знает, что может помочь в этом случае?
Название: Re: Класс-обертка для объекта Таблица
Отправлено: trad от 04 марта 2026, 20:43
Думаю что ничего не поможет
Я представляю это так:
Когда Таблица создается непосредственно в модуле, то платформа связывает объект с контекстом окружение (Запрос, кстати, так же)
Когда таблица завернута в КОП, то ее, как базовый класс, создает 1спп в некоем врЕменном или пустом контексте
Было бы хорошо если бы контекст как-то "пробрасывался", но этого не сделано, как я понимаю
Вроде бы внутри КОПа можно получить контекст окружения, но присунуть его к создаваемому базовому - никак

ps
За давность лет могу чего-то не помнить и ошибаться)
Название: Re: Класс-обертка для объекта Таблица
Отправлено: trad от 04 марта 2026, 20:46
Можно конечно придумать коп Таблица2, а у него метод, в который передавать Таблицу созданную в модуле, но это уже будет совсем не то что нужно тебе
Название: Re: Класс-обертка для объекта Таблица
Отправлено: alyuev от 04 марта 2026, 21:07
Да, спасибо. Понятно.
Но, что интересно. Если не объявлять в классе метод ВывестиСекцию(), то Таблица выведется корректно. Без ошибок.
Объявил метод Показать() - он перехватился без проблем.
Функция Показать(Заголовок="",ИмяФайла="",Активизировать=1) Экспорт //+Al 2018-04-02 11:31:06 Переопределение стандартного метода для Таблицы

    //Не будет перехватывать прикрепленные к форме таблицы
      Сообщить("Класс ПерехватТаблицы Заголовок="+Заголовок+" ИмяФайла="+ИмяФайла+"  Активизировать="+Активизировать);
    ОбъектТабл.Show(Заголовок,ИмяФайла,Активизировать);//Здесь используется только Англ имя метода, чтобы класс не зациклился, перехватив самого себя!!!
КонецФункции

Название: Re: Класс-обертка для объекта Таблица
Отправлено: trad от 04 марта 2026, 21:32
Цитата: alyuev от 04 марта 2026, 21:07Если не объявлять в классе метод ВывестиСекцию(), то Таблица выведется корректно. Без ошибок.
Получается то, о чем я говорил про контекст, делается не при создании, а при каждом вызове метода