Работа с файлами в расширении

Печать (Ctrl+P)

Подсистема работа с файлами БСП.

Расширение стандартной подсистемы работы с файлами, версия 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 р. Для его приобретения обращайтеcь ко master1c8x@mail.ru

Полный список дополнительных отчетов и обработок можно посмотреть здесь

0

Автор публикации

не в сети 3 дня

master1c8

1
Комментарии: 38Публикации: 476Регистрация: 25-12-2016

5 Replies to “Работа с файлами в расширении”

  1. Николай

    Подскажите, а можете для особо одаренных начинающих программистов выложить расширение из примера?

    0
    • master1c8

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

      0
    • master1c8

      За деньги я мог бы послать демо расширение для любой конфигурации на базе БСП 3.1. Задание заключается в том, что нужно в расширяемой конфигурации на базе БСП 3.1 создать в расширении новый вид документ и присоединить к нему файлы с использование функционала “Работа с файлами”. Данная задача имеет практическое значение , но требует подключения расширения в небезопасном режиме. Расценка моих услуг 1000 р в час. Я потратил больше 8 часов, но могу уступить за 6 часов работы ( 6000 р =1000* 6 часов). Расширение использует все возможности функционала работы с файлами – можно хранить присоединенные файлы на томе или в двоичных данных в базе в зависимости от настройки функционала “Работа с файлами”

      0

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.