Сегодня делал небольшую доработку 1с УНФ написанную на БСП 3.1. Задача была сделать кнопку, которая рассылала бы отчет определенным адресатам и сам отчет был бы во вложении. На основании рассылки должны были создаваться документы событие и вложенные фалы должны быть там приложены.

Сохранить файл или записать файл для программиста 1с не сложная задача. Тут можно прочитать про диалоги работы с файлами.

Написав функционал по рассылкам и создав событие, столкнулся с выбором как мне быстрее и проще реализовать прикрепление файла к документу объекту. Выбрал функцию БСП, что бы отчет не требовал доработок при обновлении УНФ, а также что бы не писать много кода.

Код ниже берет файл с диска и прикрепляет его к объекту.

// Готовим файл и помещаем его в хранилище
ИмяФайлаНаДиске = "C:\Users\v.burmistrov\Downloads\ффд12.pdf";	
ДвоичныеДанные = Новый ДвоичныеДанные(ИмяФайлаНаДиске);
ВременноеХранилище = ПоместитьВоВременноеХранилище(ДвоичныеДанные);
// Подготоваливаем описание файла заполнив все необходимые параметры
ПараметрыФайла = РаботаСФайлами.ПараметрыДобавленияФайла();
ПараметрыФайла.Автор = Пользователи.ТекущийПользователь();
ПараметрыФайла.ВладелецФайлов = ДокументСсылка;
ПараметрыФайла.ИмяБезРасширения = СтрЗаменить(ИмяФайлаНаДиске,".pdf","");
ПараметрыФайла.РасширениеБезТочки = "pdf";
// Используем функцию БСП и добавляем файл к объекту
РаботаСФайлами.ДобавитьФайл(ПараметрыФайла, ВременноеХранилище);

10 строк кода и задача решена. Используйте БСП, изучайте БСП. Программное присоединение файла к документу в 1с с помощью БСП это очень просто и быстро, написать самому весь код с нуля заняло бы минут 30.

В типовых базах есть два типа объектов:

  • Объекты для которых создан справочник для файлов и все файлы хранятся в нем. Например: СобытиеПрисоединенныеФайлы
  • Объекты для которых нет специального справочника, файлы хранятся в справочнике Файлы.

Для второго типа объектов нужно использовать другой код.

ИмяФайлаНаДиске = "C:\Users\v.burmistrov\Downloads\ффд12.pdf";
РаботаСФайлами.ДобавитьФайлСДиска(ДокументСсылка, ИмяФайлаНаДиске);

Благодаря этой заметке программное присоединение файла к документу в 1с теперь не проблема.

Дополнительные материалы по теме: