Skip to content

Несовместимость/некорректность ЗаписьXML.ЗаписатьТипДокумента. Баги в 1С #1707

Description

@Mr-Rm

Опишите ошибку
Медод ЗаписьXML.ЗаписатьТипДокумента() работает несовместмо с 1С.
В самой платформе (до 8.3.27.2214 включительно) содержатся ошибки.

Воспроизведение ошибки

  1. В 1С не работает ЗаписатьТипДокумента с двумя параметрами:
ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.УстановитьСтроку();
ЗаписьXML.ЗаписатьТипДокумента("a","b"); //!!
Результат = ЗаписьXML.Закрыть();

: Недостаточно фактических параметров

  1. В 1С нет проверки первого параметра на корректность!
ЗаписьXML = Новый ЗаписьXML;
ИмяФайла = ПолучитьИмяВременногоФайла("xml");
ЗаписьXML.ОткрытьФайл(ИмяФайла);  
ИмяДокумента = "html><script xmlns=""http://www.w3.org/1999/xhtml""><![CDATA[alert('PWNED!');]]></script>";
ЗаписьXML.ЗаписатьТипДокумента(ИмяДокумента ," ",);
ЗаписьXML.Закрыть();

...и открываем файл ИмяФайла...

Дополнительная информация
Далее приведены только отличающиеся результаты вызовов.
Также см. примечание к п.8

  1. ЗаписьXML.ЗаписатьТипДокумента(,"2","3");
    1С: Несоответствие типов (параметр номер '1')
    OneScrpit: Пропущен обязательный параметр

  2. ЗаписьXML.ЗаписатьТипДокумента("","2","3");
    1С: Результат==<!DOCTYPE SYSTEM "2" [3]>
    OneScrpit: Внешнее исключение (System.ArgumentException): The value cannot be an empty string. (Parameter 'name')

  3. ЗаписьXML.ЗаписатьТипДокумента(" ","2","3");
    1С: Результат==<!DOCTYPE SYSTEM "2" [3]>
    OneScrpit: Внешнее исключение (System.ArgumentException): Invalid name character in ' '

  4. ЗаписьXML.ЗаписатьТипДокумента("a",,"3");
    1С: Несоответствие типов (параметр номер '2')
    OneScrpit: Пропущен обязательный параметр

  5. ЗаписьXML.ЗаписатьТипДокумента("a","","3");
    1С: Результат==<!DOCTYPE a [3]>
    OneScrpit: Результат==<!DOCTYPE a SYSTEM ""[3]>

  6. ЗаписьXML.ЗаписатьТипДокумента("a"," ","3");
    1С: Результат==<!DOCTYPE a SYSTEM " " [3]>
    OneScrpit: Результат==<!DOCTYPE a SYSTEM " "[3]>
    Здесть отличие в пробеле между " и [. Оно сохраняется всегда при наличии 3-го параметра.

  7. ЗаписьXML.ЗаписатьТипДокумента("a","2","");
    1С: Результат==<!DOCTYPE a SYSTEM "2">
    OneScrpit: Результат==<!DOCTYPE a SYSTEM "2"[]>

  8. ЗаписьXML.ЗаписатьТипДокумента("a","2","3","");
    1С: Результат==<!DOCTYPE a PUBLIC "2" "3">
    OneScrpit: Результат==<!DOCTYPE a PUBLIC "2" "3"[]>

Кто где прав? Какие случаи требуют исправления?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions