Структура модуля. СлужебныйПрограммныйИнтерфейс и СлужебныеПроцедурыИФункции

1. Oleg_nsk 279 28.08.24 07:16 Сейчас в теме
Согласно стандартам разработки:
объемные разделы модулей рекомендуется разбивать на подразделы по функциональному признаку.

Шаблон разделов для общих модулей содержит в том числе две области:
СлужебныйПрограммныйИнтерфейс и СлужебныеПроцедурыИФункции.
(с разделом ПрограммныйИнтерфейс всё очевидно)
Раздел «Служебный программный интерфейс» предназначен для модулей, которые являются частью некоторой функциональной подсистемы. В нем должны быть размещены экспортные процедуры и функции, которые допустимо вызывать только из других функциональных подсистем этой же библиотеки.

Раздел «Служебные процедуры и функции» содержит процедуры и функции, составляющие внутреннюю реализацию общего модуля. В тех случаях, когда общий модуль является частью некоторой функциональной подсистемы, включающей в себя несколько объектов метаданных, в этом разделе также могут быть размещены служебные экспортные процедуры и функции, предназначенные только для вызова из других объектов данной подсистемы.

Из такого определения ясно, что СлужебныйПрограммныйИнтерфейс содержит только методы с ключевым словом Экспорт. Однако, некоторые функции из раздела СлужебныеПроцедурыИФункции тоже могут быть экспортными.
Отсюда вопрос. По какому критерия следует включать экспортный метод в один из этих разделов? Из исследования типовых конфигураций я не смог этого понять. Сложилось ощущение, что включение метода в тот или иной раздел происходит произвольным образом.
По теме из базы знаний
Найденные решения
17. spacecraft 28.08.24 12:48 Сейчас в теме
(16) ищите общие модули начинающиеся на ПодсистемыКонфигурации.
В них есть процедура ПриДобавленииПодсистем.
В этой процедуре есть имена общих модулей, которые начинаются на "ОбновлениеИнформационнойБазы"
Смотрите в состав какой подсистемы он (найденный общий модуль обновления) включен. Это будет верхний уровень дерева подсистем библиотеки. Все что входит в эту подсистему (и рекурсивно) является составом библиотеки.
Oleg_nsk; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
4. user1880116 28.08.24 07:54 Сейчас в теме
(1)
я не смог

По русски же написано:
которые допустимо вызывать только из других функциональных подсистем этой же библиотеки.
предназначенные только для вызова из других объектов данной подсистемы.

Из других. И из данной.

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

Вообще, впечатление, что тема написана просто с целью поглумится над типовыми.
7. Oleg_nsk 279 28.08.24 08:27 Сейчас в теме
(4)
Вообще, впечатление, что тема написана просто с целью поглумится над типовыми.

Впечатление обманчивое
2. puzo50 28.08.24 07:31 Сейчас в теме
имхо в служебных - только функции для использования тут, в этом модуле.
а экспорт можно поставить если только вдруг оказалось, что где-то такое крайне узкоспециализированное тоже нужно
не знаю, например перевод даты в формат "дд-уу-мммм-уу-д-.: м"
3. Oleg_nsk 279 28.08.24 07:42 Сейчас в теме
(2)
а экспорт можно поставить если только вдруг оказалось, что где-то такое крайне узкоспециализированное тоже нужно

Не совсем так. Иначе функцию ДвенадцатиЧасовойФорматВремени() из типовой БП 3.0 надо было перенести в раздел СлужебныйПрограммныйИнтерфейс. И это не единичный пример. Складывается ощущение, что при разработке типовой конфигурации разработчики просто "расшаривают" в процессе нужные им методы на экспорт и не переносят их в раздел СлужебныйПрограммныйИнтерфейс .
Очень хочу здесь ошибаться.
Прикрепленные файлы:
5. user2033930 28.08.24 08:02 Сейчас в теме
(3) Ну начнем с того, что модуль ЗарплатаИКадры не является библиотечным. Соответственно, на него не распространяются ограничения по
допустимо вызывать только из других функциональных подсистем этой же библиотеки.

А вот на самом деле он вполне
является частью некоторой функциональной подсистемы, включающей в себя несколько объектов метаданных, в этом разделе также могут быть размещены служебные экспортные процедуры и функции, предназначенные только для вызова из других объектов данной подсистемы.
6. Oleg_nsk 279 28.08.24 08:26 Сейчас в теме
(5)

