История изменений
Исправление monk, (текущая версия) :
Я так понимаю речь идет о том, что классы без наследования (а значит полиморфизма) имеют мало смысла.
Я же в примере указал какой создаваемый класс от какого наследуется. Можно делать реквизит с типом ДокументСсылка и работать с любыми документами в этом реквизите.
Интерфейс определяется соглашением. Например, любой объект, который можно печатать, в своём модуле менеджера экспортирует процедуру Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода)
.
Если надо наследование реализации в стиле ООП от своих классов, то в 1С делается это делается от обработок. В смысле, обработку-родителя записываем в переменную и в своих методах вызываем сначала её методы. Или, если у родителя нет полей, то «родителем» является общий модуль (так чаще делают).
ЕМНИП в 1С даже function overloading’а (еще одна из фишек которых относят к классам) нет - то есть объявление процедуры с одним именем и разными типами параметров (но тут не уверен, может добавили в последнее время).
Там всегда было типа
Процедура Заполнить(ПараметрЗаполнения, ДополнительныеДанные = Неопределено)
Если ТипЗнч(ПараметрЗаполнения) = Тип("Структура") Тогда
...
ИначеЕсли(ПараметрЗаполнения) = Тип("ДокументСсылка.ПриходныйОрдер") Тогда
...
...
КонецЕсли
КонецПроцедуры
То есть разное поведение для разных типов обеспечивалось. Кому сильно хотелось в стиле ООП, писали ПолучитьОбработчикЗаполнения(ТипЗнч(Параметр)).Заполнить(Параметр)
.
Исходная версия monk, :
Я так понимаю речь идет о том, что классы без наследования (а значит полиморфизма) имеют мало смысла.
Я же в примере указал какой создаваемый класс от какого наследуется. Можно делать реквизит с типом ДокументСсылка и работать с любыми документами в этом реквизите.
Интерфейс определяется соглашением. Например, любой объект, который можно печатать в своём модуле менеджера экспортирует процедуру Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода)
.
Если надо наследование реализации в стиле ООП от своих классов, то в 1С делается это делается от обработок. В смысле, обработку-родителя записываем в переменную и в своих методах вызываем сначала её методы. Или, если у родителя нет полей, то «родителем» является общий модуль (так чаще делают).
ЕМНИП в 1С даже function overloading’а (еще одна из фишек которых относят к классам) нет - то есть объявление процедуры с одним именем и разными типами параметров (но тут не уверен, может добавили в последнее время).
Там всегда было типа
Процедура Заполнить(ПараметрЗаполнения, ДополнительныеДанные = Неопределено)
Если ТипЗнч(ПараметрЗаполнения) = Тип("Структура") Тогда
...
ИначеЕсли(ПараметрЗаполнения) = Тип("ДокументСсылка.ПриходныйОрдер") Тогда
...
...
КонецЕсли
КонецПроцедуры
То есть разное поведение для разных типов обеспечивалось. Кому сильно хотелось в стиле ООП, писали ПолучитьОбработчикЗаполнения(ТипЗнч(Параметр)).Заполнить(Параметр)
.