|
Циклические ссылки при преобразовании в строку вызывают падение платформы. | ☑ | ||
---|---|---|---|---|
0
Chai Nic
07.11.13
✎
11:59
|
Очевидно, что их в строку не преобразуешь, но платформа должна хотя бы внятно ругаться.. а не падать молча.
Тестовый пример: -- Список1=Новый СписокЗначений; Список2=Новый СписокЗначений; Список1.Добавить(Список2); Список2.Добавить(Список1); Сообщить(ЗначениеВСтрокуВнутр(Список1)); --- Для семерки кстати ситуация аналогичная. |
|||
1
Нуф-Нуф
07.11.13
✎
11:59
|
продолжайте наблюдения
|
|||
2
1dvd
07.11.13
✎
12:00
|
(0) ничего она никому не должна
|
|||
3
Гефест
07.11.13
✎
12:00
|
Купили суровые сибирские мужики хитрую японскую бензопилу...
|
|||
4
1dvd
07.11.13
✎
12:01
|
(3) +1 :)
|
|||
5
Cube
07.11.13
✎
12:01
|
(3) ... О! А чего это она зажужжала?!!! :D
|
|||
6
Cube
07.11.13
✎
12:02
|
+(5) Или:
.... Аааггаааа!! Сказали мужики)) |
|||
7
Зойч
07.11.13
✎
12:03
|
На сервере не падает, а ругается
|
|||
8
Кирпич
07.11.13
✎
12:04
|
(0) Если острием лопаты ударить по пальцам ноги, то пальцы ноги отвалятся без предупреждения.
|
|||
9
H A D G E H O G s
07.11.13
✎
12:12
|
(0) Защиту от дурака обычно делают для пользователей, а не для прогов.
|
|||
10
Cube
07.11.13
✎
12:16
|
(9) "а не для прогов." читать как "а не для программиздов."
|
|||
11
Chai Nic
07.11.13
✎
12:50
|
(9) От ошибок никто не застрахован, однако тупо валиться по нехватке стека для современного ПО как-то даже неприлично..
|
|||
12
ptiz
07.11.13
✎
12:52
|
Функция Рекурсия()
Рекурсия(); КонецФункции Тут тоже валится, беда прям :( |
|||
13
Ненавижу 1С
гуру
07.11.13
✎
12:56
|
а так можно:
Список1=Новый СписокЗначений; Список1.Добавить(Список1); Сообщить(Список1); |
|||
14
1dvd
07.11.13
✎
12:57
|
(14) см (14)
|
|||
15
Serginio1
07.11.13
✎
14:01
|
Ну вроде как XML не поддерживат циклические ссылки
http://msdn.microsoft.com/ru-ru/library/ms731073(v=vs.110).aspx • Циклические ссылки.Если объекты ссылаются на самих себя (даже через другие объекты), сериализация результатов репликации приводит к бесконечному циклу.(В этом случае сериализатор создает исключение SerializationException.) • Семантика.Иногда очень важно сохранить отнесение двух ссылок к одному и тому же объекту, а не к двум идентичным объектам. По этим причинам некоторые перегрузки конструктора DataContractSerializer имеют параметр preserveObjectReferences (по умолчанию ему задано значение false).Если этому параметру задано значение true, используется специальный метод кодирования ссылок на объект, который поддерживается только WCF.Если задано значение true, пример XML-кода выглядит следующим образом. Копировать <PurchaseOrder ser:id="1"> <billTo ser:id="2"><street ser:id="3">123 Main St.</street></billTo> <shipTo ser:ref="2"/> </PurchaseOrder> Пространство имен "ser" относится к стандартному пространству имен сериализации http://schemas.microsoft.com/2003/10/Serialization/.Каждый блок данных сериализуется только один раз, ему присваивается идентификационный номер, и при использовании этих блоков в будущем создается ссылка на уже сериализованные данные. Важное примечаниеВажно! Если в контракте данных XMLElement присутствует и атрибут "id", и атрибут "ref", используется атрибут "ref", а атрибут "id" игнорируется. Важно понимать существующие в этом режиме ограничения. • XML-код, создаваемый сериализатором DataContractSerializer с помощью preserveObjectReferences с заданным значением true, не поддерживает возможность взаимодействия с какими-либо другими технологиями, доступ к нему может осуществлять только другой экземпляр DataContractSerializer, для preserveObjectReferences которого также задано значение true. • Эта функция не обеспечивается поддержкой метаданных (схемы).Созданная схема действительна, только если preserveObjectReferences задано значение false. • Эта функция может замедлить процесс сериализации и десериализации.Несмотря на отсутствие необходимости в репликации данных, в этом режиме необходимо выполнять дополнительные сравнения объектов. |
|||
16
Serginio1
07.11.13
✎
14:02
|
Такой код Список1=Новый СписокЗначений;
Список2=Новый СписокЗначений; Список1.Добавить(Список2); Список2.Добавить(Список1); ЗаписатьXML=Новый ЗаписьXML; ЗаписатьXML.УстановитьСтроку(); СериализаторXDTO.ЗаписатьXML(ЗаписатьXML,список1,НазначениеТипаXML.Явное,); стр=ЗаписатьXML.Закрыть(); Сообщить(стр); Заставляет вылетать 1С |
|||
17
Chai Nic
07.11.13
✎
14:03
|
(16) О, значит и сериализатор XML тоже подвержен. "Продолжаем наблюдение".
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |