Здравствуйте.
Есть две 1С. 8.1 и 8.3.
Необходимо из 8.1 сохранять печатные формы в PDF.
Так как 1С 8.1 не поддерживает сохранение табличного документа в PDF, решил развернуть промежуточную базу 8.3.
В 8.3 создал процедуру:

```1c
    Процедура СохранитьВPDF(ТабДок, ПутьСохраняемогоФайла) Экспорт
    ТабДок.Записать(ПутьСохраняемогоФайла,ТипФайлаТабличногоДокумента.PDF);
    КонецПроцедуры
```

Но табличный документ так не корректно сохраняется, открывается как на языке разметки. Не совсем понимаю почему.
Пришлось использовать промежуточный файл:

```1c
    Функция СохранитьВPDF(ПутьСохраняемогоФайла) Экспорт
    ТабДок = ЗначениеИзФайла("E:\ttt.xml");
    ТабДок.Записать(ПутьСохраняемогоФайла,ТипФайлаТабличногоДокумента.PDF);
    КонецФункции
```

Вот так все работает. Почему может не работать 1-ый вариант?
---
Технология так и называется - сериализация :) В 7.7 был свой внутренний формат и работало через ЗначениеВСтроку и ЗначениеВСтрокуВнутр. В 8-ке для совместимости это вроде оставили, но к использованию не рекомендовано. Штатная сериализация теперь работает через XML, как гораздо более универсальный и стандартизированный инструмент. Если в описании объекта в СП написано "Сериализуется", значит он может быть штатно сериализован в XML через глобальную фабрику XDTO. XDTO - собственно правила конвертации объектов в XML и обратно (можно создавать собственные правила). Это используется в РИБ, в КД, при работе поверх http - при любых потребностях трансфера объектов 1С (при работе через COM, как мы выяснили, тоже бывает нужно). Про это можно рассказывать долго и про это уже написаны длинные статьи. Сам поток записи в XML управляется объектом "ЗаписьXML" (по аналогии с "ЗаписьТекста") - можно писать в файл и можно в строку.
Собственно, примеры:

```1c
    Функция СериализацияXML(Значение) Экспорт

    ЗаписьXML = Новый ЗаписьXML;
    ЗаписьXML.УстановитьСтроку();
    СериализаторXDTO.ЗаписатьXML(ЗаписьXML, Значение);

    Возврат ЗаписьXML.Закрыть();

    КонецФункции

    Функция ДесериализацияXML(СтрокаXML) Экспорт

    ЧтениеXML = Новый ЧтениеXML;
    ЧтениеXML.УстановитьСтроку(СтрокаXML);
    ЧтениеXML.Прочитать();

    Возврат СериализаторXDTO.ПрочитатьXML(ЧтениеXML);

    КонецФункции
```

Эти функции схавают любые типы 1С, для которых предусмотрена сериализация в принципе.
Для простых, ссылочных типов и т.п. есть более простые и удобные XMLСтрока() и XMLЗначение()
---
При первом варианте это объект платформы 8.1 и он при выполнении Записать будет выполнятся средствами платформы 8.1

А во втором случае это уже 8.3 берет на себя обязательства.
---
ЕМНИП, у меня тоже табдок напрямую через COM то ли не передавался вообще, то ли некорректно это делал.
Так что я тоже передавал с помощью явной сериализации. Только сериализовал через штатную XML-сериализацию.
Причины - ну, дык. Это ж тебе не примитивный тип и не ссылочный. А неявную сериализацию не предусмотрели.
---
Промежуточный файл у меня тоже кажись был. Но насколько я понимаю есть возможность и без него сделать.
Тогда параметром будешь передавать строку XML, в которую упаковываешь табдок и в приемнике делать обратное превращение.
---
А не подскажете где про это почитать или мини-примерчик не дадите?
Как эта технология называется?
---
Технология так и называется - сериализация :) В 7.7 был свой внутренний формат и работало через ЗначениеВСтроку и ЗначениеВСтрокуВнутр. В 8-ке для совместимости это вроде оставили, но к использованию не рекомендовано. Штатная сериализация теперь работает через XML, как гораздо более универсальный и стандартизированный инструмент. Если в описании объекта в СП написано "Сериализуется", значит он может быть штатно сериализован в XML через глобальную фабрику XDTO. XDTO - собственно правила конвертации объектов в XML и обратно (можно создавать собственные правила). Это используется в РИБ, в КД, при работе поверх http - при любых потребностях трансфера объектов 1С (при работе через COM, как мы выяснили, тоже бывает нужно). Про это можно рассказывать долго и про это уже написаны длинные статьи. Сам поток записи в XML управляется объектом "ЗаписьXML" (по аналогии с "ЗаписьТекста") - можно писать в файл и можно в строку.
Собственно, примеры:

```1c
    Функция СериализацияXML(Значение) Экспорт

    ЗаписьXML = Новый ЗаписьXML;
    ЗаписьXML.УстановитьСтроку();
    СериализаторXDTO.ЗаписатьXML(ЗаписьXML, Значение);

    Возврат ЗаписьXML.Закрыть();

    КонецФункции

    Функция ДесериализацияXML(СтрокаXML) Экспорт

    ЧтениеXML = Новый ЧтениеXML;
    ЧтениеXML.УстановитьСтроку(СтрокаXML);
    ЧтениеXML.Прочитать();

    Возврат СериализаторXDTO.ПрочитатьXML(ЧтениеXML);

    КонецФункции
```

Эти функции схавают любые типы 1С, для которых предусмотрена сериализация в принципе.
Для простых, ссылочных типов и т.п. есть более простые и удобные XMLСтрока() и XMLЗначение()
---
ЗначениеВСтрокуВнутр она называется