Библиотека функция Фиксина в расширении
Один программист запросил у меня код моей библиотеки функций и я хотел выгрузить ему его в файл CF, но призадумался. Сейчас ведь конфигурации никто не меняет, поэтому библиотеку надо делать в расширении. Перенес модули в расширение бфф, но при обновлении конфигурации столкнулся с ошибкой:
Использование глобальных серверных общих модулей в расширении недопустимо
При проверке метаданных обнаружены ошибки!
Операция не может быть выполнена.
Так вот платформа своими идиотскими ограничениями зачеркнула красивую концепцию.
Я сначала расстроился, потом сделал три общих модуля в расширении:

Но мне не нравился подобный подход. Программисту нужно запоминать какая функция серверная, какая клиентская, какая клиент-серверная. Неудобно, некрасиво, непрактично.
В итоге мне пришла мысль оставить один клиент-серверный модуль бфф.
Создал новую конфигурацию, создал в расширении клиент-сереный модуль бфф:
#Если Клиент Тогда Функция П(Текст) Экспорт ПоказатьПредупреждение(, Текст); КонецФункции #КонецЕсли #Если Сервер Тогда Функция Т() Экспорт Возврат Новый ТаблицаЗначений(); КонецФункции #КонецЕсли
Создал тестовую команду:
&НаСервере Функция ТестНаСервере() Т = бфф.Т(); Возврат Т.Количество() + 1; КонецФункции &НаКлиенте Процедура Тест(Команда) Р = ТестНаСервере(); бфф.П(Р); КонецПроцедуры
И она отработала успешно:

Следовательно, можно создать только один модуль бфф, и обращаться к нему без размышлений о том, это серверный или клиентский контекст.
Это приободрило меня и я решил, что всё же библиотеке функций быть на расширении.
Внутри библиотеки все вызовы функций будут через бфф. (бфф с точкой), чтобы проще их было оформить в единый общий модуль, который можно добавить, например, во внешнюю обработку. Тогда всем функциям нужно будет добавить префикс бфф, а бфф с точкой заменить просто на бфф.
