Доброго времени суток!

Как сохранить программно документ в файл на компьютере. Всё, что нашёл, не работает. Может чего не так делаю
---
ТабДок необходимо сформировать.
Для счета на оплату в БП3 если упростить, то будет примерно так

```1c
    МассивСсылок = Новый Массив;
    МассивСсылок.Добавить(СсылкаНаСчет);
    ОбъектыПечати = Новый СписокЗначений;
    ПараметрыПечати = Новый Структура;
    ПараметрыПечати.Вставить("ДополнитьКомплектВнешнимиПечатнымиФормами", Ложь);
    ДокументыБезСчетовНаОплату = Неопределено;
    ТаблицаСведенийСчетНаОплату = Документы.СчетНаОплатуПокупателю.ПолучитьТаблицуСведенийСчетаНаОплату(МассивСсылок, ДокументыБезСчетовНаОплату);
    ТабДок = ПечатьТорговыхДокументов.ПечатьСчетаНаОплату(ТаблицаСведенийСчетНаОплату, ОбъектыПечати, ПараметрыПечати);
```

Код не проверял. Может где ошибся.
---
Какой документ? В какой файл? Какая платформа? Все, что нашли - это что? А что именно вы делаете?
Телепаты как всегда в отпуске...
---
Любой документ. Пусть будет счёт в БП 3.0. Платформа естественно 8.3

Что ещё? Сохранить в файл. Файл это файл на компьютере. То есть тот же excel

Завидую телепатам
---
А я вам завидую...
Как вы умудряетесь работать совершенно не умея формулировать то что вам необходимо...
Наверное места знать надо...

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

```1c
    &НаСервере
    Функция ВыгрузитьНаСервере()

    ТекстЗапроса= "ВЫБРАТЬ
    | ТоварыНаСкладахОстатки.Номенклатура,
    | ТоварыНаСкладахОстатки.Номенклатура.Наименование КАК Наименование,
    | ТоварыНаСкладахОстатки.Номенклатура.Артикул КАК Артикул,
    | ТоварыНаСкладахОстатки.Номенклатура.ВидНоменклатуры.Наименование КАК ВидНоменклатуры,
    | ТоварыНаСкладахОстатки.Номенклатура.ЕдиницаИзмерения.Наименование КАК ЕдиницаИзмерения,
    | ТоварыНаСкладахОстатки.ВНаличииОстаток КАК ВНаличииОстаток,
    | ТоварыНаСкладахОстатки.Номенклатура.НаименованиеПолное
    |ПОМЕСТИТЬ ВТ_остатки
    |ИЗ
    | РегистрНакопления.ТоварыНаСкладах.Остатки(&ДатаЗапроса, Склад = &Склад) КАК ТоварыНаСкладахОстатки
    |;
    |
    |////////////////////////////////////////////////////////////­////////////////////
    |ВЫБРАТЬ
    | ВТ_остатки.Наименование КАК Номенклатура,
    | ВТ_остатки.Наименование КАК НаименованиеПолное,
    | ВТ_остатки.ВидНоменклатуры,
    | ВТ_остатки.Артикул,
    | ВТ_остатки.ЕдиницаИзмерения,
    | ВТ_остатки.ВНаличииОстаток КАК Остаток,
    | СоответствияОбъектовИнформационныхБаз.УникальныйИдентификаторПриемника КАК ID
    |ИЗ
    | ВТ_остатки КАК ВТ_остатки
    | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СоответствияОбъектовИнформационныхБаз КАК СоответствияОбъектовИнформационныхБаз
    | ПО (СоответствияОбъектовИнформационныхБаз.УникальныйИдентификаторИсточника = ВТ_остатки.Номенклатура)
    |
    |УПОРЯДОЧИТЬ ПО
    | Номенклатура";
    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("ДатаЗапроса", Объект.Дата+1);
    Запрос.УстановитьПараметр("Склад", Объект.СкладОтправитель);
    Запрос.Текст = ТекстЗапроса;

    Результат = Запрос.Выполнить().Выгрузить();

    Данные = Новый Структура;
    Данные.Вставить("Всего", Результат.Количество());
    Данные.Вставить("Строки", Новый Массив);
    ном=0;
    для каждого стр из Результат цикл
    ном=ном+1;
    cell=Новый Массив;
    cell.добавить(ном);
    cell.добавить(стр.ВидНоменклатуры);
    cell.добавить(стр.Номенклатура);
    cell.добавить(стр.НаименованиеПолное);
    cell.добавить(стр.Артикул);
    cell.добавить(стр.ЕдиницаИзмерения);
    cell.добавить(стр.Остаток);
    cell.добавить(стр.ID);
    Данные.Строки.Добавить(Новый Структура("id,cell",ном,cell));
    конеццикла;

    ЗаписьJSON = Новый ЗаписьJSON;
    ПутьКФайлу = ПолучитьИмяВременногоФайла("json");
    ЗаписьJSON.ОткрытьФайл(ПутьКФайлу);

    ЗаписатьJSON(ЗаписьJSON,Данные);
    ЗаписьJSON.Закрыть();
    ДД = Новый ДвоичныеДанные(ПутьКФайлу);

    Возврат ДД;

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

    &НаКлиенте
    Процедура Выгрузить(Команда)

    ДД = ВыгрузитьНаСервере();

    Если ДД = Неопределено Тогда
    Возврат;
    КонецЕсли;

    ВыборФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение);
    ВыборФайла.Фильтр = "jsn(*.json)|*.json";

    Если ВыборФайла.Выбрать() Тогда
    ДД.Записать(ВыборФайла.ПолноеИмяФайла);
    КонецЕсли;

    КонецПроцедуры
```
---
Для открытия сторонней программой, а если точнее формат xls или pdf
---
Все очень просто сначала мы формируем обычный Табличный документ и затем записываем его в Excel
При этом наличие самого Excel вообще не обязательно, можно открывать файл там где есть Excel ...

