1C: прикрепление файла к документу в разных версиях БСП

БСП < 2.0:

АдресФайлаВХранилище = ПоместитьВоВременноеХранилище(Base64Значение(body.file_base64));
		РаботаСФайламиВызовСервера.СоздатьФайлСВерсией(
			док.Ссылка,
			"результат",
			"pdf",
			ТекущаяДата(),
			ТекущаяДата(),
			,
			АдресФайлаВХранилище,АдресФайлаВХранилище,
			Ложь,
			,
			,
			Истина);		

БСП 2..3:

 // Добавляем его в присоединенные файлы к договору.
    ДвоичныеДанныеФайла = Новый ДвоичныеДанные(ИмяФайла);
    АдресВХранилище = ПоместитьВоВременноеХранилище(ДвоичныеДанныеФайла);
    НаименованиеФайла = НачалоНаименованияФайла + " " + ДоговорСсылка.Номер + " от " + Формат(ДоговорСсылка.Дата, "ДЛФ=D");
    //ПрисоединенныйФайлСсылка = ПрисоединенныеФайлы.ДобавитьФайл(ДоговорСсылка, НаименованиеФайла, РасширениеБезТочки, , , АдресВХранилище,,,, НаименованиеФайла + " (Сф-но автомат-ки)");

    ИмяФайлаПриведенное = ОбщегоНазначенияКлиентСервер.ЗаменитьНедопустимыеСимволыВИмениФайла(НаименованиеФайла, "_"); // ЕМ 2015_10_20
    ПрисоединенныйФайлСсылка = ПрисоединенныеФайлы.ДобавитьФайл(ДоговорСсылка, ИмяФайлаПриведенное, РасширениеБезТочки, , , АдресВХранилище,,,, НаименованиеФайла + " (Сф-но автомат-ки)");

Современные версии

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

1С: Прикрепляемые файлы к документу

Задача: организовать прикрепление и хранение файлов в документе. Желательно используя «штатный велосипед» 1С.

Решение:

Всё зависит от БСП на основе которой построена Ваша конфигурация. В моем случае, конфигурация Бухгалтерия 3.0.75.100, БСП 3.1.25

Узнать версию БСП можно при помощи:

Далее если есть подписка на ИТС, читаем тут или если нет, то у меня 😉

1) Чтобы ручками не заполнять все реквизиты, копируем справочник «ПередачаТоваровПрисоединенныеФайлы», копию переименовываем в <ИмяМоегоДокумента>ПрисоединенныеФайлы. В моем случае документ носит имя «Абоненты». Далее на скриншотах и в тексте я его так и буду называть. В Вашем случае это будет Ваш справочник/документ.

В реквизите «ВладелецФайла» указываем наш документ

2) В состав определяемых типов ПрисоединенныйФайл (ссылки) и ПрисоединенныйФайлОбъект (объекты) добавим наш документ:

3) Включить в состав плана обмена ОбновлениеИнформационнойБазы

4) Добавить источники у подписк и «ПереопределитьПолучаемуюФормуПрисоединенногоФайла» и «УстановитьПометкуУдаленияПрисоединенныхФайловДокументов»

5) Добавить в состав определяемых типов ВладелецПрисоединенныхФайлов (ссылки) и ВладелецПрисоединенныхФайловОбъект (объекты)

Если перед закрытием формы объекта-владельца файлов требуется проверить наличие занятых текущим пользователем файлов, то необходимо:

  • Добавить реквизит формыМожноЗакрытьФормуСФайламитипа Булево.
  • В обработчике формыПередЗакрытиемвставить вызов процедуры ПоказатьПодтверждениеЗакрытияФормыСФайлами общего модуля РаботаСФайламиКлиент по шаблону:

  • Другой код, который необходимо выполнять в обработчикеПередЗакрытием, следует размещать после вызова процедуры и проверки параметраОтказ. Например:

Результат: появившаяся «скрепочка» и список файлов по её нажатии.

Всё хорошо, одно плохо. Не понятно как это всё будет себя вести при обновлении. Предполагаю что галочки эти нужно будет расставлять каждый раз.