|
Неподдельный гурутест для программиста 1С 🠗 (Волшебник 08.09.2022 09:08) | ☑ | ||
---|---|---|---|---|
0
TormozIT
гуру
29.08.22
✎
16:23
|
Предлагаю всем протестировать себя и, не выполняя следующий код, предсказать вычисленные значения переменных.
АдминистрированиеСервера = Новый АдминистрированиеСервера = Новый АдминистрированиеСервера; КвалификаторыЧисла = Новый КвалификаторыЧисла = Новый КвалификаторыЧисла; ОбработкаКартинок = Новый ОбработкаКартинок = Новый ОбработкаКартинок; ОписаниеОповещения = Новый ОписаниеОповещения = Новый ОписаниеОповещения; ОписаниеТипов1 = Новый ОписаниеТипов("Число, Строка") = Новый ОписаниеТипов("Число, Строка"); ОписаниеТипов2 = Новый ОписаниеТипов("Строка, Число") = Новый ОписаниеТипов("Число, Строка"); ПараметрыЗаписиXML = Новый ПараметрыЗаписиXML = Новый ПараметрыЗаписиXML; ПолеКомпоновкиДанных = Новый ПолеКомпоновкиДанных("ы") = Новый ПолеКомпоновкиДанных("ы"); СжатиеДанных = Новый СжатиеДанных = Новый СжатиеДанных; СтандартныйПериод = Новый СтандартныйПериод = Новый СтандартныйПериод; Структура = Новый Структура("ы") = Новый Структура("ы"); ФиксированнаяСтруктура = Новый ФиксированнаяСтруктура("ы") = Новый ФиксированнаяСтруктура("ы"); Я смог правильно предсказать НЕ все. При этом я пользовался синтакс-помощником и сайтом ИТС сначала чтобы предсказать, а потом чтобы объяснить результат. Но в ряде случаев не смог найти объяснение фактическим результатам. Попробуй теперь ты! |
|||
1
trad
29.08.22
✎
16:29
|
СП можно пользоваться?
|
|||
2
TormozIT
гуру
29.08.22
✎
16:31
|
(1) Я же пользовался. Так что это не стыдно =)
|
|||
3
Ненавижу 1С
гуру
29.08.22
✎
16:32
|
Не со всеми типами я работал, но все-таки предположу, что если тип имеет только read-only свойства, или не имеет изменяемых (определяется свойствами полностью в конструкторе) - то значения объектов будут равны, например "Шрифт", иначе не равны (равенство ссылок)
|
|||
4
Fragster
гуру
29.08.22
✎
16:33
|
Могу предположить, что если есть методы, то <>, если нет, то зависит от реализации
|
|||
5
Fragster
гуру
29.08.22
✎
16:34
|
по хорошему, все, что создается с Новый не должно быть равно без использования магии типа сериализации или valueOf
|
|||
6
Галахад
гуру
29.08.22
✎
16:34
|
8 из 12. Не гуру.
Кстати, почему в "консоли кода" ПараметрыЗаписиXML маскируется? |
|||
7
Fragster
гуру
29.08.22
✎
16:34
|
проверять я это, конечно, не буду
|
|||
8
СеменовСемен
29.08.22
✎
16:35
|
бессмысленно сравнивать объекты по ссылке на них
|
|||
9
Asmody
29.08.22
✎
16:37
|
(0) Любая из 12 строк в живом коде => Вон из профессии!
|
|||
10
СеменовСемен
29.08.22
✎
16:38
|
я бы выбрал так
ПараметрыЗаписиXML = Новый ПараметрыЗаписиXML = Новый ПараметрыЗаписиXML; ПолеКомпоновкиДанных = Новый ПолеКомпоновкиДанных("ы") = Новый ПолеКомпоновкиДанных("ы"); СжатиеДанных = Новый СжатиеДанных = Новый СжатиеДанных; запускать влом |
|||
11
trad
29.08.22
✎
16:40
|
ОбработкаКартинок, СжатиеДанных - истина
остальные - ложь не проверял |
|||
12
trad
29.08.22
✎
16:46
|
(11) +
проверил, загрустил |
|||
13
vde69
29.08.22
✎
16:52
|
я так вижу, тут вопрос в том как идет сравнение, по значению или по ссылке
АдминистрированиеСервера = ложь КвалификаторыЧисла = Истина ОбработкаКартинок = ? не знаю что это ОписаниеОповещения = ложь ОписаниеТипов1 = истина ОписаниеТипов2 = истина ПараметрыЗаписиXML = ? ПолеКомпоновкиДанных = ложь СжатиеДанных = Истина СтандартныйПериод = ложь Структура = ? ФиксированнаяСтруктура = истина |
|||
14
TormozIT
гуру
29.08.22
✎
16:56
|
(6) Возьми консоль кода ИР. Там не маскируется.
|
|||
15
Святофор
29.08.22
✎
16:57
|
(13) по ссылка или значению может идти передача
сравнение это IComparable и реализация компоратора |
|||
16
СеменовСемен
29.08.22
✎
16:58
|
(15) скорее всего там синглтон в основе равных
|
|||
17
Святофор
29.08.22
✎
16:59
|
(16) это как?
|
|||
18
trad
29.08.22
✎
16:59
|
(15) оператор сравнения реализуется для типа
|
|||
19
Галахад
гуру
29.08.22
✎
17:02
|
(14) Как раз в ней и смотрю. Может версия старая. 6_6.27.1
Такой код не показывает результата: ПараметрыЗаписиXML = 1; |
|||
20
СеменовСемен
29.08.22
✎
17:03
|
(17) не знаешь что такое синглтон?
это когда объект всегда один |
|||
21
Святофор
29.08.22
✎
17:03
|
(18) а какой смысл сравнивать два типа?
два объекта одного класса надо сравнивать - чтобы сортировать или эквивалентность проверить... |
|||
22
TormozIT
гуру
29.08.22
✎
17:04
|
(19) Так много лет пользуешься и даже не научился версию ИР получать =)
У меня работает https://i.imgur.com/HkAEGEB.png |
|||
23
Святофор
29.08.22
✎
17:04
|
(20) я знаю, только это здесь причем? я не понял
|
|||
24
vde69
29.08.22
✎
17:05
|
(20) типа как в php можно создавать объекты класса а можно использовать класс как сингл объект...
|
|||
25
СеменовСемен
29.08.22
✎
17:05
|
(23) ну так значения равны ибо по факту это один и тот же объект
|
|||
26
trad
29.08.22
✎
17:06
|
(21) ок, оператор сравнения реализуется для класса
|
|||
27
Галахад
гуру
29.08.22
✎
17:07
|
(22) Зачем мне? Хорошо работает, зачем что-то менять. :-)
|
|||
28
free dude
29.08.22
✎
17:07
|
(0) why?
|
|||
29
Святофор
29.08.22
✎
17:08
|
(25) т.е. не смотря на Новый - там синглтон? накрутили...
|
|||
30
СеменовСемен
29.08.22
✎
17:08
|
(28) а зачем задачки про шарики решают?
|
|||
31
СеменовСемен
29.08.22
✎
17:09
|
(29) синглтон - он всегда Новый ...
Там не совсем синглтоны, а синглтоны с параметрами. Это правильнее называть мемоизацией |
|||
32
free dude
29.08.22
✎
17:10
|
(30) Коты задачки про шарики решают, потому что им делать нечего. А вы зачем?
|
|||
33
СеменовСемен
29.08.22
✎
17:11
|
(32) а зачем ты сюда пришел?
ответ на все эти вопросы - одинаковый |
|||
34
free dude
29.08.22
✎
17:12
|
(33) Посмотреть на тест гуру 1С, а это херня какая то на постном масле.
|
|||
35
Святофор
29.08.22
✎
17:12
|
(31) синглтон - он всегда Новый ...
он один раз Новый да и получение через Новый скрывают. Экземпляр синглтона предоставляет статической метод класса |
|||
36
Lama12
29.08.22
✎
17:33
|
Не удивлюсь, если от версии к версии платформы, результаты будут разные.
|
|||
37
Fragster
гуру
29.08.22
✎
17:36
|
Вообще в работе часто приходится сравнивать поля компоновки, периоды и описания типов (включая внутренности) и там сравнение работает. С остальными сказать ничего не могу
|
|||
38
СеменовСемен
29.08.22
✎
17:45
|
(37) ну чтож победителю - медаль
|
|||
39
TormozIT
гуру
29.08.22
✎
17:51
|
(36) Ну это ты прям сильно предъявил платформе. Я проверял выборочно разные версии - везде одинаковые результаты.
|
|||
40
TormozIT
гуру
29.08.22
✎
17:53
|
(34) Возможно у каждого гуру свой тест и этот тест не для тебя?
|
|||
41
Конструктор1С
29.08.22
✎
18:00
|
(0) зачем так извращаться?
|
|||
42
free dude
29.08.22
✎
18:07
|
(40) а что дает этот тест? В чем его суть? в 90% случаев он бесполезный и как правильно заметили в разных платформах может давать разные результаты.
|
|||
43
Святофор
29.08.22
✎
18:11
|
(42) раз до этого добрался значит уже остальное все охвачено. и начались изыски в стиле "Веселый 1С". Или "CLR via C#"
|
|||
44
TormozIT
гуру
29.08.22
✎
19:21
|
(41) В чем смысл жизни?
|
|||
45
Smit1C
29.08.22
✎
19:37
|
(41) просто у кого-то слишком много свободного времени... ))
|
|||
46
TormozIT
гуру
29.08.22
✎
19:38
|
В итоге как то более менее нашел объяснения всем случаям кроме СжатиеДанных. Его результат не укладывается. Вроде он - очень простой немутабельный объект, но почему то он уникальные экземпляры имеет. Возможно его проектировали с прицелом на какую то мутабельность, но сложилось. В итоге так и оставили.
|
|||
47
TormozIT
гуру
29.08.22
✎
19:42
|
(46) [поправка] НЕ сложилось
|
|||
48
Кирпич
29.08.22
✎
20:48
|
Знание бесполезной ерунды не делает никого гуру. Это тест для задротов, а не для гуру. Никто в реальной жизни такое не сравнивает.
|
|||
49
Святой Нос
29.08.22
✎
21:33
|
(44) > В чем смысл жизни?
42 |
|||
50
senior_pomidor
30.08.22
✎
06:36
|
(48) это даже не тест .не о чем хрень
|
|||
51
Irbis
30.08.22
✎
06:47
|
(45) Так много, что даже отдохнуть некогда. Отдых — это моё самое занятое время, не могу отвлечься ни на мгновение.
|
|||
52
Fragster
гуру
01.09.22
✎
12:10
|
(48) см (37)
|
|||
53
Ботаник Гарден Меран
01.09.22
✎
12:30
|
У сжатия данных есть [разная] степень, в конструкторе она по умолчанию.
Не тяну на гуру совсем, 4 из 12. |
|||
54
TormozIT
гуру
01.09.22
✎
16:49
|
(53) В чем принципиальное отличие СжатиеДанных от КвалификаторыЧисла, которое не размножается?
|
|||
55
Ботаник Гарден Меран
01.09.22
✎
16:59
|
(54)
Ну я же не гуру. Вообще, половина пунктов зависит от того, с какой ноги платформописатели встали утром. Мне тоже странно, что Новый ПараметрыЗаписиXML = Новый ПараметрыЗаписиXML а СжатиеДанных(-1) <> СжатиеДанных(-1) "Так получилось". |
|||
56
Ботаник Гарден Меран
01.09.22
✎
17:03
|
Плюс на партнерке добавил, но бесполезное это дело.
Оно и практически не особо нужно, а по давней традиции тем более делать не будут. |
|||
57
TormozIT
гуру
08.09.22
✎
09:00
|
Экспериментально полученный список кэшируемых (для которых сравнение даст Истина) объектов:
ВыражениеКомпоновкиДанных ВыражениеСхемыЗапроса Граница Действие ИдентификаторВыгрузкиДанныхСистемыВзаимодействия ИдентификаторОбсужденияСистемыВзаимодействия ИдентификаторПользователяСистемыВзаимодействия ИдентификаторПриложенияСистемыВзаимодействия ИдентификаторСообщенияСистемыВзаимодействия ИспользованиеСобытияЖурналаРегистрации Картинка КвалификаторыДаты КвалификаторыДвоичныхДанных КвалификаторыСтроки КвалификаторыЧисла КонтекстОбсужденияСистемыВзаимодействия МоментВремени МоментВремениСУточнениемПериода НастройкиСериализацииJSON ОписаниеИспользованияСобытияДоступЖурналаРегистрации ОписаниеИспользованияСобытияОтказВДоступеЖурналаРегистрации ОписаниеТипов ПараметрКомпоновкиДанных ПараметрыЗаписиJSON ПараметрыЗаписиXML ПараметрыЧтенияXML ПолеКомпоновкиДанных СвязьПоТипу СвязьПоТипуКомпоновкиДанных СтандартнаяДатаНачала СтандартныйПериод Стиль УникальныйИдентификатор ФорматированнаяСтрока Цвет Шрифт |
|||
58
DTX 4th
08.09.22
✎
09:44
|
Бесполезная хрень. Абсолютно не применимо на практике. Достаточно знать чем передача по ссылке отличается от передачи по значению.
|
|||
59
TormozIT
гуру
08.09.22
✎
20:01
|
Продолжаем разговор. Нужно снова предсказать результаты
Ф1 = Метаданные = Метаданные; Ф2 = Метаданные.Справочники = Метаданные.Справочники; Ф3 = Метаданные.Справочники.Валюты = Метаданные.Справочники.Валюты; Ф4 = Метаданные.Справочники.Валюты = Метаданные.Справочники.Валюты.Реквизиты.НаименованиеПолное.Родитель(); Ну тут я уже сталкивался, т.к. метаданные часто использую. Поэтому я угадал все. |
|||
60
xkanix
09.09.22
✎
08:02
|
(57)
+ ключ записи регистров + строка группировки и ключ строки дин. списка + всякие данные формы + "очевидные" ссылки + совсем очевидные числа, строки и пр. ну и наверное ещё куча их P.S. "кеширование" тут ну прямо вот вообще не при чём, хотя местами и правда в некотором виде присутствует. |
|||
61
TormozIT
гуру
09.10.22
✎
11:59
|
(60) Согласен. "Кэширование" применяет лишь в некоторых случаях. А в большинстве случаев все таки сравнение через сериализацию.
Еще нашел интересную реализацию оператора сравнения для объекта ОбластьЯчеекТабличногоДокумента. Эти объекты размножаются и не равны всегд, кроме копирования ссылки. Например выражение Элемент.Область(Y, X) = Элемент.Область(Y, X) дает Ложь для любых разрешенных параметров. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |