Почему не видится функция глобального общего модуля с модуля управляемой формы

1. paxan 02.08.19 07:00 Сейчас в теме
Здравствуйте, возможно банальный вопрос, но столкнулся впервые...
В релизе 8.3.8.2167 (может и в более свежих также, не проверял) столкнулся с тем, что при попытке компиляции модуля управляемой формы, где присутствует вызов функции или процедуры общего модуля, у которого стоит галка Глобальный выходит ошибка, что такая процедура или функция не найдена.
Т.е. еще раз, есть к примеру общий модуль "Тест", в нем стоит галка "Глобальный" и галки "Сервер" и "Вызов сервера". В этом модуле есть какая-то процедура. Так вот эта процедура как оказалось не видна с модуля формы и лечится только если снять галку "Глобальный" с модуля и обращаться к процудере через точку, т.к. вида Тест.ПроцедураТакаяТо(). Просьба пояснить почему так? Это такая особенность УФ, или баг платформы?
По теме из базы знаний
Найденные решения
11. SlavaKron 02.08.19 09:39 Сейчас в теме
Процедура глобального модуля должна иметь тот же контекст, из которого она вызывается.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. platonov.e 158 02.08.19 07:22 Сейчас в теме
Вызываете в контексте сервера или клиента?
3. paxan 02.08.19 07:39 Сейчас в теме
4. platonov.e 158 02.08.19 07:54 Сейчас в теме
(3) так попробуйте в контексте сервера, модуль ведь серверный
5. paxan 02.08.19 07:57 Сейчас в теме
(4) Так-то может и сработает, но хотелось-бы знать почему изначально не работает, т.к. причин не работать я не знаю.
6. login1020 133 02.08.19 08:55 Сейчас в теме
(5)
Глобальный — если флаг установлен, функции и процедуры из этого модуля становятся доступны в глобальном контексте. Т.е. их можно вызвать в любом месте конфигурации, обращаясь без названия общего модуля. Однако добавляется условие — название процедур и функций в этом общем модуле должны быть уникальны в рамках глобального контекста.
Сервер — процедуры и функции данного общего модуля могут быть выполнены на сервере.
Внешнее соединение — программные коды данного общего модуля могут быть выполнены при подключении внешним источником (например, COM).
Клиент (управляемое приложение) — процедуры и функции данного общего модуля могут быть использованы в толстом клиенте в режиме управляемого приложения.
Клиент (обычное приложение) — программные коды данного общего модуля могут быть использованы в толстом клиенте в режиме обычного приложения.
Вызов сервера — флаг, разрешающий на клиенте использовать процедуры и функции из этого общего модуля.
Привилегированный — если установлена Истина, в этом общем модуле будет отключена проверка прав доступа.
Повторное использование — определяет настройки возвращаемых значений, если опция включена, то после первого выполнения система запомнит значение для данных входных параметров и будет возвращать уже готовое значение. Может принимать следующие значения: не используется — отключение, на время вызова — на время выполнения определенной процедуры, на время сеанса — пока пользователь не закрыл сеанс (программу).
8. paxan 02.08.19 09:00 Сейчас в теме
(6)И к чему это? Как это относится к сути вопроса?
9. login1020 133 02.08.19 09:05 Сейчас в теме
(8) общая информация для проверки, Процедура Экспортная и уникальная, для того чтобы быть глобальной?
10. paxan 02.08.19 09:12 Сейчас в теме
(9)Да, экспортная и уникальная. Да собственно проверить то что я написал дело одной минуты..
11. SlavaKron 02.08.19 09:39 Сейчас в теме
Процедура глобального модуля должна иметь тот же контекст, из которого она вызывается.
12. paxan 05.08.19 07:56 Сейчас в теме
13. Stivens 35 03.06.20 09:20 Сейчас в теме
Ага, тоже всю голову сломал.
"ВызовСервера" для глобального модуля не дает доступность его методов с клиента...
Если надо, то или модуль делать неглобальным,
или вызывать из обертки серверной типа
&НаКлиенте
процедура НужнаяОбработка()
НужнаяОбработкаСервер();
КонецПроцедуры
//без директивы - значит "&НаСервере"
Процедура НужнаяОбработкаСервер()
//Вызов процедуры с сервера
КонецПроцедуры

Ну или делать отдельный модуль клиентский, если можно обойтись без серверного контекста для решения задачки... +
(Очень локально сам пошел по третьему пути, заменив обращения к перечислениям на "ПредопределенноеЗначение...")
14. sergathome 4 14.09.20 15:28 Сейчас в теме
для 8.3.16.1148 проблема всё ещё актуальна - при вызове серверной функции глобального модуля из менеджера объекта, в случае использования толстого клиента функция выпадает из контекста - становится не видна. При этом всё компиляется, запускается и тп.
Мораль - глобальные модули - плохой феншуй.
15. user1953221 29.05.23 09:02 Сейчас в теме
(14) В ответе (5) сказано, что глобальные функции вызываются без указания модуля. Мне это помогло!
Оставьте свое сообщение

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