Если в Вашей самописной конфе есть необходимость прикреплять файлы к документам, элементам справочника и т.д. и т.п., а библиотку стандартных подсистем (БСП) тащить не охота, то можно воспользоваться моим решением. Его достоинство — это лёгкость внедрения, нет никаких общих модулей и справочников. Основной функционал расположен в модуле менеджера регистра сведений. Недостатки конечно есть. Это не такой мощный функционал как в БСП, но для многих такой функционал является избыточным. На тонком, толстом клиенте работает без ограничений, на Веб-клиенте работает на Internet Explorer. При первом вызове формы прикрепления файлов система может предложить установить ActiveX от фирмы 1С "Расширение для работы с файлами". Это расширение браузера, которое находится внутри платформы, ничего искать и скачивать не надо.
Вот, что вам нужно будет сделать для внедрения данной подсистемы в свою разработку.
Перетащите перечисление "Место хранения прикрепленных файлов", а затем два регистра сведений: "Настройка хранения файлов" и "Хранилище файлов". Для удобства я добавил эти объекты в подсистему "Прикрепленные файлы".
Регистр сведений "Настройка хранения файлов" является периодическим в пределах секунды (можете изменить периодичность как вам нужно) с независимой записью данных. Он не имеет измерений т.к. просто хранит текущую для всех настройку. Ресурсы такие:
"МестоХраненияФайлов" имеет тип ПеречислениеСсылка.МестоХраненияПрикрепленныхФайлов
"КаталогФайлов" тип Строка 255
"ИспользоватьСжатие" тип Булево
"МетодСжатия" тип Число (1,0)
"МаксРазмерФайлаДляИБ" тип Число (10,0)
Регистр сведений "ХранилищеФайлов" является периодическим в пределах секунды (можете отключить периодичность, но добавить измерение "ДатаЗагрузки" типа ДатаВремя. Тогда вам придётся допилить программный код в части добавления записей в регистр) с независимой записью данных.
Измерения:
"Объект" типа УникальныйИдентификатор. Служит для формирования названия папки на диске в случае, когда файл сохраняется не в базе.
"ОбъектТип" типа ДокументСсылка, СправочникСсылка. Для хранения ссылки на объект к которому прикрепляется данный файл.
"МестоХраненияФайлов" типа ПеречислениеСсылка.МестоХраненияПрикрепленныхФайлов
"ИмяФайла" типа Строка 255
"РасширениеИмениФайла" тип Строка (10)
"Автор" типа СправочникСсылка.Пользователь
Ресурсы:
"ХранилищеДвоичныхДанных" типа ХранилищеЗначения
Справедливости ради нужно добавить, что должен быть в конфигурации справочник "Пользователь" т.к. есть в регистре "ХранилищеФайлов" измерение — "Автор", которое имеет тип справочника "Пользователь". В вашей конфе он может иметь другое название, но смысл тот же. Для измерения "Автор" нужно назначить правильный тип.
Проследите! Если в вашей конфигурации применяется механизм разделения данных по средствам использования общего реквизита, то нужно исключить два этих регистра из состава объектов, где определено разделение данных!
На форму объекта нужно добавить реквизит "Файлы" типа "Строка, 255". Затем на форму добавить обычную группу "Сканы и файлы". Теперь перетащите реквизит в группу "Сканы и файлы". Для поля надписи "Файлы" установите флажок "Гиперссылка".
Для события "Нажатие" определим код:
Так же нужно добавить код в стандартный обработчик формы — "ПриСозданииНаСервере":
Проделайте эти действия с формами элементов справочников и документов для которых необходимо прикреплять файлы.
Больше никаких изменений в конфигурации делать не надо.
Для работы системы необходимо добавить запись в регистре "Настройка хранения файлов", например:
Данная статья расчитана на разработчиков прикладных программ. Это решение не является полностью готовой системой для тиражирования. Возможно что-то нужно будет допилить и довести до ума…
Всем удачи и здоровья!
а не проше было бы сделать общей командой?
Клас! Вместо громоздкой БСП компактное и красивое решение. Отдельное спасибо за толковое описание.
(1)хорошая идея….. нет предела совершенству!
(2) Не соглашусь с Вами — не совсем толковое описание, нет подробного описания для регистра сведений: «Настройка хранения файлов» и «Хранилище файлов» — какие типы нужно выставлять в «Ресурсах» — здесь для меня лично остается загадкой((((
п.с. уж простите меня самоучку — не помешало бы подробного описания!
Классная вещь! Спасибо автору!
Спасибо пригодится.
Но только не понятно для чего лишняя точка в имена файлов добавляется?
Спасибо.