Коллеги, доброго дня.

У объекта Платформы ОбъектXDTO есть метод Установить() с двумя вариантами синтаксиса:

Не могу сообразить как именно нужно использовать вариант синтаксиса по выражению XPath.

У него есть лишь один параметр <Выражение>, в котором требуется указать выражение XPath, т.е. путь к свойству.

А параметра для устанавливаемого значения - нет.

Примеров использования данного синтаксиса не обнаружил ни в справке, ни в других источниках, включая этот форум.

Поделитесь, пожалуйста, опытом: как правильно использовать этот метод?
---
Никогда не использовал этот метод, но ради интереса попробовал. Вот что получилось:

Во-первых, если сделать по первому варианту синтаксиса (по строке), для примитивного XDTO-объекта с одним свойством ИмяСвойства, ОбъектXDTO.Установить("ИмяСвойства"), то будет ошибка "недостаточно фактических параметров". Это уже говорит о том что в С-П скорее всего есть ошибка, и второй параметр (устанавливаемое значение) всё же требуется.

Попробуем его указать -- ОбъектXDTO.Установить("ИмяСвойства", "новое значение"). Ну ок, работает. Первый вариант, указание XPath, значение свойства установилось.
Попробуем усложнить, создадим вложенную структуру типов в XDTO, и попробуем XPath посложнее: ОбъектXDTO.Установить("ИмяСвойства1/ИмяСвойства2", "новое значение"). Тоже ок, всё сработало, установилось значение для вложенного свойства, с помощью XPath. XPath'ы типа ".ИмяСвойства1" тоже работают.

Т.к. в 1С XPath ограничен только одним значением, поэтому ни получить все свойства, ни установить сразу несколько с помощью XPath типа "//ИмяСвойства2" нельзя. ("Строго говоря, это не совсем XPath, а скорее несколько модифицированное подмножество XPath." - (с) ИТС)
---
да просто в СП ошибка.
На самом деле вариант синтаксиса должен выглядеть так:

Вариант синтаксиса: По выражению XPath

Синтаксис:

Установить(<Выражение>, <Значение>)

Просто 2 варианта, или с указанием СвойствоXDTO, или строковое выражение.
---
XPath

Вот навигация по дереву

```1c
    ЧтениеXML = Новый ЧтениеXML;
    ЧтениеXML.УстановитьСтроку(Текст);
    ПостроительDOM = Новый ПостроительDOM;
    ДанныеDOM = ПостроительDOM.Прочитать(ЧтениеXML);
    ЧтениеXML.Закрыть();

    УзелКонтекста = ДанныеDOM.ПервыйДочерний;
    Разыменователь = Новый РазыменовательПространствИменDOM(УзелКонтекста);

    РезультатXPath = ДанныеDOM.ВычислитьВыражениеXPath("Объект[@Тип="СправочникСсылка.ЯзыкиНародовМира"]", УзелКонтекста, Разыменователь);
    Объект = РезультатXPath.ПолучитьСледующий();
    Пока НЕ Объект = Неопределено Цикл
    ГУИД = ДанныеDOM.ВычислитьВыражениеXPath("Ссылка/Свойство[@Имя = "{УникальныйИдентификатор}"]/Значение", Объект, Разыменователь).ПолучитьСледующий().ТекстовоеСодержимое;
    Код = ДанныеDOM.ВычислитьВыражениеXPath("Ссылка/Свойство[@Имя = "Код"]/Значение", Объект, Разыменователь).ПолучитьСледующий().ТекстовоеСодержимое;
    Наименование = ДанныеDOM.ВычислитьВыражениеXPath("Свойство[@Имя = "Наименование"]/Значение", Объект, Разыменователь).ПолучитьСледующий().ТекстовоеСодержимое;
    ПометкаУдаления = ДанныеDOM.ВычислитьВыражениеXPath("Свойство[@Имя = "ПометкаУдаления"]/Значение", Объект, Разыменователь).ПолучитьСледующий().ТекстовоеСодержимое;
    Сообщить(СтрШаблон("%1-%2-%3-%4", ГУИД, Код, Наименование, ПометкаУдаления));
    Объект = РезультатXPath.ПолучитьСледующий();
    КонецЦикла
```

Это читаете?
https://its.1c.ru/db/v837doc#bookmark:dev:TI000000771
---
Это читаете?
Тимур, "это" я конечно же читал. Если покажете где там пример установки значения свойства ОбъектаXDTO по выражению XPath, буду безмерно благодарен.

Что касается, приведенного вами примера кода, то он относится во-первых к объекту DOM, а не ОбъектXDTO, а во-вторых, описывает получение значения свойства, а не его установку.
---
https://its.1c.ru/db/v837doc#bookmark:dev:TI000000774
---
Сергей, ваша краткость достойна подражания.
Эту ссылку мне уже кидали заработчики стартманей публикацией сообщений в форуме. Разве что на чуть соседний пункт документации.
Там я всё до дыр зачитал еще до размещения вопроса (думал что достаточно ясно это в стартовом сообщении уточнил). Про установку значения укажете где там написано?
---
да просто в СП ошибка.
На самом деле вариант синтаксиса должен выглядеть так:

