IE 2017

Прикрепление внешних файлов к документам и справочникам 1С 8.3 (управляемые формы)

0. Николай Борисов (omenfarsh) 81 15.10.15 15:28 Сейчас в теме
В данной статье мы рассмотрим, как просто и быстро в любую конфигурацию на базе управляемых форм добавить функционал прикрепления внешних файлов к документам и справочникам.
Я начну описание с нуля, т.е. с создания пустой конфигурации. Так что даже любой малоопытный разработчик (вроде меня =) ) сможет реализовать данный функционал в своей или уже написанной конфигурации.
Если Вам не хочется разбираться с ниже написанной инструкцией, можете скачать файл*.doc с описанием и скриншотами, либо уже саму готовую конфигурацию.

Перейти к публикации

Вознаграждение за ответ
Показать полностью
Комментарии
1. борян петров (TODD22) 16 15.10.15 18:57 Сейчас в теме
Так что даже любой малоопытный разработчик (вроде меня =) ) сможет реализовать данный функционал в своей или уже написанной конфигурации.

Хранение произвольных данных в конфигурации(сканов, фотографий, документов и тд) не самый хороший вариант.

Я бы сказал что даже очень не хороший. Прихожу как то в одну компанию. А они говорят у нас база тормозит.
Смотрю базу размер 76 Гб. База на SQL сервере. Какой то талантливый парень дописал хранение документов в реквизит объекта.
Начинаю разбираться... в итоге вес учётных данных в базе 1.5 Гб. А всё остальное натолкали пользователи, сканов, фотографий и тд . Пришлось выносить во внешнее хранилище....
Вес некоторых фотографий доходил до 7 Мб. Натолкают 10-15 фотографий в базу... а потом у них тормозит всё....
user778376; sivatorov; Lena272; omenfarsh; zqzq; +5 Ответить 2
2. Николай Борисов (omenfarsh) 81 16.10.15 12:59 Сейчас в теме
(1) TODD22, согласен с вами полностью! Но я столкнулся с другой ситуацией, когда надо было написать конфигурацию для учета заявок и к каждой заявке прикреплять несколько документов (решения, отчет по выполнению и т.д.). При этом базу часто переносят с компьютера на компьютер и прикрепленные файлы могут просто остаться в другом месте. Т.к. конфа была самописная и весила менее 10Мб, то мое решение оказалось вполне уместным.
3. Владимир Чепурной (91197ch) 29 16.10.15 15:15 Сейчас в теме
А мы в этих же управляемых формах сделали так: есть закладка "Файлы" в нее добавляешь файл, а он передает этот файл в секретный каталог на сервере и сохраняет внутри программы путь к этому файлу. В итоге в Базе хранятся лишь ссылка на файлы. Сами файлы в каталоге на сервере, который архивируется каждый день. И база не растет и ограничений на файлы нет. Есть правда пока нюанс. Работает только внутри сети. Если кто-то заходит через Web сервер то доступ к файлам не дается.
4. Франко Деллиани (Franco) 66 16.10.15 15:17 Сейчас в теме
1.Скриншот через «о». Но это так, к слову
2.Хорошо было бы не привязывать 1 одному дркументу или справочнику владельцу. Сделать регистр сведений, измерения: «Ссылка на владельца» и «Ссылка на файл».
Тогда можно 1 хранимый файл привязывать к нескольким. Это кажется лишним? Ничего подобного - у меня уже такая необходимость случилась.
Тогда при добавлении справочника, допустим, «Номенклатура» его тип можно добавить в тип измерения.
3.Да, программа будет жутко торможить при считывании об'екта. Но при указании ссылки на справочник файлов или при испролльзовании связывающего регистра - никак. У меня ещё и не такие монстры в наследство достались...
4.И всё же файлы лучше хранить на диске - в справочнике файлы указывать ссылку на местоположение на сетевом диске. (у этого местоположения доступ пользователя, от которого запущен сервер 1С и недоступность пользователей). И - самое интересное - файлы легко архивировать
5.А вот шаблоны, бланки договоров и прочее «редкое и маломеняемое» - это да, самые что ни на есть хранимые файлы
6.Адрес временного хранилища в реквизите хранить не имеет смысла. Файл во временном хранилище живёт пока открыта форма, где он загружен.
5. Франко Деллиани (Franco) 66 16.10.15 15:21 Сейчас в теме
Забыл
Откажитесь от «ПолучитьФайлы» и «ПоместитьФайлы» в пользу «НачатьПолучениеФайлов» и «НачатьПомещениеФайлов». Рефакторинг в конфигурации в помощь.
user778376; +1 Ответить
6. Николай Борисов (omenfarsh) 81 17.10.15 09:26 Сейчас в теме
Спасибо всем за комментарии! Буду улучшать свой "шаблон" дальше и по возможности им поделюсь!
user778376; +1 Ответить
7. борян петров (TODD22) 16 18.10.15 10:47 Сейчас в теме
&НаСервере
Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
//Удалить файл из временного хранилища
Если ЭтоАдресВременногоХранилища(СсылкаНаФайлВоВременномХранилище) Тогда
УдалитьИзВременногоХранилища(СсылкаНаФайлВоВременномХранилище);
КонецЕсли;
КонецПроцедуры
 
