OneS icon indicating copy to clipboard operation
OneS copied to clipboard

Интерфейсы

Open SeiOkami opened this issue 2 years ago • 0 comments

Да, в 1С нет ООП и вряд ли когда-то появятся иерархия классов #57 Но есть более простой вариант, который бы позволил упростить разработку и сопровождение кода.

Добавить возможность описывать интерфейсы и приводить объект к нему.

Есть предложение для ЕДТ: https://github.com/marmyshev/edt-plugins/issues/15

Но, я считаю, что не хватает:

  1. Нужно, чтобы это работало и в конфигураторе и в привычных для 1С концепциях, а не просто комментарии и текстовые файлики ЕДТ
  2. Нужно, чтобы внутри платформы были методы, позволяющие приводить объект к тому или иному интерфейсу

Поэтому предлагаю добавить подпункт "Интефрейсы" в дерево конфигурации. Можно сделать общие интерфейсы (в узле Общие) , и дополнительно в каждом объекте конфигурации (как это сделано с командами)

Интерфейс можно описывать для разных типов объектов. Например:

  • Интефрейс прикладного объекта. Например, общего модуля, обработки, отчета, документа, формы и так далее. Такой интерфейс сразу будет знать о существовании методов и свойств прекладного объекта и предлагать разработчику редактор максимально близкий к редактору прикладного объекта
  • Произвольный интерфейс, который позволяет описать любой объект. Например, прописать необходимость наличия метода. А в каком объекте (форма, обработка и так далее) нам уже не важно.

Синтаксис проверки конфигурации будут просто проверять наличие у объектов реализации интерфейса. Т.е. если мы указываем, что документ подключен к интерфейсу "Подключаемые команды" от БСП, то синтаксис проверка контроллирует наличие соответствующих методов на форме.

  • В глобальном контексте необходимо добавить метод, позволяющий привести объект к конкретному интерфейсу.
ОбъектИнтерфейс = ОбъектИнтерфейса(ЭтотОбъект, Интерфейсы.МойИнтерфейс);
ОбъектИнтерфейс.МетодМоегоИнтерфейса();

SeiOkami avatar Apr 28 '23 06:04 SeiOkami