Работа с файлами в расширении
Подсистема работа с файлами БСП.
Расширение стандартной подсистемы работы с файлами, версия 1.0
Для использования подсистемы Работа с файлами и подсистемы Присоединенные файлы в расширении прикладных решений, созданных на базе БСП 3.1 (платформа 1С 8.3.15 и выше) я написал расширение:

Расширение нужно подключать в обычном безопасном режиме. При применении расширения в безопасном режиме будут расширяться только клиентские методы и серверные обработчики форм, которые установлены через панель свойств. К остальным серверным методам (в т. ч. и к аннотированным серверным методам модулей) расширение применяться не будет.
Расширение является шаблонным решением для его внедрения в прикладных решениях 1С. Расширение предназначено для присоединения файлов к справочникам и документам , созданных в расширении. Эти присоединенные файлы можно сохранить в двоичных данных в информационной базе или в папке общего доступа на сервере в зависимости от настройки подсистемы в разделе администрирование – настройки работы с файлами:

Если документ расширяемой конфигурации , как например, Перемещение товаров не является владельцем файлов , то для того, чтобы этот документ был владельцем в расширении , то тогда Вам нужно приобрести предлагаемый здесь шаблон расширения с инструкциями по настройке шаблона в прикладном расширении.
В предлагаемом готовом демонстрационном шаблоне расширения добавлена подсистема “Работа с файлами в расширении” с двумя владельцами файлов, созданными в расширении : Простой справочник Согл_ЦФО и простой документ Согл_ЗаявкаНаОплату без реквизитов. На практике , эти владельцы могут быть любой документ или справочник, который в расширяемой конфигурации не является владельцем присоединенных файлов.

Для каждого объекта – владельца нужно создавать в расширении справочник с именем
<Префикс>ПрисоединенныеФайлы,
где <Префикс> – имя объекта метаданных, для которого настраиваются присоединенные файлы. Для этого в качестве заготовки можно скопировать Согл_ЗаявкаНаОплатуПрисоединенныеФайлы. У реквизита ВладелецФайла нужно установить тип владельца файла. Например, ДокументСсылка. Согл_ЗаявкаНаОплату
В форме демонстрационного документа Согл_ЗаявкаНаОплату я добавил гиперссылку вложения для показа наименовании всех присоединенных файлов, а а также добавил общую команду Присоединенные файлы в панель навигации формы Перейти

При нажатие по гиперссылку или по общей команде открывается типовая форма списка присоединенных файлов для добавленя, просмотра и редактирования

Важно! Одна из причин, по которой подсистема Работа с файлами и подсистема Присоединенные файлы расширяемой БСП не подходят для работы с владельцами файлами , созданными в расширении заключается в том, что платформа 1С не поддерживает свойство типа Определяемые типы в расширении. Иными словами, последняя платформа 1с 8.3.18 не позволяет добавлять объекты типа Определяемые типы. Возможно в будущих платформах 1С возможно будет добавлять в расширении такие объекты и тогда предлагаемое расширение не потребуется.
Присоединенные файлы расширяемой конфигурации хранятся в информационной базе в виде двоичных данных в регистре сведений ДвоичныеДанныеФайла. Но этот регистр имеет одно измерение типа Определяемые типы :

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