...Показать Скрыть

Мне кажется вот эта часть кода не нужна. Если временное хранилище привязано к форме то после закрытия формы оно будет очищено автоматически.
И принудительно при записи объекта его большого смысла очищать нет.
8. Ловыгин Антон (wunderland) 200 21.10.15 09:31 Сейчас в теме
Все равно коллега - молодец. Сделал, оформил, выложил... Понятно и доступно. А набор напильников у каждого свой :)
9. Павел Малахов (sermalp) 28.10.15 17:54 Сейчас в теме
(3) 91197ch, А есть ли доступ к секретному каталогу для пользователя от которого агент 1С работает?
10. Павел Малахов (sermalp) 28.10.15 18:01 Сейчас в теме
(1) TODD22, можете сказать оптимальное, на ваш взгляд, решение задачи - хранение файлов в локальном каталоге; и как их потом отдавать (скачать) пользователю при клике по гиперссылке, например?
11. Александр Отт (MeatCrash) 24.02.16 09:52 Сейчас в теме
А нет ли у Вас случайно такого же примера, в котором ссылки на файлы были помещены в табличную часть документа? И где их можно было выбирать и видеть куда эти ссылки указывают (с указанием пути до файла и его имени)?
12. Райса Хамитова (HamitovaRaisa) 18.05.16 08:26 Сейчас в теме
Спасибо за подробную раскладку, а то зависла я с добавлением файла в управляемой форме уже продолжительное время. Попробую реализовать по этому алгоритму. А вместо справочника регистр сведений можно использовать?
13. Николай Борисов (omenfarsh) 81 18.05.16 11:46 Сейчас в теме
(12) HamitovaRaisa, справочник с файлами не обязательно делать доступным для клиента, можно лишь оставить переход по ссылкам из формы документа или справочника. С Регистрами, если честно, не пробывал, но как минимум в Измерения нельзя добавить ХранилищеЗначения.
14. anry mc (AnryMc) 714 07.07.16 09:44 Сейчас в теме
Итак, справочник «Файлы» будет содержать два реквизита: Файл (для хранения двоичных данных), ИмяФайла (для хранения имени загруженного файла) и СсылкаНаВладельца (для привязки файла к нужному для нас документу).


Файл + ИмяФайла + СсылкаНаВладельца <> 2 реквизита
15. Виктор Иванов (user613332_victor241) 09.01.17 13:14 Сейчас в теме
Добрый день, сделал все по примеру, при попытке получить файлы ошибка

{Документ.ТестФайлы.Форма.ФормаДокумента.Форма(22)}: Ошибка при вызове метода контекста (Выполнить)
ТЗ = Запрос.Выполнить().Выгрузить();
по причине:
{(5, 9)}: Таблица не найдена "КритерийОтбора.СвязанныеДокументы"
<<?>>КритерийОтбора.СвязанныеДокументы(&ЗначениеКритерияОтбора) КАК СтруктураПодчиненности
16. Виктор Иванов (user613332_victor241) 09.01.17 16:27 Сейчас в теме
Приношу свои извинения, разобрался в чем дело))
17. Николай Борисов (omenfarsh) 81 09.01.17 19:23 Сейчас в теме
18. Андрей Андреев (Rebelwek) 23.01.17 16:20 Сейчас в теме
Отличный пример! Все получилось
19. Saint esqado (esqado) 09.06.17 14:23 Сейчас в теме
И перетаскиваем в нее реквизиты так как показано на картинке ниже.

Видимо что-то сломалось.
20. Дмитрий Осипов (user778376) 24.06.17 17:19 Сейчас в теме
На шаге "5" - И перетаскиваем в нее реквизиты так как показано на картинке ниже. Аналогично создаем еще одну такую группу с названием «Файлы» и перетаскиваем в нее «Список Документов»
Картинки нет ; ) И тут чтот не понятно.
21. Андрей Черкасов (user797081) 18.07.17 14:20 Сейчас в теме
Со скринами что то нет то, не показываются
Оставьте свое сообщение