Имя: Пароль:
1C
1С v8
Уникальный идентификатор для справочника
0 мистер игрек
 
18.09.12
19:09
Есть два выражений, оба они в табло дают одинаковый результат:

ТипЗнч((новый (Тип("СправочникСсылка.Номенклатура"))))    = Справочник ссылка: Номенклатура
ТипЗнч(справочники.Номенклатура.ПустаяСсылка())     = Справочник ссылка: Номенклатура

Но при вычислении уникального идентифакатора получается:

(новый (Тип("Справочникссылка.Номенклатура"))).УникальныйИдентификатор()    = {(1,47)}: Ошибка в выражении
справочники.Номенклатура.ПустаяСсылка().УникальныйИдентификатор()    = 00000000-0000-0000-0000-000000000000

Почему так получается? Вед у обоих тип одинаковый и сравнение из значений дает истину.
1 Fragster
 
гуру
18.09.12
19:10
посмотри в отладчике
новый (Тип("Справочникссылка.Номенклатура")) = справочники.Номенклатура.ПустаяСсылка()
2 мистер игрек
 
18.09.12
19:12
(1) Я же сказал, что дает истину
3 Fragster
 
гуру
18.09.12
19:13
гы!
XMLЗначение(Тип("Справочникссылка.Номенклатура"), XMLСтрока((новый (Тип("Справочникссылка.Номенклатура"))))).УникальныйИдентификатор()
4 Fragster
 
гуру
18.09.12
19:15
но вообще ссылка - это ж такое типа "только чтение". Я бы даже на новый (Тип("СправочникСсылка.Номенклатура")) ругался
5 ChAlex
 
18.09.12
19:30
(0) -  ну потому что конструктор собственно не создает переменной. Напиши

Спр = новый (Тип("Справочникссылка.Номенклатура")));
Спр.УникальныйИдентификатор()

И ошибки не будет
6 мистер игрек
 
18.09.12
19:35
очень странно
7 ChAlex
 
18.09.12
19:40
(6)  - ну с точки зрения программы - ничего странного, а то что табло не может переварить - ну так это уже другая песня (а может и не должно) - тут как на это посмотреть.
8 ChAlex
 
18.09.12
19:42
Всякие конструкторы - это директива для создания объекта, а вот методы - это сущность самого объекта, а не директивы - приблизительно так. В любом случае не используйте подвешенных конструкторов и будет все ок.
9 мистер игрек
 
18.09.12
20:11
ок, спасибо
Ошибка? Это не ошибка, это системная функция.