Добавить инструкцию препроцессора, ограничивающую видимость экспортных методов
Хотелось бы иметь возможность видеть некоторые экспортные методы только в определенных модулях.
А при чем тут инструкции препроцессора? Этот механизм (препроцессоры) не для этого ведь предназначен...
пожелание не раскрыто, напиши подробнее, чет трудно понять о чем речь. Мож ты хочешь аналог namespace?
Сама проблема понятна - невозможность закрыть экспортные служебные методы. Реализация не очень хорошая. Но в целях безопасности кода было бы действительно удобоно закрывать какие-то методы внутри ряда объектов.
&Экспорт("ВариантыОтчетов")
Это костыль, но как лучше - виднее разрабам плафтормы.
Проще всего сделать это проверкой. Т.е. не запрещать вызов в Предприятии. Это подскажет разработчику о возможной проблеме, но не заставит переделывать поведение платформы в рантайме
Очень сильно не хватает изоляции модулей. Пример (плохой): форма Справочник.Номенклатура может легко и не принужденно вызвать экспортный метод из любого общего модуля или модуля менеджера. То есть контролировать "связанность" и "зависимость" модулей приходится только глазами на уровне код-ревью. Страшно вообще заикаться про внешние печатные формы... Одним из вариантов решения означенной проблемы я вижу такой подход:
- В модуле "объявляется" (инструкция препроцессора, документирующий комментарий), что модуль (даже модуль формы!) изолированным ("#Изоляция"). То есть в модуле недоступны ни один из общих модулей, ни один из объектов метаданных.
- Далее в модуле перечисляются подключения к необходимым модулям
- #Использовать ОбщегоНазначения как Общий
- #Использовать Документ.РеализацияТоваровУслуг как Реализация
- #Использовать РегистрНакопления.ОстаткиТоваров как Остатки
- #Использовать РегистрСведений.ЦеныНоменклатуры как Цены
Такой подход позволит: а) в рамках задач ставить ограничение по используемым модулям и вынуждать исполнителя использовать только нужный слой абстракции кода, не повышая "связанность" кода б) Подсказки по доступным модулям и их методам в рамках написания кода по задаче резко сократится в) в конструкторе запроса позволит ограничивать имена доступных таблиц г) при доработке такого модуля будет очевидна ситуация, когда исполнитель добавляет новый используемый модуль, и должен будет обосновать его необходимость.