Как прикрепить печатную форму из 1С к объекту Битрикс24
Кто может выполнять методы:
- crm.timeline.comment.add — любой пользователь
- disk.folder.uploadfile — пользователь с правом «Добавление» для папки Диска
Выберите инструмент для разработки с AI-агентом:
- используйте Битрикс24 Вайбкод, чтобы создать приложение для Битрикс24 по описанию задачи без знания языков программирования. Агент напишет код и разместит приложение на сервере без ручной настройки хостинга
- используйте MCP-сервер, чтобы разрабатывать интеграцию через REST API в своем проекте. Агент будет обращаться к официальной REST-документации
Печатную форму счета, акта или договора удобно передавать в Битрикс24 сразу после проведения документа в 1С: менеджер видит документ в карточке клиента и не запрашивает его у бухгалтерии.
Файл передают строкой в формате Base64. Разберем два способа:
- комментарий в таймлайне — файл виден прямо в карточке сделки, счета или компании
- загрузка на Диск — файл попадает в папку Диска, его можно переслать ссылкой
Перед началом
Для выполнения примеров нужны:
- входящий вебхук со scope
crmиdisk - общий модуль
ИнтеграцияБитрикс24из туториала Как выполнить первый запрос из 1С - идентификатор объекта CRM, к которому прикрепляем файл
Как использовать примеры в документации
1. Готовим файл в 1С
Печатную форму сохраняем во временный файл, читаем его как двоичные данные и кодируем в Base64.
&НаСервере
Функция ПечатнаяФормаВBase64(ТабличныйДокумент)
ИмяВременногоФайла = ПолучитьИмяВременногоФайла("pdf");
Попытка
ТабличныйДокумент.Записать(ИмяВременногоФайла, ТипФайлаТабличногоДокумента.PDF);
ДвоичныеДанныеФайла = Новый ДвоичныеДанные(ИмяВременногоФайла);
Результат = ДвоичныеДанныеВBase64(ДвоичныеДанныеФайла);
Исключение
УдалитьФайлы(ИмяВременногоФайла);
ВызватьИсключение;
КонецПопытки;
УдалитьФайлы(ИмяВременногоФайла);
Возврат Результат;
КонецФункции
&НаСервере
Функция ДвоичныеДанныеВBase64(ДвоичныеДанныеФайла) Экспорт
// Base64Строка разбивает результат на строки — убираем переводы строк,
// чтобы передать значение одной строкой
Результат = Base64Строка(ДвоичныеДанныеФайла);
Результат = СтрЗаменить(Результат, Символы.ВК, "");
Результат = СтрЗаменить(Результат, Символы.ПС, "");
Возврат Результат;
КонецФункции
Функция Base64Строка разбивает результат на строки и вставляет переводы строк. Часть методов такую строку принимает, часть — нет, поэтому переводы строк лучше убрать всегда.
Если файл уже лежит на диске или в реквизите «ХранилищеФайла», отдельная печать не нужна — сразу создайте ДвоичныеДанные и вызовите ДвоичныеДанныеВBase64.
2. Прикрепляем файл комментарием в таймлайн
Метод crm.timeline.comment.add создает запись в таймлайне и прикрепляет к ней файлы. Каждый файл передают массивом из двух элементов: имя файла и строка Base64.
&НаСервере
Функция ПрикрепитьФайлКОбъектуCRM(ИдентификаторОбъекта, ТипОбъекта, ИмяФайла, СодержимоеBase64, Комментарий)
Файл = Новый Массив;
Файл.Добавить(ИмяФайла);
Файл.Добавить(СодержимоеBase64);
Файлы = Новый Массив;
Файлы.Добавить(Файл);
Поля = Новый Структура;
Поля.Вставить("ENTITY_ID", ИдентификаторОбъекта);
Поля.Вставить("ENTITY_TYPE", ТипОбъекта);
Поля.Вставить("COMMENT", Комментарий);
Поля.Вставить("FILES", Файлы);
Параметры = Новый Структура;
Параметры.Вставить("fields", Поля);
Ответ = ИнтеграцияБитрикс24.ВыполнитьМетод("crm.timeline.comment.add", Параметры);
Если НЕ Ответ.Успешно Тогда
ВызватьИсключение СтрШаблон("Не удалось прикрепить файл «%1»: %2",
ИмяФайла, Ответ.ОписаниеОшибки);
КонецЕсли;
Возврат ИнтеграцияБитрикс24.ИдентификаторИзОтвета(Ответ.Результат);
КонецФункции
Вызов для счета из туториала Как выставить счет из 1С:
СодержимоеBase64 = ПечатнаяФормаВBase64(ТабличныйДокументСчета);
ПрикрепитьФайлКОбъектуCRM(
ИдентификаторСчета,
"dynamic_31",
"Счет № УТ-000123.pdf",
СодержимоеBase64,
"Печатная форма счета из 1С");
Метод возвращает идентификатор созданного комментария:
{
"result": 13465
}
Значение поля ENTITY_TYPE зависит от объекта CRM:
|
Объект |
ENTITY_TYPE |
|
Лид |
|
|
Сделка |
|
|
Контакт |
|
|
Компания |
|
|
Счет |
|
|
Элемент смарт-процесса |
|
3. Проверяем результат
Метод crm.timeline.comment.get возвращает комментарий вместе с данными файла.
Ответ = ИнтеграцияБитрикс24.ВыполнитьМетод("crm.timeline.comment.get",
Новый Структура("id", ИдентификаторКомментария));
Файлы = Ответ.Результат.Получить("FILES");
Для Каждого КлючИЗначение Из Файлы Цикл
ДанныеФайла = КлючИЗначение.Значение;
Сообщить(ДанныеФайла.Получить("name") + ": " + ДанныеФайла.Получить("urlDownload"));
КонецЦикла;
Ответ метода:
{
"result": {
"ID": "13465",
"ENTITY_ID": "4409",
"ENTITY_TYPE": "deal",
"CREATED": "2026-08-21T14:46:58+03:00",
"COMMENT": "Счет на оплату № УТ-000123 выставлен в 1С",
"AUTHOR_ID": "1",
"FILES": {
"2143": {
"id": 2143,
"date": "2026-08-21T14:46:58+03:00",
"type": "file",
"name": "schet-UT-000123.pdf",
"size": 115,
"image": false,
"authorId": 1,
"urlShow": "https://your-domain.bitrix24.ru/disk/downloadFile/2143/?&ncc=1&filename=schet-UT-000123.pdf",
"urlDownload": "https://your-domain.bitrix24.ru/disk/downloadFile/2143/?&ncc=1&filename=schet-UT-000123.pdf"
}
}
}
}
Ключ FILES — объект, где ключами служат идентификаторы файлов. В 1С такой объект читается в Соответствие, поэтому обходите его циклом Для Каждого, а не по индексу.
Проверьте результат в Битрикс24: откройте карточку объекта — в таймлайне появится комментарий с прикрепленным файлом.
4. Загружаем файл на Диск
Если файл нужен не в карточке, а в папке Диска — например, все акты за месяц в одной папке, — используйте метод disk.folder.uploadfile.
Сначала находим хранилище. Метод disk.storage.getlist возвращает личные диски пользователей, общий диск и диски групп: общий диск определяется по значению ENTITY_TYPE равному common.
&НаСервере
Функция КорневаяПапкаОбщегоДиска()
Ответ = ИнтеграцияБитрикс24.ВыполнитьМетод("disk.storage.getlist");
Если НЕ Ответ.Успешно Тогда
ВызватьИсключение "Не удалось получить список хранилищ Диска: " + Ответ.ОписаниеОшибки;
КонецЕсли;
Для Каждого Хранилище Из Ответ.Результат Цикл
Если Хранилище.Получить("ENTITY_TYPE") = "common" Тогда
Возврат ИнтеграцияБитрикс24.ИдентификаторИзОтвета(Хранилище.Получить("ROOT_OBJECT_ID"));
КонецЕсли;
КонецЦикла;
ВызватьИсключение "В Битрикс24 не найден общий диск";
КонецФункции
Затем загружаем файл в папку.
&НаСервере
Функция ЗагрузитьФайлНаДиск(ИдентификаторПапки, ИмяФайла, СодержимоеBase64)
СодержимоеФайла = Новый Массив;
СодержимоеФайла.Добавить(ИмяФайла);
СодержимоеФайла.Добавить(СодержимоеBase64);
Параметры = Новый Структура;
Параметры.Вставить("id", ИдентификаторПапки);
Параметры.Вставить("data", Новый Структура("NAME", ИмяФайла));
Параметры.Вставить("fileContent", СодержимоеФайла);
Ответ = ИнтеграцияБитрикс24.ВыполнитьМетод("disk.folder.uploadfile", Параметры);
Если НЕ Ответ.Успешно Тогда
ВызватьИсключение СтрШаблон("Не удалось загрузить файл «%1» на Диск: %2",
ИмяФайла, Ответ.ОписаниеОшибки);
КонецЕсли;
Возврат Ответ.Результат;
КонецФункции
Ответ метода — объект файла на Диске:
{
"result": {
"ID": 2147,
"NAME": "schet-UT-000123.pdf",
"TYPE": "file",
"PARENT_ID": "3",
"STORAGE_ID": "3",
"FILE_ID": 6181,
"SIZE": "115",
"CREATE_TIME": "2026-08-21T15:05:21+03:00",
"UPDATE_TIME": "2026-08-21T15:05:21+03:00",
"CREATED_BY": "1",
"DOWNLOAD_URL": "https://your-domain.bitrix24.ru/rest/1/xxxxxxxxxxxxxxxx/download/?token=disk%7C...",
"DETAIL_URL": "https://your-domain.bitrix24.ru/docs/path/..."
}
}
Идентификатор из поля ID передают в поля типа «Файл (диск)» — например, в поле задачи UF_TASK_WEBDAV_FILES. Пример такого сценария разобран в туториале Как создать задачу с прикрепленным файлом.
Ссылка DOWNLOAD_URL содержит токен доступа. Не публикуйте ее и не сохраняйте в общедоступных отчетах 1С. Чтобы дать пользователю постоянную ссылку, используйте DETAIL_URL — открывается в интерфейсе Битрикс24 с проверкой прав.
Ошибки и диагностика
Если метод вернул ошибку, проверьте данные запроса.
|
Ошибка |
Причина и решение |
|
|
Объект CRM не найден. Проверьте значения |
|
|
Передан пустой комментарий. Поле |
|
|
У пользователя, создавшего вебхук, нет прав на объект CRM или на добавление файла в папку Диска |
|
|
Папка с указанным |
|
|
В массиве |
|
|
Файл не удалось сохранить. Проверьте свободное место на Диске и строку Base64 — в ней не должно быть переводов строк |
Что важно учитывать
- Размер запроса. Строка Base64 примерно на треть длиннее исходного файла. Ограничения на размер запроса и другие детали загрузки описаны на странице Как загрузить файлы
- Формат печатной формы. PDF подходит для документов, которые не нужно редактировать. Табличный документ также можно сохранить в
ТипФайлаТабличногоДокумента.XLSXилиMXL, если файл будут открывать в 1С - Имя файла. Указывайте расширение — по нему Битрикс24 определяет тип файла и показывает предпросмотр. Кириллица в имени допустима
- Повторная отправка. Метод
crm.timeline.comment.addкаждый раз создает новый комментарий. Если документ перепечатали, старый комментарий удаляют методом crm.timeline.comment.delete или сохраняют оба — как история версий - Файловые поля CRM. Файл можно записать и в пользовательское поле типа «Файл» — тогда он будет виден в карточке как реквизит. Формат значения тот же: массив из имени файла и строки Base64
Продолжите изучение
- Как выставить счет из 1С — сценарий, к которому чаще всего прикрепляют печатную форму
- Как передать контрагента из 1С в CRM — договоры и акты сверки в карточке компании
- Как загрузить файлы — форматы передачи файлов во всех методах REST API