Также в общем модуле расширения я создал следующие функции :
Функция МассивТиповВладельцевПрисоединенныхФайлов() Экспорт
Типы = Новый Массив();
Типы.Добавить(Тип("ДокументСсылка.Согл_ЗаявкаНаОплату"));
Типы.Добавить(Тип("СправочникСсылка.Согл_ЦФО"));
Возврат Типы;
КонецФункции // ()
Функция МассивТиповПрисоединенныхФайлов() Экспорт
Типы = Новый Массив();
Типы.Добавить(Тип("СправочникСсылка.Согл_ЗаявкаНаОплатуПрисоединенныеФайлы"));
Типы.Добавить(Тип("СправочникСсылка.Согл_ЦФОПрисоединенныеФайлы"));
Возврат Типы;
КонецФункции // ()
// В качестве параметр передается ссылка на справочник
// возвращаемое значение;
//Истина - если он справочник присоединенный создан в расширении иначе ложь
Функция ЭтоПрисоединенныйФайлВРасширении(ПрисоединенныйФайл) Экспорт
Рез = Ложь;
Для каждого ЭлТип Из МассивТиповПрисоединенныхФайлов() Цикл
Если ТипЗнч(ПрисоединенныйФайл)= ЭлТип Тогда
Рез = Истина;
КонецЕсли;
КонецЦикла;
Возврат Рез;
КонецФункции // ()
В теле функции МассивТиповПрисоединенныхФайлов нужно включать все справочники типа ПрисоединенныеФайлы, созданные в расширении, а в теле функции МассивТиповВладельцевПрисоединенныхФайлов нужно включать владельцы этих файлов.
На функцию ЭтоПрисоединенныйФайлВРасширении передается ссылка на справочник типа ПрисоединенныеФайлы и она возвращает значение Истина если передаваемая ссылка создан в расширении.
Я переписал программные коды общих модулей подсистемы в расширении таким образом, чтобы операции записи и чтения двоичных данных файла выполнялись по новому регистру, когда владелец являлся объектом, добавленным в расширении. Во всех случаях я использовал метод замены (аннотация Вместо), например:
&Вместо("ЗаписатьФайлВИнформационнуюБазу")
Процедура Согл_ЗаписатьФайлВИнформационнуюБазу(ВерсияСсылка, ХранилищеФайла)
Если Согл_РаботаСфайлами.ЭтоПрисоединенныйФайлВРасширении(ВерсияСсылка) Тогда
Согл1_ЗаписатьФайлВИнформационнуюБазу(ВерсияСсылка, ХранилищеФайла);
иначе
ПродолжитьВызов(ВерсияСсылка, ХранилищеФайла);
КонецЕсли;
КонецПроцедуры
Процедура Согл1_ЗаписатьФайлВИнформационнуюБазу(ВерсияСсылка, ХранилищеФайла)
УстановитьПривилегированныйРежим(Истина);
МенеджерЗаписи = РегистрыСведений.Согл_ДвоичныеДанныеФайлов.СоздатьМенеджерЗаписи();
МенеджерЗаписи.Файл = ВерсияСсылка;
МенеджерЗаписи.ДвоичныеДанныеФайла = ХранилищеФайла;
МенеджерЗаписи.Записать(Истина);
КонецПроцедуры
Шаблон расширения с инструкциями по внедрению в прикладных расширениях стоит 8 000 р. Для его приобретения обращайтеcь ко master1c8x@mail.ru
Новая версия 1.1 расширения подсистемы работы с файлами
Процедура “Перенос файлов” в разделе администрирование/настройки работы с файлами в первой версии шаблона не переносила файлы владельца, созданного в расширении.

В новой версии шаблона расширения доработан модуль формы обработки Перенос файла в расширении, чтобы переносились также файлы владельца, созданного в расширении
Можно также установить отбор по владельцу при переносе:

Следует отметить, что расширение не тестировалось в облачной технологии ( работа в модели сервиса). Но оно внедрено в одном из моих проектов “Расширение Соглашение платежей для бухгалтерии 3.0 “,в котором менеджер должен присоединить счет на оплату или заказ от поставщика в документе Заявка на оплату перед согласованием или отклонения заявки .
Шаблон расширения с инструкциями по внедрению в прикладных расширениях стоит 8 000 р. Для его приобретения напишите на почту master1c8x@mail.ru
Полный список дополнительных отчетов и обработок можно посмотреть здесь
Подскажите, а можете для особо одаренных начинающих программистов выложить расширение из примера?
Не могу Николай. Это уникальная работа стоит деньги. Этот функционал входит в одном из моих проектов “Согласование платежей” в расширении. В этой статьи я показываю, что возможно присоединить файлы в расширении с использованием подсистемы “Работа с файлами” из библиотеки БСП, несмотря на то, что объекты “Определяемые типы” не поддерживаются в расширении.
А за деньги данный кусочек тоже не вариант получить?
За деньги я мог бы послать демо расширение для любой конфигурации на базе БСП 3.1. Задание заключается в том, что нужно в расширяемой конфигурации на базе БСП 3.1 создать в расширении новый вид документ и присоединить к нему файлы с использование функционала “Работа с файлами”. Данная задача имеет практическое значение , но требует подключения расширения в небезопасном режиме. Расценка моих услуг 1000 р в час. Я потратил больше 8 часов, но могу уступить за 6 часов работы ( 6000 р =1000* 6 часов). Расширение использует все возможности функционала работы с файлами – можно хранить присоединенные файлы на томе или в двоичных данных в базе в зависимости от настройки функционала “Работа с файлами”
Цена вполне приемлемая.