Для продвинутых пользователей: Кастомизация формирования пакетов документов в Доки | Помощь Астрал
С 1 сентября 2026 года ЭТрН станут обязательными для всех — подготовьтесь к цифровому прорыву, который коснётся каждой грузоперевозки в России
Техподдержка:
Отдел продаж
График работы

Доки: Кастомизация формирования пакетов документов

Автор Матвеева Ксения

Автор: Матвеева Ксения

24.09.2025
157
Из статьи вы узнаете:

Зачем это может понадобиться

Интеграция Доки с 1С позволяет включить в настройках автоматическое добавление счета на оплату в пакет документов. Аналогично вы можете добавлять автоматически и другие документы к пакету.

  • Нужно расширить стандартное поведение. Например, вместе с актом автоматически отправлять договор, по которому он составлен.
  • Уменьшение ручной работы. Вместо ручного выбора файлов можно сделать так, чтобы в ЭДО всегда уходили все вложения к документу.
  • Особые бизнес-требования. Например, для отдельных контрагентов нужно всегда требовать ответную подпись на приложенных документах.

Начиная с версии 1.0.108, расширение «Доки» позволяет добавлять собственную логику отправки файлов без изменения кода самого расширения. Разработчик 1С может добавлять в пакет документов абсолютно любые файлы (двоичные данные), не вмешиваясь в основной код расширения и сохраняя возможность получения обновлений.

Использовать готовый модуль кастомизации

Для использования готового модуля кастомизации, выполняющего описанную в примере функцию, сначала скачайте его и установите как обычное расширение. Для этого в 1С откройте раздел Администрирование → Печатные формы, отчеты и обработки:

Нажмите гиперссылку Расширения:

Нажмите Добавить из файла... и выберите скачанный ранее файл:

После его добавления перезапустите 1С:

Для просмотра присоединенных файлов в учетном документе нажмите кнопку Присоединенные файлы:

Отобразятся все файлы, прикрепленные к учетному документу:

Как это использовать разработчику 1С

Информация для разработчика 1С:

Шаг 1. Создать собственное расширение

Через Конфигуратор создайте новое расширение в вашей информационной базе. Альтернативно - используйте готовый «каркас» расширения (скачать файл).

Шаг 2. Добавить модуль кастомизации

В расширении необходимо создать общий модуль с точным именем: ДокиКастом_Экспорт

Шаг 3. Реализовать функцию

В модуле реализуется функция:

Функция ПодготовитьОписанияДобавляемыхДокументов(ОбъектУчета) Экспорт

Эта функция должна возвращать массив структур с описаниями файлов для отправки. Каждый элемент массива содержит:

  • АдресДанных - адрес во временном хранилище, где лежит двоичное содержимое файла;
  • ИмяФайла - имя файла вместе с расширением;
  • ТребоватьОтветнуюПодпись - булево, нужен ли отклик подписью контрагента;
  • ТранслитерацияИмениФайла - булево, нужно ли перевести имя на латиницу;
  • Формализованный - булево, соответствует ли файл формату ФНС.

Особенность работы с формализованными документами

Если признак «Формализованный» установлен, то значения ИмяФайла и ТребоватьОтветнуюПодпись, переданные в расширении, будут проигнорированы, так как сервер «Доки» при отправке сам формирует имя файла на основе реквизитов документа (имя будет сгенерировано из номера и даты документа) и сам определяет необходимость ответной подписи в зависимости от типа формализованного документа (например, УПД ДОП требует ответную подпись, а счет-фактура не требует подписи).

Шаг 4. Ограничения

При формировании пакета учитываются лимиты:

  • максимальный размер одного файла - 60 Мб;
  • максимальный общий размер пакета - 70 Мб;
  • максимум 30 файлов в пакете.

При превышении лимита файлы в пакет не добавляются.

Требования к дополнительному модулю

  • Имя модуля должно быть строго ДокиКастом_Экспорт.
  • Функция должна быть экспортной.
  • Массив с описаниями должен формироваться корректно (иначе расширение «Доки» не сможет добавить файлы в пакет).
  • Для работы с файлами используйте стандартные методы 1С (ПоместитьВоВременноеХранилище, РаботаСФайлами, и т. д.).

