Имя: Пароль:
1C
1С v8
Предопределённые элементы в модуле менеджера
0 k23
 
27.07.18
09:33
В модуле менеджера объекта (например, справочника) можно обратиться к предопределённому элементу без указания полного пути.
Этот странный эффект может очень сильно нагадить если предопределённые элементы носят совпадающие с чем-либо наименования.
Особо коварные разработчики могут добавить пару-тройку элементов справочника с такими именами, как Документы, Справочники, Массив, Строка...
Меня порадовало решение от известного производителя с предопределенными: ВнешниеОбработки и ВнешниеОтчеты.
1 Мыш
 
27.07.18
09:43
(0) В данном контексте приоритет у предопределенных элементов.
2 Cyberhawk
 
27.07.18
10:01
Выходит, надо переименовывать предопределенный
3 RomanYS
 
27.07.18
10:13
(0) " можно обратиться к предопределённому элементу без указания полного пути"
На самом деле подстава от разработчиков платформы. Зачем в модуле менеджера какой-то контекст, по сути это просто общий модуль с удобной привязкой к метаданным.
4 k23
 
27.07.18
10:16
(3) полностью согласен. Думаю даже что это баг, ставший фитчей. Логического объяснения этому нет.
5 Мыш
 
27.07.18
10:32
(3) (4) Несогласный. Модуль менеджера всегда относится к какой-то конкретной таблице. Отсюда и контекст идет.
Например никого не удивляет "Справочники.Номенклатура.ПредопределеннаяНоменклатура". Логично же находясь в менеджере "Справочники.Номенклатура" получить "ПредопределеннаяНоменклатура" без точки. Потеря некоторых объектов глобального контекста в данном случае несущественна, на мой взгляд.
6 k23
 
27.07.18
10:45
(5) а почему из модуля объекта нельзя без полного пути обратиться? Баг это, стопудово.
7 Мыш
 
27.07.18
11:04
(6) Потому что в модуле объекта контекст конкретного элемента.
8 k23
 
27.07.18
11:55
(5) "никого не удивляет "Справочники.Номенклатура.ПредопределеннаяНоменклатура". Логично же находясь в менеджере "Справочники.Номенклатура" получить "ПредопределеннаяНоменклатура" без точки"
Это не логично. Логично, это когда к одним и тем же данным всегда обращаются одинаково из любого места.

В данном случае механизм видимости процедур и функций модуля менеджера был использован для видимости данных в самом объекте. Т.е. в модуле менеджера можно смело опускать полный путь при обращении к процедуре/функции в этом же модуле. Это нормально во всех языках программирования. Но при чём здесь данные объекта?

В общем, как сделали, так и пользуемся. Им там виднее.
9 Мыш
 
27.07.18
11:59
(8) > В данном случае механизм видимости процедур и функций модуля менеджера был использован для видимости данных в самом объекте

Это вы сейчас о чём?