ЗаписьXML.По умолчанию

Конструкторы

Синтаксис и применение ЗаписьXML.По умолчанию в платформе 1С:Предприятие. Описание и примеры кода.

Синтаксис

Новый ЗаписьXML
Полное описание, параметры и ограничения

ЗаписьXML.По умолчанию

ЗаписьXML (XMLWriter)

По умолчанию

Синтаксис:
Новый ЗаписьXML
Методическая информация

Практические примеры

Повторно пройти настоящую выборку собственных изменений

ВыборкаДанных создается планом обмена, не результатом SQL-запроса другого типа. Номер сообщения берется из реальной записи сообщения.

Где и как запускать

Сервер собственной учебной базы; также толстый клиент или внешнее соединение, если это разрешено указанным API.

Подготовка

  1. Только собственная учебная конфигурация. Все указанные имена сначала создайте в Конфигураторе; объекты рабочей базы не заменяйте. Здесь код не запускается.

  2. Настройте свой план обмена УчебныйОбмен с собственным узлом 02 и составом УчебныеТовары, зарегистрируйте свои учебные изменения. Это действие изменяет регистрацию номеров сообщений, не полностью безвредное чтение; никаких реальных файлов или передачи сети нет.

&НаСервереБезКонтекста
Процедура ДваждыПройтиУчебныеИзменения()
    Узел = ПланыОбмена.УчебныйОбмен.НайтиПоКоду("02");
    Если Не ЗначениеЗаполнено(Узел) Тогда
        ВызватьИсключение "Создайте собственный узел 02";
    КонецЕсли;
    ЗаписьXML = Новый ЗаписьXML;
    ЗаписьXML.УстановитьСтроку();
    Сообщение = ПланыОбмена.СоздатьЗаписьСообщения();
    Сообщение.НачатьЗапись(ЗаписьXML, Узел);
    Выборка = ПланыОбмена.ВыбратьИзменения(Узел, Сообщение.НомерСообщения, Метаданные.Справочники.УчебныеТовары);
    ПервыйПроход = 0;
    Пока Выборка.Следующий() Цикл
        ПервыйПроход = ПервыйПроход + 1;
    КонецЦикла;
    Выборка.Сбросить();
    ВторойПроход = 0;
    Пока Выборка.Следующий() Цикл
        ВторойПроход = ВторойПроход + 1;
    КонецЦикла;
    Сообщение.ЗакончитьЗапись();
    ТекстСообщения = ЗаписьXML.Закрыть();
    Сообщить("Проходы: " + Строка(ПервыйПроход) + ", " + Строка(ВторойПроход));
    Сообщить("Длина оболочки сообщения: " + Строка(СтрДлина(ТекстСообщения)));
КонецПроцедуры

Разбор по шагам

  1. Создайте запись сообщения в памяти для своего узла.

  2. Получите однородную выборку с фильтром своего справочника.

  3. Сбросьте и заново посчитайте строки той же выборки.

Как проверить результат

  1. Номер сообщения не выдуман константой.

  2. Сбросить вызывается на ВыборкаДанных; при неизменной выборке количества двух проходов должны совпасть.

Ожидаемый результат

Показан возврат позиции настоящей выборки в начало.

На что обратить внимание

  1. ПланыОбмена.ВыбратьИзменения проставляет номер сообщения в регистрации изменений. Этот пример не сериализует объекты и не является полноценным сообщением обмена для приема.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Передать учебный контакт через XML в памяти

Тип ДанныеКонтакта поддерживает XML-сериализацию. Проверяем имя и собственный почтовый элемент; мобильная синхронизация при этом не выполняется.

Где и как запускать

Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.

Подготовка

  1. Учебная база, серверный контекст. ДанныеКонтакта и связанные типы доступны на сервере: для этих задач не нужен мобильный телефон, разрешение на контакты или настоящая адресная книга.

  2. Вся персона вымышлена: Учебный Ученик Тестович, организация Учебный магазин. Телефоны 000-000-01/02 — демонстрационные строки, адрес student@example.invalid учебный. Ничего не отправляйте и не звоните.

  3. Код создаёт объекты только в памяти. Он не вызывает менеджер контактов устройства, синхронизацию, геокодирование, интернет или запись справочника Партнеры/КонтактныеЛица.

Контакт = Новый ДанныеКонтакта;
Контакт.Имя = "Учебный";
Контакт.Фамилия = "Ученик";
Контакт.Отчество = "Тестович";
Контакт.АдресаЭлектроннойПочты = Новый Массив;
Контакт.АдресаЭлектроннойПочты.Добавить(Новый ЭлементДанныхКонтакта(ТипАдресаЭлектроннойПочтыДанныхКонтакта.Рабочий, "student@example.invalid"));
Сообщить(XMLСтрока(Контакт.Имя) = "Учебный");
Сериализатор = Новый СериализаторXDTO(ФабрикаXDTO);
Запись = Новый ЗаписьXML;
Запись.УстановитьСтроку();
Попытка
    Сериализатор.ЗаписатьXML(Запись, Контакт, НазначениеТипаXML.Явное);
    СтрокаXML = Запись.Закрыть();
Исключение
    Запись.Закрыть();
    ВызватьИсключение;
КонецПопытки;
Чтение = Новый ЧтениеXML;
Чтение.УстановитьСтроку(СтрокаXML);
Попытка
    Чтение.ПерейтиКСодержимому();
    Копия = Сериализатор.ПрочитатьXML(Чтение, Тип("ДанныеКонтакта"));
Исключение
    Чтение.Закрыть();
    ВызватьИсключение;
КонецПопытки;
Чтение.Закрыть();
Сообщить(ТипЗнч(Копия) = Тип("ДанныеКонтакта"));
Сообщить(Копия.Имя = "Учебный");
Сообщить(Копия.Фамилия = "Ученик");
Сообщить(Копия.Отчество = "Тестович");
Сообщить(Копия.АдресаЭлектроннойПочты.Количество() = 1);
Сообщить(Копия.АдресаЭлектроннойПочты[0].Значение = "student@example.invalid");

Разбор по шагам

  1. Новый контакт имеет собственные имя и почтовый элемент с системным типом Рабочий.

  2. XMLСтрока используется только для простого строкового поля имени: это не сериализация составного контакта.

  3. Для всей карточки создаём СериализаторXDTO со стандартной ФабрикаXDTO, пишем с явным типом и читаем в ДанныеКонтакта. Чтение и запись закрываем также при ошибке.

  4. В копии проверяем тип, три части имени, количество и содержимое почты. Устройство и менеджер синхронизации не вызываются.

Как проверить результат

  1. Семь сообщений Истина.

  2. XML остаётся в строке памяти: ни файл, ни внешний сервис не нужны.

Ожидаемый результат

Получена отдельная XML-копия собственного учебного контакта.

На что обратить внимание

  1. Это собственные учебные объекты, не контакт, уже полученный от операционной системы или сохранённый на устройстве.

  2. XML-сериализация платформы не является универсальным vCard или JSON-контрактом сторонней CRM.

  3. Для входного неизвестного XML необходимы отдельные ограничения размера и согласованный контракт; этот пример читает только свой источник.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.