|
Зачем нужен вызов процедуры по ссылке? | ☑ | ||
---|---|---|---|---|
0
Dotoshin
20.11.18
✎
10:08
|
Добрый день, коллеги.
Периодически натыкаюсь в УТ 11 на такие вот конструкции: МодульВерсионированиеОбъектов = ОбщегоНазначения.ОбщийМодуль("ВерсионированиеОбъектов"); Используется = МодульВерсионированиеОбъектов.ЕстьПравоЧтенияИнформацииОВерсияхОбъектов(); Подскажите пожалуйста для чего это делается и почему нельзя сразу написать: ВерсионированиеОбъектов.ЕстьПравоЧтенияИнформацииОВерсияхОбъектов(); |
|||
1
ДенисЧ
20.11.18
✎
10:08
|
Они просто эти... Которые поворотники не включают на дороге
|
|||
2
Cyberhawk
20.11.18
✎
10:09
|
Это чтобы F12 у тебя не работало )
|
|||
3
Cyberhawk
20.11.18
✎
10:14
|
Ну а без шуток если - чтоб при компиляции не ругалось, если какая-то подсистема из БСП не внедрена в конфигурацию. "Экранирование" типа.
|
|||
4
DrWatson
20.11.18
✎
10:15
|
БСП же. Оно рассчитано на то что ты вставляешь не все модули. Поэтому сначала проверяют есть ли соответствующая подсистема, а потом вызывают функцию из модуля. Так вот если этого модуля нет, то 1с упадет ещё на проверке синтаксиса. а так будет работать.
|
|||
5
asady
20.11.18
✎
10:18
|
(0) ну ясно же - потом можно в модуле общего назначения написать:
Функция ОбщийМодуль(Имя) Экспорт Если Имя = "ВерсионированиеОбъектов" Тогда Возврат Вычислить("НовыйМодульВерсионированияОбъектов"); Конецесли; Если Метаданные.ОбщиеМодули.Найти(Имя) <> Неопределено Тогда Модуль = Вычислить(Имя); // ВычислитьВБезопасномРежиме не требуется, т.к. проверка надежная. ИначеЕсли СтрЧислоВхождений(Имя, ".") = 1 Тогда Возврат СерверныйМодульМенеджера(Имя); Иначе Модуль = Неопределено; КонецЕсли; Если ТипЗнч(Модуль) <> Тип("ОбщийМодуль") Тогда ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Общий модуль ""%1"" не найден.'"), Имя); КонецЕсли; Возврат Модуль; КонецФункции |
|||
6
Cyberhawk
20.11.18
✎
10:18
|
+(2) Чтобы оно все-таки работало (как F12, так и подсказка параметров), достаточно добавить после инициализации переменной-модуля некомпилируемый код:
МодульЗащитаПерсональныхДанных = ОбщегоНазначения.ОбщийМодуль("ЗащитаПерсональныхДанных"); #Если Сервер И НЕ Сервер Тогда МодульЗащитаПерсональныхДанных = ЗащитаПерсональныхДанных; #КонецЕсли |
|||
7
Dotoshin
20.11.18
✎
10:21
|
(3) (4) Все понял. Спасибо за разъяснение :)
и за шутки тоже спасибо, (1) и (2) улыбнуло :) |
|||
8
loololool
20.11.18
✎
11:26
|
(6) Так это в 1С писать надобно
|
|||
9
Cyberhawk
20.11.18
✎
11:32
|
(8) Кому оно надо?)
|
|||
10
loololool
20.11.18
✎
11:43
|
(9) А кому ты тут написал? ))
|
|||
11
Serg_1960
20.11.18
✎
11:43
|
(6) Если так написать, то F12 может быть и заработает, а F7, Ctrl+F7 и F5 могут отвалиться :)
|
|||
12
loololool
20.11.18
✎
11:45
|
(11) Тааак... А что такое Ф7, СТРЛ+Ф7 ? И почему запуск отладки, вдруг, отвалиться может?
|
|||
13
Serg_1960
20.11.18
✎
11:48
|
(12) Ошибка при компиляции - какая уж тут отладка :)
|
|||
14
loololool
20.11.18
✎
12:15
|
Не должно ведь компилироваться
|
|||
15
Cyberhawk
20.11.18
✎
12:15
|
(10) Очевидно, любому, кто прочитает
|
|||
16
Вафель
20.11.18
✎
12:17
|
(15) не уж-то есть такие д..бы которые правят бспшный код?
|
|||
17
Cyberhawk
20.11.18
✎
12:17
|
(16) Зачем БСПшный? Свой, если пишешь так же. Он же не только для проверки существования подсистем применяется, но и для проверки релиза платформы, например.
|
|||
18
Cyberhawk
20.11.18
✎
12:18
|
(11) Не баклань - предлагаемая мною вставка не компилируется
|
|||
19
Вафель
20.11.18
✎
12:19
|
(17) зачем также писать? что за извращение?
|
|||
20
Cyberhawk
20.11.18
✎
12:20
|
(19) Для обратной совместимости. Что-то ты бакланишь.
|
|||
21
NuclearWinter
20.11.18
✎
12:22
|
Говорят, конструкция #Если Сервер И НЕ Сервер Тогда
не работает в edt |
|||
22
Serg_1960
20.11.18
✎
13:42
|
(18) Прочти ещё раз своё же (3) - баклань, не баклань, а если нет подсистемы БСП, то конфигурация всё равно отвалится :)
|
|||
23
Cyberhawk
20.11.18
✎
14:09
|
(22) Конечно же ничего не отвалится, иначе зачем бы такое делать?
|
|||
24
Dzenn
гуру
20.11.18
✎
14:22
|
Ещё один уровень абстракции, появившийся вследствие того, что один и тот же код начали использовать в разных конфигурациях (БСП и может быть что-то ещё)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |