PDF из 1С в Max без временного файла
Май 2026 · Редакция «Арете-ИТ»
Max не умеет получать объект ТабличныйДокумент из 1С. Перед отправкой
печатную форму нужно превратить в PDF, получить двоичные данные и задать имя файла.
После этого действует обычный сценарий файлового вложения.
Самый короткий путь — записать готовую печатную форму в ПотокВПамяти
через ТипФайлаТабличногоДокумента.PDF. Так код не зависит от каталога
временных файлов и не оставляет мусор на диске рабочего сервера.
// ПечатнаяФорма — уже сформированный ТабличныйДокумент. // Команда и параметры получения формы зависят от конфигурации и вида документа. Поток = Новый ПотокВПамяти; ПечатнаяФорма.Записать(Поток, ТипФайлаТабличногоДокумента.PDF); ДвоичныеДанные = Поток.ЗакрытьИПолучитьДвоичныеДанные(); ИмяФайла = "document.pdf";
ОтправитьФайлВMax( ТокенБота, ИдПользователя, ДвоичныеДанные, "document.pdf", "Документ из 1С");
Получение самой печатной формы осталось за рамками примера: команды печати и их параметры
зависят от конфигурации. Создавать пустой ТабличныйДокумент перед сохранением
бессмысленно — сначала в нём должен появиться реальный макет документа или отчёта.
При выполнении на сервере все пути относятся к файловой системе сервера 1С, а не к компьютеру пользователя. Если потоковый вариант для конкретной формы недоступен, используйте временный файл на сервере и удаляйте его в блоке обработки исключения.
PDF загружается с type=file. Полный разбор HTTP-обмена находится
в статье об отправке файла;
там же приведён исходный код процедуры ОтправитьФайлВMax.
Для прикладных деталей можно перейти к материалам про
УПД или
счёт на оплату.
PDF через «Арете — сервер мессенджеров, Max edition»
Подсистема не меняет способ получения печатной формы. Она заменяет только транспортную часть: получает URL загрузки, сохраняет token и повторяет отправку после обработки файла.
ИдПользователя = 123456789; // user_id из карточки получателя
СопроводительныйТекст = "Направляем документ из 1С.";
Параметры = Новый Структура;
Параметры.Вставить("user_id", ИдПользователя);
Параметры.Вставить("text", СопроводительныйТекст);
АСМ_М.ВложитьФайл(Параметры, ДвоичныеДанные, ИмяФайла);
АСМ_М.ОтправитьСообщение(Бот, Параметры);