![]() |
|
Зачем в БСП используют Вычислить() при получении общего модуля? | ☑ | ||
---|---|---|---|---|
0
ДНН
16.11.20
✎
11:57
|
Например: МодульСтандартныеПодсистемыКлиентСерверЛокализация = Вычислить("СтандартныеПодсистемыКлиентСерверЛокализация");
Если можно = МодульСтандартныеПодсистемыКлиентСерверЛокализация = СтандартныеПодсистемыКлиентСерверЛокализация; В обоих случаях будет ошибка, если нет такого модуля. |
|||
1
H A D G E H O G s
16.11.20
✎
12:00
|
Чтобы не спотыкалось при проверке в конфах, где этого модуля нет.
|
|||
2
fisher
16.11.20
✎
12:02
|
(0) Только в первом случае ошибка будет в рантайме, а во втором случае при инициализации. Не?
|
|||
3
Василий Алибабаевич
16.11.20
✎
12:05
|
В БПО применяется для того чтобы однообразным способом получить обработчик.
Типа такого : Сканер.Драйвер = Вычислить("ОбщийМодульДрайверСканера"); Весы.Драйвер = Вычислить("ОбщийМодульДрайверВесов"); Дисплей.Драйвер = Вычислить("ОбщийМодульДрайверДисплеев"); |
|||
4
ДНН
16.11.20
✎
12:05
|
(2) да
|
|||
5
Ненавижу 1С
гуру
16.11.20
✎
12:08
|
(3) и в чем отличие того однообразия от этого?
Сканер.Драйвер = ОбщийМодульДрайверСканера; Весы.Драйвер = ОбщийМодульДрайверВесов; Дисплей.Драйвер = ОбщийМодульДрайверДисплеев; |
|||
6
timurhv
16.11.20
✎
12:08
|
(2) не должно, там идет проверка на тип:
ПравилаТранслитерации = Новый Соответствие; МодульСтандартныеПодсистемыКлиентСерверЛокализация = Вычислить("СтандартныеПодсистемыКлиентСерверЛокализация"); Если ТипЗнч(МодульСтандартныеПодсистемыКлиентСерверЛокализация) = Тип("ОбщийМодуль") Тогда МодульСтандартныеПодсистемыКлиентСерверЛокализация.ПриЗаполненииПравилТранслитерации(ПравилаТранслитерации); КонецЕсли; Возврат ОбщегоНазначенияСлужебныйКлиентСервер.СтрокаЛатиницей(Значение, ПравилаТранслитерации); |
|||
7
fisher
16.11.20
✎
12:10
|
(4) Тогда варианта два.
1) В рантайме до нее может и не дойти (при обработке веток выборочного внедрения БСП) 2) ЕМНИП, второй вариант синтаксиса с явной ссылкой на модуль в платформе появился не сразу. |
|||
8
ДНН
16.11.20
✎
12:10
|
(6) МодульСтандартныеПодсистемыКлиентСерверЛокализация = Вычислить("СтандартныеПодсистемыКлиентСерверЛокализация");
Если модуля нет, то будет ошибка переменная не определена СтандартныеПодсистемыКлиентСерверЛокализация |
|||
9
timurhv
16.11.20
✎
12:18
|
(8) Угу, в других местах проверка другого вида:
Если Метаданные.ОбщиеМодули.Найти("СтандартныеПодсистемыКлиентСерверЛокализация") <> Неопределено Тогда МодульСтандартныеПодсистемыКлиентСерверЛокализация = ОбщегоНазначения.ОбщийМодуль("СтандартныеПодсистемыКлиентСерверЛокализация"); МодульСтандартныеПодсистемыКлиентСерверЛокализация.ПриЗаполненииПравилТранслитерации(ПравилаТранслитерации); КонецЕсли; Проверка на тип некорректна. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |