Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Тип Шрифт сравнивается не по равенстве ссылок

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

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

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

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


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

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

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

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

=)
   acht
 
7 - 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);

=)

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.