Вариант синтаксиса: По выражению XPath

Синтаксис:

Установить(<Выражение>, <Значение>)

Просто 2 варианта, или с указанием СвойствоXDTO, или строковое выражение.
---
Никто не знает? На партнерском форуме тоже молчок...
---
Но, бро, очевидно же, выражение XPath содержит и свойство, и значение
---
выражение XPath содержит и свойство, и значение
Михаил, научите очевидному? Особенно интересен вариант когда значение - не примитивный тип, а тоже ОбъектXDTO.
---
ок. от вас - собственно ваш ОбъектXDTO и выражение, которым вы пытаетесь установить значение свойству
---
Я уж было подумал что вы и правда знаете. Можно не отвечать, я не стану продолжать.
---
Хочешь по-чесноку, бро? Мне безразлично, что ты думаешь. Особенно когда ты думаешь, что кто-то будет работать вместо тебя.
---
Сообщение было скрыто модератором.
---
Вы с попкорном? =)
---
Сообщение было скрыто модератором.
---
да ладно муксун уже выловлен, съешь как-нибудь
---
Сообщение было скрыто модератором.
---
Я смотрю, форум Инфостарта стремится превратиться в новую Мисту. Подозреваю, что скоро надо будет на СтекОверфлоу писать вопросы по 1С чтобы что-то дельное прочитать в ответе.
---
Ок, ты прав, товарищь. Давай, напишем что-нибудь дельное. Пусть кое-кому станет стыдно кушать муксуна в одно лицо.

Но мне, скажу сразу, не скрывая, не хватает твоей основательности в подходе. О чем мы с тобой будем писать что-нибудь дельное? Что ты обычно читаешь на СтекОверфлоу ?
---
Сообщение было скрыто модератором.
---
Отличный стол! Да и судя по количеству пивных бокалов, лицо точно не одно. Так что лучше порадуемся за коллегу!
Дельного в чате ждать уже глупо - пойду и себе налью вкусняшки.
---
Ответил на партфоруме.
---
Ответил на партфоруме.
Александр, спасибо огромное!!! У меня руки не дошли пока до экспериментов (задача отложена немного из-за других суперсрочных). Продублируйте сюда пожалуйста, от своего имени - чтобы те, кто придет по поиску, могли воспользоваться. Ну и чтобы ответ пометить как решение.
---
Никогда не использовал этот метод, но ради интереса попробовал. Вот что получилось:

Во-первых, если сделать по первому варианту синтаксиса (по строке), для примитивного XDTO-объекта с одним свойством ИмяСвойства, ОбъектXDTO.Установить("ИмяСвойства"), то будет ошибка "недостаточно фактических параметров". Это уже говорит о том что в С-П скорее всего есть ошибка, и второй параметр (устанавливаемое значение) всё же требуется.

Попробуем его указать -- ОбъектXDTO.Установить("ИмяСвойства", "новое значение"). Ну ок, работает. Первый вариант, указание XPath, значение свойства установилось.
Попробуем усложнить, создадим вложенную структуру типов в XDTO, и попробуем XPath посложнее: ОбъектXDTO.Установить("ИмяСвойства1/ИмяСвойства2", "новое значение"). Тоже ок, всё сработало, установилось значение для вложенного свойства, с помощью XPath. XPath'ы типа ".ИмяСвойства1" тоже работают.

Т.к. в 1С XPath ограничен только одним значением, поэтому ни получить все свойства, ни установить сразу несколько с помощью XPath типа "//ИмяСвойства2" нельзя. ("Строго говоря, это не совсем XPath, а скорее несколько модифицированное подмножество XPath." - (с) ИТС)
---
Супер! Спасибо! Вот ответ профессионала!

PS.
За "ради интереса попробовал" специально, из благодарности, вознаграждение поднял. Еще раз спасибо!
---
да уж... куда нам непрофессионалам.
Нам достаточно логики и пробовать запускать не понадобилось :)
---
Олег, я понимаю что вы считаете что ваш ответ был раньше, но на деле Александр написал первым и более развернуто (на партнерском). Сюда я сам попросил его продублировать.
В качестве утешительного приза отправил и вам вознаграждение (в начальном размере).

И да, вы тоже профессионал: ваш пост также по делу, без воды и заявлений об очевидности.
---
Вы не правильно поняли мой пост. Я не выпрашивал вознаграждения. У меня его и так хватает. Просто сам факт, что ответ был проигнорирован. Но, в любом случае - спасибо.
---
ответ был проигнорирован
Олег, ни в коем случае ваш пост не проигнорирован. Просто он действительно появился после сообщения Александра и моей просьбы продублировать его ответ с партнерки здесь.

Совершенно не расценивал ваш пост о профессионализме как выпрашивание. Скорее, как указание на сложившуюся не очень справедливую ситуацию. Постарался исправить её в меру своего понимания справедливости. Надеюсь что и вы считаете примерно также.