Имя: Пароль:
1C
 
В чём смысл конструкции ОбщегоНазначения.ОбщийМодуль("...");
,
0 bolobol
 
21.05.18
12:51
Бодрый день!

Может кто пояснить, в чём смысл конструкции, исключающей возможность воспользоваться Ф12:

            МодульТехнологияСервисаИнтеграцияСБСП = ОбщегоНазначения.ОбщийМодуль("ТехнологияСервисаИнтеграцияСБСП");
            МодульТехнологияСервисаИнтеграцияСБСП.ПриОпределенииНастроекРегламентныхЗаданий(Настройки);

Спасибо!
1 Cool_Profi
 
21.05.18
12:52
Сначала читается и создаётся объект, потом вызвается его метод. Что тут сложного?
2 bolobol
 
21.05.18
12:53
(1) Бред - не сложность
3 assasu
 
21.05.18
12:55
(0) можно написать конечно ТехнологияСервисаИнтеграцияСБСП.ПриОпределенииНастроекРегламентныхЗаданий(...)

но есть случаи когда имя модуля хранится где то в регистре в в виде строки. А так более унифицированно
4 Cool_Profi
 
21.05.18
12:58
(2) Для тебя бред - доступ по имени к общему модулю?
5 RomaH
 
naïve
21.05.18
13:00
(0) если общего модуля не станет (переименуют) или еще чего - конфа просто не запуститься - от слова совсем - вывалится в синтаксис сразу

а при такой конструкции - работать перестанет только этот кусок кода
6 exwill
 
21.05.18
13:06
(0) F12 - это неразумно. Открываешь дерево конфигурации, находишь модуль. Потом в модуле находишь процедуру. Все это может занять 3, а то и все 5 мин. При стоимости часа работы в 2000 руб. получаем 166.66 руб. Сто тысяч одинэсников дадут 16 миллионов рублей ВВП на одном таком нехитром трюке. Что делать, надо же как-то выбиваться в пятые экономики мира.
7 Вафель
 
21.05.18
13:09
по идее должна быть проверка на Модуль <> Неопределено
8 bolobol
 
21.05.18
13:20
(6) Точняк! А ещё и за количество строк, наверное, оплата в 1С!

Это - вот прям всё объясняет, в том числе и идею в (3), как обоснование
9 Boleev
 
21.05.18
13:21
Мне кажется, что это такой шажок к ООП
10 Boleev
 
21.05.18
13:22
(6) а разве переход через 33 одноименных модуля (как в ЗУП 3) не достаточно
11 Вафель
 
21.05.18
13:24
(10) Подожди, вот в ЗУП внедрят технику из (0). Будешь по 1ч конечную процедуру искать )))
12 RomaH
 
naïve
21.05.18
13:26
(11) а разве еще нет?
13 Вафель
 
21.05.18
13:28
(12) пока только в рамках БСП )))
14 bolobol
 
21.05.18
13:38
33 бессмысленных и беспощадных перехода, заканчивающиеся ёмким и пустым "Возврат;"
15 drei
 
21.05.18
14:30
(0) Если внимательно читать документацию по БСП, то можно узнать, что она может внедряться по подсистемам. При этом некоторые подсистемы могут отсутствовать. Вот чтобы у тебя компиляция не разваливалась и можно было работать в разных вариантах внедрения используется такое программное определение.

Но как всегда, истинные 1Сники документацию не читают, а сразу начинают брызгать.
16 bolobol
 
21.05.18
14:41
(15) Сложно даже представить такую ситуацию...
Идёт, себе, такой код, выполняется, и вдруг... посреди выполнения - обработанное исключение, скажу я вам, вида: "общий модуль такой-то отсутствует"!
Да, исключение не на этапе контроля синтаксиса, а на этапе выполнения, т.е. - всё-таки зашли в процедуру, требующую отсутствующий модуль, ай, не повезло-то как! - вы про такие внедрения?
17 H A D G E H O G s
 
21.05.18
14:56
(16) Нет, не про такие. БСП может использоваться в разных решениях, в некоторых из которых нет подсистем.

в (0) - просто единственный способ написать универсальный код.
Мы тоже этим способом пользуемся.
18 H A D G E H O G s
 
21.05.18
14:58
Если АСФОбщегоНазначенияКлиентСервер.ЕстьПодсистемаАСФ_ЕГАИС() Тогда
        ОМ_АСФОбменСУТМВызовСервера=АСФОбщегоНазначенияКлиентСервер.ОбщийМодуль("АСФОбменСУТМВызовСервера");
        СтруктураВозврата=ОМ_АСФОбменСУТМВызовСервера.ИнициироватьИнтерфейсЕГАИС();
    КонецЕсли;

В некоторых наших решениях - нет подсистемы ЕГАИС и нет ОМ АСФОбменСУТМВызовСервера. Не писать же ради них отдельную процедуру, дублирующую основную на 90%
19 novichok79
 
21.05.18
15:02
(0) это результат унификации, если общего модуля нет в конфигурации - вылетает исключение. все просто.