//ТабДок - Табличный документ
 ТабДок.Записать(Объект.ИмяФайла,ТипФайлаТабличногоДокумента.XLSX);
---
Хорошо. Вопрос только, как правильно задать документ
---
Ну так вы же ссылку выбирайте в обработке - вот вам и ваш документ...
После этого делаете все как будто вы собираетесь вывести на печать свой документ именно , но вместо печати - сохраняете в файл.
Все что вы увидите на бумаге при печати, все сохранится в файл...
Уж извините , если вы не можете выводить на печать - читайте литературу - там все очень подробно расписано...
---
Может чего не так делаю Как минимум - не так формулируете вопрос, соответственно - возникают не ответы, а вопросы:

1. Что значит "сохранить документ"? Печатную форму? Или набор данных?
2. "Всё, что нашёл, не работает." Мы должны угадать - что вы нашли?
3. Главное - ЗАЧЕМ нужно сохранять?
---
1. Аналог "Файл - Сохранить как"
2. Что нашёл не важно
3. Зачём? Чтоб на компьютере был файл
---
(2) Я согласен с ответом 2. Не понятно какой файл (4). Если можно подробнее что вы делаете.

Вы хотите макет(табличный документ) сохранить в файл?
---
Хочу сохранить. Все равно что через меню. Файл - Сохранить как
---
уже ближе...
Вам нужно сформировать табличный документ печатной формы. У табличного документа есть метод Записать.
ТабДок.Записать(ИмяФайла, ТипФайлаТабличногоДокумента.XLSX);
---
Если так пишу, то выдаёт неверный параметр

ТабДок задавать как?

ТабДок = Объект.Документ.ПолучитьДокумент.ПолучитьОбъект()?
---
ТабДок необходимо сформировать.
Для счета на оплату в БП3 если упростить, то будет примерно так

```1c
    МассивСсылок = Новый Массив;
    МассивСсылок.Добавить(СсылкаНаСчет);
    ОбъектыПечати = Новый СписокЗначений;
    ПараметрыПечати = Новый Структура;
    ПараметрыПечати.Вставить("ДополнитьКомплектВнешнимиПечатнымиФормами", Ложь);
    ДокументыБезСчетовНаОплату = Неопределено;
    ТаблицаСведенийСчетНаОплату = Документы.СчетНаОплатуПокупателю.ПолучитьТаблицуСведенийСчетаНаОплату(МассивСсылок, ДокументыБезСчетовНаОплату);
    ТабДок = ПечатьТорговыхДокументов.ПечатьСчетаНаОплату(ТаблицаСведенийСчетНаОплату, ОбъектыПечати, ПараметрыПечати);
```

Код не проверял. Может где ошибся.
---
Спасибо огромное!!!
---
Вроде идеально работало

https://forum.mista.ru/topic.php?id=272516

```1c
    ТабДок=Новый ТабличныйДокумент;
    ПостроительОтчетаОтчет.Вывести(ТабДок);
    ТабДок.Записать(ИмяФайла);
```
---
Документ это элемент базы данных, вы хотите сохранить печатную форму или что?
Если хотите сохранить сам объект, так тогда XML проще, но зачем??

```1c
    ЗаписьXML = Новый ЗаписьXML;
    ЗаписьXML.УстановитьСтроку();
    ЗаписатьXML(ЗаписьXML, ДокументОбъект);
    СтрокаXML = ЗаписатьXML.Закрыть();
    ТекстДок = Новый ТекстовыйДокумент;
    ТекстДок.УстановитьТекст(СтрокаXML);
    ТекстДок.Записать(ИмяФайла);
```

Читать в обратном порядке, через чтение XML, но это будет работать только с идентичными конфигурациями...
---
Еще наводка )))
Обратите внимание - макет печатной формы очень напоминает страницу Excel!