OneS icon indicating copy to clipboard operation
OneS copied to clipboard

Добавить инструкцию препроцессора, ограничивающую видимость экспортных методов

Open flln23 opened this issue 4 years ago • 4 comments

Хотелось бы иметь возможность видеть некоторые экспортные методы только в определенных модулях.

flln23 avatar May 10 '21 14:05 flln23

А при чем тут инструкции препроцессора? Этот механизм (препроцессоры) не для этого ведь предназначен...

marmyshev avatar May 10 '21 18:05 marmyshev

пожелание не раскрыто, напиши подробнее, чет трудно понять о чем речь. Мож ты хочешь аналог namespace?

LazarenkoA avatar May 12 '21 15:05 LazarenkoA

Сама проблема понятна - невозможность закрыть экспортные служебные методы. Реализация не очень хорошая. Но в целях безопасности кода было бы действительно удобоно закрывать какие-то методы внутри ряда объектов.

&Экспорт("ВариантыОтчетов")

Это костыль, но как лучше - виднее разрабам плафтормы.

Проще всего сделать это проверкой. Т.е. не запрещать вызов в Предприятии. Это подскажет разработчику о возможной проблеме, но не заставит переделывать поведение платформы в рантайме

SeiOkami avatar Feb 25 '23 09:02 SeiOkami

Очень сильно не хватает изоляции модулей. Пример (плохой): форма Справочник.Номенклатура может легко и не принужденно вызвать экспортный метод из любого общего модуля или модуля менеджера. То есть контролировать "связанность" и "зависимость" модулей приходится только глазами на уровне код-ревью. Страшно вообще заикаться про внешние печатные формы... Одним из вариантов решения означенной проблемы я вижу такой подход:

  1. В модуле "объявляется" (инструкция препроцессора, документирующий комментарий), что модуль (даже модуль формы!) изолированным ("#Изоляция"). То есть в модуле недоступны ни один из общих модулей, ни один из объектов метаданных.
  2. Далее в модуле перечисляются подключения к необходимым модулям
  • #Использовать ОбщегоНазначения как Общий
  • #Использовать Документ.РеализацияТоваровУслуг как Реализация
  • #Использовать РегистрНакопления.ОстаткиТоваров как Остатки
  • #Использовать РегистрСведений.ЦеныНоменклатуры как Цены

Такой подход позволит: а) в рамках задач ставить ограничение по используемым модулям и вынуждать исполнителя использовать только нужный слой абстракции кода, не повышая "связанность" кода б) Подсказки по доступным модулям и их методам в рамках написания кода по задаче резко сократится в) в конструкторе запроса позволит ограничивать имена доступных таблиц г) при доработке такого модуля будет очевидна ситуация, когда исполнитель добавляет новый используемый модуль, и должен будет обосновать его необходимость.

ChugunovAN avatar Mar 15 '24 22:03 ChugunovAN