Выполняет преобразование из строки, полученной из текста элемента или значения атрибута XML, в значение в соответствии с указанным типом. Выполняет действие обратное действию метода XMLСтрока.
Синтаксис
XMLЗначение(<Тип>, <СтрокаXML>)Примеры платформы
ЧитаемДату = Ложь;
Пока ЧтениеXML.Прочитать() Цикл
Если ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
Если ЧтениеXML.ЛокальноеИмя = "Дата" Тогда
ЧитаемДату = Истина;
КонецЕсли;
ИначеЕсли ЧтениеXML.ТипУзла = ТипУзлаXML.Текст Тогда
Если ЧитаемДату Тогда
Дата = XMLЗначение(Тип("Дата"), ЧтениеXML.Значение);
КонецЕсли
КонецЕсли
КонецЕслиПолное описание, параметры и ограничения
Глобальный контекст.XMLЗначение (Global context.XMLValue)
Глобальный контекст (Global context)
XMLЗначение (XMLValue)
Доступен, начиная с версии 8.0.
Синтаксис:
XMLЗначение(<Тип>, <СтрокаXML>)
Параметры:
<Тип> (обязательный)
Тип: Тип.
Тип, значение которого надо получить при преобразовании из строкового представления XML.
<СтрокаXML> (обязательный)
Тип: Строка.
Строка, содержащая строковое представление значения, полученное из XML.
Возвращаемое значение:
Тип: Null, Булево, Число, Строка, Дата, УникальныйИдентификатор, ДвоичныеДанные, ХранилищеЗначения; значения перечислений, значения системных перечислений (ВидСчета, ВидДвиженияБухгалтерии, ВидДвиженияНакопления, ДопустимыйЗнак, ДопустимаяДлина, ЧастиДаты, Неопределено или все ссылки на объекты базы данных.
Описание:
Выполняет преобразование из строки, полученной из текста элемента или значения атрибута XML, в значение в соответствии с указанным типом. Выполняет действие обратное действию метода XMLСтрока.
Доступность:
Тонкий клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.
Пример:
ЧитаемДату = Ложь;
Пока ЧтениеXML.Прочитать() Цикл
Если ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
Если ЧтениеXML.ЛокальноеИмя = "Дата" Тогда
ЧитаемДату = Истина;
КонецЕсли;
ИначеЕсли ЧтениеXML.ТипУзла = ТипУзлаXML.Текст Тогда
Если ЧитаемДату Тогда
Дата = XMLЗначение(Тип("Дата"), ЧтениеXML.Значение);
КонецЕсли
КонецЕсли
КонецЕсли
См. также:
Глобальный контекст, метод XMLСтрока
Использование в версии:
Доступен, начиная с версии 8.0.
Методическая информация
Практические примеры
Выяснить, почему число и дата по-разному отображаются у пользователей
Сравниваем региональные настройки базы и сеанса. Для обмена показываем отдельный, независимый от оформления XML-формат числа.
Где и как запускать
В учебной базе создайте серверный общий модуль УчебныеЗадачи. Вставьте приведённые функции и процедуру целиком в модуль, не внутрь другой процедуры. Вызовите УчебныеЗадачи.ВыполнитьПример() из серверного обработчика команды учебной обработки. Каждый урок запускайте отдельно, без дублирования одноимённых процедур.
Подготовка
В учебной базе выполните код на сервере. Читаются настройки, не строки справочников и документов.
В коде нет вызовов УстановитьРегиональныеНастройки, изменения индексов, монопольного режима или завершения сеансов.
Результаты зависят от настроек вашей учебной базы и пользователя: фиксированных значений для всех конфигураций нет.
Процедура ВыполнитьПример() Экспорт
База = ПолучитьРегиональныеНастройкиИнформационнойБазы();
Сеанс = ПолучитьРегиональныеНастройкиСеанса();
Сравнение = Новый ТаблицаЗначений;
Сравнение.Колонки.Добавить("Параметр");
Сравнение.Колонки.Добавить("База");
Сравнение.Колонки.Добавить("Сеанс");
ДобавитьСтрокуСравнения(Сравнение, "Код локализации", База.КодЛокализации, Сеанс.КодЛокализации);
ДобавитьСтрокуСравнения(Сравнение, "Язык интерфейса", "Не задаётся этим объектом базы", Сеанс.КодЯзыкаИнтерфейса);
ДобавитьСтрокуСравнения(Сравнение, "Использовать настройки сеанса", База.ИспользоватьНастройкиТекущегоСеанса, "Источник настроек сеанса");
ДобавитьСтрокуСравнения(Сравнение, "Первый день недели", База.ПервыйДеньНедели, Сеанс.ПервыйДеньНедели);
ДобавитьСтрокуСравнения(Сравнение, "Представление Истина", База.ПредставлениеБулевоИстина, Сеанс.ПредставлениеБулевоИстина);
ДобавитьСтрокуСравнения(Сравнение, "Представление Ложь", База.ПредставлениеБулевоЛожь, Сеанс.ПредставлениеБулевоЛожь);
ДобавитьСтрокуСравнения(Сравнение, "Отрицательные числа", База.ПредставлениеОтрицательныхЧисел, Сеанс.ПредставлениеОтрицательныхЧисел);
ДобавитьСтрокуСравнения(Сравнение, "Разделитель групп", База.РазделительГруппЦифрЧисел, Сеанс.РазделительГруппЧисел);
ДобавитьСтрокуСравнения(Сравнение, "Разделитель дробной части", База.РазделительДробнойЧастиЧисел, Сеанс.РазделительДробнойЧастиЧисел);
ДобавитьСтрокуСравнения(Сравнение, "Группировка цифр", База.ФорматГруппировкиЦифрЧисел, Сеанс.ФорматГруппировкиЦифрЧисел);
ДобавитьСтрокуСравнения(Сравнение, "Формат даты", База.ФорматПредставленияДаты, Сеанс.ФорматПредставленияДаты);
ДобавитьСтрокуСравнения(Сравнение, "Формат времени", База.ФорматПредставленияВремени, Сеанс.ФорматПредставленияВремени);
ДобавитьСтрокуСравнения(Сравнение, "Дополнительное свойство группировки сеанса", "Нет такого свойства", Сеанс.ГруппировкаЦифрЧисел);
Для Каждого СтрокаСравнения Из Сравнение Цикл
Сообщить(СтрокаСравнения.Параметр + ": база [" + СтрокаСравнения.База
+ "]; сеанс [" + СтрокаСравнения.Сеанс + "]");
КонецЦикла;
Сообщить(Сравнение.Количество() = 13);
Сумма = 1234.5;
Сообщить("Представление для человека: " + Формат(Сумма, "ЧДЦ=2"));
XMLЧисло = XMLСтрока(Сумма);
Сообщить("Машинный формат XML: " + XMLЧисло);
ВосстановленнаяСумма = XMLЗначение(Тип("Число"), XMLЧисло);
Сообщить(ВосстановленнаяСумма = Сумма);
Сообщить(ТипЗнч(ВосстановленнаяСумма) = Тип("Число"));
КонецПроцедуры
Процедура ДобавитьСтрокуСравнения(Таблица, Название, ЗначениеБазы, ЗначениеСеанса)
СтрокаСравнения = Таблица.Добавить();
СтрокаСравнения.Параметр = Название;
СтрокаСравнения.База = Строка(ЗначениеБазы);
СтрокаСравнения.Сеанс = Строка(ЗначениеСеанса);
КонецПроцедурыРазбор по шагам
Два метода возвращают разные объекты: настройки базы и настройки текущего сеанса.
ИспользоватьНастройкиТекущегоСеанса определяет, нужно ли использовать параметры сеанса для представления значений.
Пустая строка, 0 для дня недели и -1 для отрицательных чисел могут означать наследование настройки, а не ошибку.
Сравнение содержит 13 конкретных параметров; язык интерфейса относится к сеансу и не равен обязательно локализации чисел.
Формат создаёт представление для человека. XMLСтрока/XMLЗначение дают отдельный типизированный цикл для согласованного машинного контракта.
Число после XML-цикла остаётся 1234.5; ни один параметр базы или сеанса не изменяется.
Как проверить результат
Выводятся 13 строк сравнения; первая итоговая проверка Истина.
После XML-цикла значение равно 1234.5 и его тип Число.
Проверьте разделители и формат даты в другой учебной базе/сеансе: возможны отличия при той же числовой сумме.
Ожидаемый результат
Получен понятный паспорт оформления чисел и дат с отделением локального представления от машинного формата.
На что обратить внимание
Нельзя разбивать произвольное Формат(Число) по запятой и считать это надёжным CSV или JSON.
XML-лексическое представление не заменяет JSON-сериализатор и не задаёт валюту суммы.
Пример читает региональные настройки, но не переключает язык или локализацию рабочего сеанса.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.
Передать число, дату и логическое значение в XML-формате
XMLСтрока формирует стандартное лексическое представление, XMLЗначение восстанавливает значение указанного типа без зависимости от запятой в интерфейсе.
Где и как запускать
Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.
Подготовка
Можно выполнить на сервере или клиенте, доступном этим глобальным функциям.
Дату трактуем как значение 1С без согласованного внешнего часового пояса; пример не описывает обмен UTC.
Цена = 12.35;
ЦенаXML = XMLСтрока(Цена);
ПрочитаннаяЦена = XMLЗначение(Тип("Число"), ЦенаXML);
Сообщить(ЦенаXML);
Сообщить(ПрочитаннаяЦена = Цена);
ПризнакXML = XMLСтрока(Истина);
ПрочитанныйПризнак = XMLЗначение(Тип("Булево"), ПризнакXML);
Сообщить(ПризнакXML);
Сообщить(ПрочитанныйПризнак);
Момент = Дата(2026, 10, 2, 14, 30, 0);
МоментXML = XMLСтрока(Момент);
ПрочитанныйМомент = XMLЗначение(Тип("Дата"), МоментXML);
Сообщить(МоментXML);
Сообщить(ПрочитанныйМомент = Момент);Разбор по шагам
Преобразуем число функцией XMLСтрока: в лексическом XML используется точка, а не локальная запятая.
XMLЗначение получает сначала тип результата, затем строку.
Повторяем преобразование для Булево и Дата и сравниваем значения, не формат вывода интерфейса.
Как проверить результат
Строка цены 12.35; обратное сравнение даёт Истина.
Логическое представление true, дата восстанавливается равной исходной; все сравнения дают Истина.
Ожидаемый результат
Простые значения преобразованы туда и обратно без ручного форматирования.
На что обратить внимание
XMLЗначение не читает целый документ <product>...</product>: ему нужна лексическая строка отдельного значения.
Для дат внешнего API отдельно согласуйте формат, смещение времени и семантику UTC; значение Дата само не решает этот вопрос.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.