1с программное присоединение файла к документу

1с программное присоединение файла к документу

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

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

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

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

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

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

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

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

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

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

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

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

  1. Ссылка на документацию БСП.

Комментарии

6 комментариев на ««1с программное присоединение файла к документу»»

  1. Аватар пользователя Роман
    Роман

    Спасибо за статью, очень полезна, когда не часто используешь данных механизм, но нужно быстро его реализовать. Все самое важное тут указано)

    1. Аватар пользователя CrazyElephant_x

      Как раз стараюсь кратко писать про какие-то механизмы, что бы можно было решить свою проблему за пару минут.

  2. Аватар пользователя Николай
    Николай

    Спасибо. Вот непонятно только как присоединенный файл, например отправить по почте как вложение. Где он вообще хранится в справочнике присоединенные файлы соответствующего документа? Это точно не «ФайлХранилище»

    1. Аватар пользователя CrazyElephant_x

      Да, все верно, в этом примере файл прикладывается в справочник файлов связанный с объектом. Записал себе в план, в январе написать статью с примером как отправить по почте файл из хранилища. В декабре уже не успею.

  3. Аватар пользователя Владимир
    Владимир

    Важно отметить, что все это будет работать на стороне сервера не интерактивно. Файлы также должны там находится. Соответственно ни с каким диалогом выбора файла указанный пример корректно работать не будет.

    1. Аватар пользователя CrazyElephant_x

      Да, верно это серверный код. Предполагается что работу с выбором файла на клиенте мы сделали ранее.

Добавить комментарий