(3) Ну начнем с того, что модуль ЗарплатаИКадры не является библиотечным.

Библиотечным вы называете только те модули которые относятся к БСП и расположены внутри ветки Подсистемы/СтандартныеПодсистемы?

Соответственно, на него не распространяются ограничения

Тогда мой вопрос актуален: По какому критерию следует включать экспортный метод в один из этих разделов?
В "небиблитечных" модулях экспортные методы есть в обоих разделах и по какой логике программист должен размещать свой экспортный метод в том или ином месте?
9. user2033930 28.08.24 08:45 Сейчас в теме
(6) Библиотек различных много. БСП - только одна из них.
10. Oleg_nsk 279 28.08.24 09:01 Сейчас в теме
(6) Библиотек различных много. БСП - только одна из них.

Тогда что вы понимаете под библиотекой? Такого объекта конфигурации нет и в моем понимании это какая-то условность. Допустим, применительно к БП 3.0: что там считается библиотекой, а что не считается помимо БСП?
13. user2033930 28.08.24 09:15 Сейчас в теме
(10) А еще куча всяких маркировочных библиотек, отраслевых библиотек, и прочих интеграционных хреней...
Прикрепленные файлы:
Oleg_nsk; +1 Ответить
15. spacecraft 28.08.24 10:16 Сейчас в теме
(10)
Допустим, применительно к БП 3.0: что там считается библиотекой, а что не считается помимо БСП?

Откройте РС ВерсииПодсистем в режиме предприятия. Вот там перечислены все библиотеки в конфигурации + сама конфигурация.
Oleg_nsk; +1 Ответить
16. Oleg_nsk 279 28.08.24 11:55 Сейчас в теме
Откройте РС ВерсииПодсистем в режиме предприятия. Вот там перечислены все библиотеки в конфигурации + сама конфигурация.

Получается то, что в этом регистре находится в колонке "Имя подсистемы" является той самой библиотекой, о которой и говорит тот самый стандарт?
Если это так, то каким образом вы определяете является тот или иной модуль относящимся к конкретной библиотеке (по ссылке ничего найти нельзя, так как измерение этого регистра является строковым).
17. spacecraft 28.08.24 12:48 Сейчас в теме
(16) ищите общие модули начинающиеся на ПодсистемыКонфигурации.
В них есть процедура ПриДобавленииПодсистем.
В этой процедуре есть имена общих модулей, которые начинаются на "ОбновлениеИнформационнойБазы"
Смотрите в состав какой подсистемы он (найденный общий модуль обновления) включен. Это будет верхний уровень дерева подсистем библиотеки. Все что входит в эту подсистему (и рекурсивно) является составом библиотеки.
Oleg_nsk; +1 Ответить
18. Oleg_nsk 279 28.08.24 12:52 Сейчас в теме
(17)
(16) ищите общие модули начинающиеся на ПодсистемыКонфигурации.

Спасибо. То что надо.
8. spacecraft 28.08.24 08:35 Сейчас в теме
Это просто соглашение.
Программный интерфейс могут использовать все разработчики.
СлужебныйПрограммныйИнтерфейс могут использовать разработчики других подсистем в рамках одной библиотеки.
СлужебныеПроцедурыИФункции это внутренняя часть в рамках одной подсистемы.

Технически можно использовать любые доступные, но для методов в СлужебныеПроцедурыИФункции нет гарантии, что в следующем обновлении они будут доступны и их вызов не изменится.
Oleg_nsk; user2033930; +2 Ответить
11. Oleg_nsk 279 28.08.24 09:07 Сейчас в теме
(8)
Технически можно использовать любые доступные, но для методов в СлужебныеПроцедурыИФункции нет гарантии, что в следующем обновлении они будут доступны и их вызов не изменится.

А методы из раздела СлужебныйПрограммныйИнтерфейс гарантировано не изменятся?
12. user2033930 28.08.24 09:11 Сейчас в теме
(11) Они изменятся только вместе со всей библиотекой. Именно поэтому использовать их могут только разработчики этих библиотек, а не все подряд.
14. spacecraft 28.08.24 10:05 Сейчас в теме
(11) там сложнее механизм согласования изменения.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот