Имя: Пароль:
1C
1С v8
Тип Шрифт сравнивается не по равенстве ссылок
0 Ненавижу 1С
 
гуру
17.11.20
22:50
Хотя может и некорректно говорить о равенстве ссылок в 1С и вообще, что это ссылка на объект.
Вендор как-то скупо это объясняет или я читаю не там.
Но тем не менее, имеем:

Новый Структура = Новый Структура   // дает Ложь, это понятно
Новый Шрифт = Новый Шрифт   // Истина
Новый Шрифт("Arial") = Новый Шрифт("Arial")   // Истина
Новый Шрифт("Arial") = Новый Шрифт("Courier")   // Истина

подозреваю, что так ведут себя ВСЕ неизменяемые типы (а у экземпляра шрифта нельзя поменять свойства прямо или косвенно)
т.е. сравнение таких типов идет по равенству свойств

З.Ы. не знаю кому это может понадобится, просто игра воображения
1 Ненавижу 1С
 
гуру
17.11.20
22:50
(1) Новый Шрифт("Arial") = Новый Шрифт("Courier")   // Ложь

забыл исправить...
2 acht
 
17.11.20
22:53
(0) Там тупо кэшируются результаты вызова конструктора, тебе возвращается последняя ссылка. С ОписаниеТипа тоже самое.
3 Ненавижу 1С
 
гуру
17.11.20
23:04
(2) проверялось? а если один объект "приедет" на сервер с клиента, а второй создастся по-месту?
4 acht
 
17.11.20
23:06
(3) Конструктор-то вызовется в любом случае
5 Ненавижу 1С
 
гуру
17.11.20
23:08
(4) но он же вызовется как-бы в разных местах, один на сервере, другой на клиенте

это возможное, но сложное объяснение
6 acht
 
17.11.20
23:13
(5)
ш1 = Новый Шрифт("Arial");

Параметры = Новый Массив;
Параметры.Добавить("Arial");
ш2 = Новый("Шрифт", Параметры);

Сообщить(ш1 = ш2);

=)
7 acht
 
17.11.20
23:19
(6)+

Чтение = Новый ЧтениеXML;
Чтение.УстановитьСтроку("<Font xmlns=""http://v8.1c.ru/8.1/data/ui""; xmlns:xs=""http://www.w3.org/2001/XMLSchema""; xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance""; xsi:type=""Font"" faceName=""Arial"" height=""0"" bold=""false"" italic=""false"" underline=""false"" strikeout=""false"" kind=""Absolute"" scale=""100""/>");

ш3 =СериализаторXDTO.ПрочитатьXML(Чтение);

Сообщить(ш2 = ш3);

=)