Пример: отправка всех прикрепленных к документу файлов

Ниже приведен рабочий пример, который показывает, как включить в пакет ЭДО все файлы, прикрепленные к учетному документу:

Функция ПодготовитьОписанияДобавляемыхДокументов(ОбъектУчета) Экспорт

ПрисоединенныеФайлы = Новый Массив;

РаботаСФайлами.ЗаполнитьПрисоединенныеФайлыКОбъекту(ОбъектУчета, ПрисоединенныеФайлы);

РеквизитыФайлов = ОбщегоНазначения.ЗначенияРеквизитовОбъектов(ПрисоединенныеФайлы, "Наименование, Расширение");

ДанныеФайлов = РаботаСФайлами.ДвоичныеДанныеФайлов(ПрисоединенныеФайлы);

ДобавляемыеФайлы = Новый Массив;

Для Каждого ПрисоединенныйФайл Из ПрисоединенныеФайлы Цикл

РеквизитыФайла = РеквизитыФайлов.Получить(ПрисоединенныйФайл);

ИмяФайла = СтрШаблон("%1.%2", РеквизитыФайла.Наименование, РеквизитыФайла.Расширение);

ДвоичныеДанные = ДанныеФайлов.Получить(ПрисоединенныйФайл);

АдресДанных = ПоместитьВоВременноеХранилище(ДвоичныеДанные);

// Для подготовки структуры описания можно использовать метод Доки_Переопределяемый.НовоеОписаниеДокумента().

ОписаниеДокумента = Новый Структура;

ОписаниеДокумента.Вставить("АдресДанных", АдресДанных);

ОписаниеДокумента.Вставить("ИмяФайла", ИмяФайла);

ОписаниеДокумента.Вставить("ТранслитерацияИмениФайла", Ложь);

ОписаниеДокумента.Вставить("ТребоватьОтветнуюПодпись", Ложь);

ОписаниеДокумента.Вставить("Формализованный", Ложь);

ДобавляемыеФайлы.Добавить(ОписаниеДокумента);

КонецЦикла;

Возврат ДобавляемыеФайлы;

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

// Возвращает структуру с описанием нового документа, который нужно добавить в пакет (используется в модуле кастомизации).

//

// Параметры:

//  АдресДанных - Строка - Адрес во временном хранилище, который указывает на двоичные данные документа (файла).

//  ИмяФайла - Строка - Название файла с документом, который нужно добавить в пакет.

//  ТранслитерацияИмениФайла - Булево - Перед добавлением документа в пакет его название нужно перевести на латиницу.

//  ТребоватьОтветнуюПодпись - Булево - Документ требует подписи получателя.

//  Формализованный - Булево - Документ соответствует формату, утвержденному ФНС.

//

// Возвращаемое значение:

//  Структура - Структура с полями для описания документа (файла). Набор полей полностью соответствует входным параметрам метода.

//

Функция НовоеОписаниеДокумента(АдресДанных = Неопределено, ИмяФайла = Неопределено, ТранслитерацияИмениФайла = Ложь, ТребоватьОтветнуюПодпись = Истина, Формализованный = Ложь) Экспорт

       Результат = Новый Структура;

       Результат.Вставить("АдресДанных", АдресДанных);

       Результат.Вставить("ИмяФайла", ИмяФайла);

       Результат.Вставить("ТранслитерацияИмениФайла", ТранслитерацияИмениФайла);

       Результат.Вставить("ТребоватьОтветнуюПодпись", ТребоватьОтветнуюПодпись);

       Результат.Вставить("Формализованный", Формализованный);

       Возврат Результат;

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

Комментарии для сайта Cackle

Хотите разобраться
в сервисах Астрал?

Подробные инструкции,
решения проблем
и ответы на вопросы
в Базе знаний

Получите электронную подпись для работы на госпорталах, для участия в торгах и ЭДО
autohello-finger