Всем привет.
Захотел было сделать класс наследник объекта Таблица.
Определяю класс как
класс Таблица=ПерехватТаблицы.ert : Table {}
Т.е. по сути все методы, где вызывается СоздатьОбъект("Таблица") - должны будут обработаться этим новым классом.
Перем ОбъектТабл Экспорт;
Функция Сам(Конт) Возврат Конт; КонецФункции
Функция ВывестиСекцию(ИмяСекции) Экспорт //+Al 2026-03-03 11:31:06 Переопределение стандартного метода для Таблицы
//Не будет перехватывать прикрепленные к форме таблицы
ОбъектТабл.PutSection(ИмяСекции);//Здесь используется только Англ имя метода, чтобы класс не зациклился, перехватив самого себя!!!
КонецФункции
Процедура Конструктор()
ОбъектТабл = Сам(Контекст).ПолучитьБазовыйКласс("Таблица");//Если написать "Table", то программа объект не увидит!!!
КонецПроцедуры
Сделал тест - начал ругаться в методе ВывестиСекцию:
Класс: Таблица - ошибка синтаксиса
//Строка №1 Тхт<<?>>
//Variable is not defined (Тхт)
В секции прописана переменная Тхт и вызов вывода секции не увидел эту переменную.
Кто-то знает, что может помочь в этом случае?
Думаю что ничего не поможет
Я представляю это так:
Когда Таблица создается непосредственно в модуле, то платформа связывает объект с контекстом окружение (Запрос, кстати, так же)
Когда таблица завернута в КОП, то ее, как базовый класс, создает 1спп в некоем врЕменном или пустом контексте
Было бы хорошо если бы контекст как-то "пробрасывался", но этого не сделано, как я понимаю
Вроде бы внутри КОПа можно получить контекст окружения, но присунуть его к создаваемому базовому - никак
ps
За давность лет могу чего-то не помнить и ошибаться)
Можно конечно придумать коп Таблица2, а у него метод, в который передавать Таблицу созданную в модуле, но это уже будет совсем не то что нужно тебе
Да, спасибо. Понятно.
Но, что интересно. Если не объявлять в классе метод ВывестиСекцию(), то Таблица выведется корректно. Без ошибок.
Объявил метод Показать() - он перехватился без проблем.
Функция Показать(Заголовок="",ИмяФайла="",Активизировать=1) Экспорт //+Al 2018-04-02 11:31:06 Переопределение стандартного метода для Таблицы
//Не будет перехватывать прикрепленные к форме таблицы
Сообщить("Класс ПерехватТаблицы Заголовок="+Заголовок+" ИмяФайла="+ИмяФайла+" Активизировать="+Активизировать);
ОбъектТабл.Show(Заголовок,ИмяФайла,Активизировать);//Здесь используется только Англ имя метода, чтобы класс не зациклился, перехватив самого себя!!!
КонецФункции
Цитата: alyuev от 04 марта 2026, 21:07Если не объявлять в классе метод ВывестиСекцию(), то Таблица выведется корректно. Без ошибок.
Получается то, о чем я говорил про контекст, делается не при создании, а при каждом вызове метода