Прикрепление внешних файлов к документам, справочникам и другим объектам для управляемого приложения (интерфейс такси)

11.05.21

Разработка - Инструментарий разработчика

Прикрепление файлов к объектам для управляемого приложения (такси) без БСП. Всего два регистра сведений и одно перечисление.

Скачать файлы

Наименование Файл Версия Размер
Прикрепление внешних файлов к документам, справочникам и другим объектам на управляемых формах (интерфейс такси):
.cf 40,28Kb
83
.cf 40,28Kb 83 Скачать
Прикрепление внешних файлов к документам, справочникам и другим объектам для управляемого приложения (интерфейс такси):
.cfe 37,66Kb
25
.cfe 37,66Kb 25 Скачать

Если в Вашей самописной конфе есть необходимость прикреплять файлы к документам, элементам справочника и т.д. и т.п., а библиотку стандартных подсистем (БСП) тащить не охота, то можно воспользоваться моим решением. Его достоинство - это лёгкость внедрения, нет никаких общих модулей и справочников. Основной функционал расположен в модуле менеджера регистра сведений. Недостатки конечно есть. Это не такой мощный функционал как в БСП, но для многих такой функционал является избыточным. На тонком, толстом клиенте работает без ограничений, на Веб-клиенте работает на Internet Explorer. При первом вызове формы прикрепления файлов система может предложить установить ActiveX от фирмы 1С "Расширение для работы с файлами". Это расширение браузера, которое находится внутри платформы, ничего искать и скачивать не надо. 

Вот, что вам нужно будет сделать для внедрения данной подсистемы в свою разработку:

1 Вариант. Вы можете скачать расширение РасшПрикрепФайлы.cfe и внедрить его в свою конфигурацию. Необходимо, чтобы в Вашей конфигурации был установлен "Режим совместимости" не ниже 8.3.12. Вам останется только установить нужный тип для измерения "ОбъектСсылка" в РегистреСведений "ХранилищеФайлов" (см. картинку ниже)

И настроить интерфейс форм документов и элементов справочников для вызова основной формы списка регистра "ХранениеФайлов" (см. пункт "КАК НАСТРОИТЬ ИНТЕРФЕЙС ПОЛЬЗОВАТЕЛЯ ДЛЯ РАБОТЫ С ФАЙЛАМИ").

2. Вариант. Перетащите объекты из расширения РасшПрикрепФайлы.cfe  в свою конфигурацию.

Перетащите перечисление "Место хранения прикрепленных файлов", а затем два регистра сведений: "Настройка хранения файлов" и "Хранилище файлов".  Для удобства я добавил эти объекты в подсистему "Прикрепленные файлы".

Регистр сведений "Настройка хранения файлов" является периодическим в пределах секунды (можете изменить периодичность как вам нужно) с независимой записью данных. Он не имеет измерений т.к. просто хранит текущую для всех настройку. Ресурсы такие:

"МестоХраненияФайлов" имеет тип ПеречислениеСсылка.МестоХраненияПрикрепленныхФайлов

"КаталогФайлов" тип Строка 255

"ИспользоватьСжатие" тип Булево

"МетодСжатия" тип Число (1,0)

"МаксРазмерФайлаДляИБ" тип Число (10,0)

Регистр сведений "ХранилищеФайлов" является периодическим в пределах секунды (можете отключить периодичность, но добавить измерение "ДатаЗагрузки" типа ДатаВремя. Тогда вам придётся допилить программный код в части добавления записей в регистр)  с независимой записью данных.

Измерения:

"ОбъектУИД" типа УникальныйИдентификатор. Служит для формирования названия папки на диске в случае, когда файл сохраняется не в базе.

"ОбъектСсылка" типа ДокументСсылка, СправочникСсылка. Для хранения ссылки на объект к которому прикрепляется данный файл.

"МестоХраненияФайлов" типа ПеречислениеСсылка.МестоХраненияПрикрепленныхФайлов

"ИмяФайла" типа Строка 255

"РасширениеИмениФайла" тип Строка (10)

"Автор" типа СправочникСсылка.Пользователь

Ресурсы:

"ХранилищеДвоичныхДанных" типа ХранилищеЗначения

Справедливости ради нужно добавить, что должен быть в конфигурации справочник "Пользователь" т.к. есть в регистре "ХранилищеФайлов" измерение - "Автор", которое имеет тип справочника "Пользователь". В вашей конфе он может иметь другое название, но смысл тот же. Для измерения "Автор" нужно назначить правильный тип.

Проследите! Если в вашей конфигурации применяется механизм разделения данных по средствам использования общего реквизита, то нужно исключить два этих регистра из состава объектов, где определено разделение данных!

 

КАК НАСТРОИТЬ ИНТЕРФЕЙС ПОЛЬЗОВАТЕЛЯ ДЛЯ РАБОТЫ С ФАЙЛАМИ.

На форму объекта нужно добавить реквизит "Файлы" типа "Строка, 255". Затем на форму добавить обычную группу "Сканы и файлы". Теперь перетащите реквизит в группу "Сканы и файлы". Для поля надписи "Файлы" установите флажок "Гиперссылка".

Для события "Нажатие" определим код:

Так же нужно добавить код в стандартный обработчик формы  - "ПриСозданииНаСервере":

Проделайте эти действия с формами элементов справочников и документов для которых необходимо прикреплять файлы.

Больше никаких изменений в конфигурации делать не надо.

Для работы системы необходимо добавить запись в регистре "Настройка хранения файлов", например:

Данная статья расчитана на разработчиков прикладных программ. Это решение не является полностью готовой системой для тиражирования. Возможно что-то нужно будет допилить и довести до ума...

Всем удачи и здоровья!

Прикрепление файлов без БСП; Клиент-серверный вариант прикрепленных файлов;

См. также

SALE! 20%

Infostart Toolkit: Инструменты разработчика 1С 8.3 на управляемых формах

Инструментарий разработчика Роли и права Запросы СКД Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

10000 8000 руб.

02.09.2020    122363    673    389    

716

SALE! 25%

Infostart PrintWizard

Пакетная печать Печатные формы Инструментарий разработчика Платформа 1С v8.3 Запросы 1С:Зарплата и кадры бюджетного учреждения 1С:Конвертация данных 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Платные (руб)

Инструмент, позволяющий абсолютно по-новому взглянуть на процесс разработки печатных форм. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и "прозрачность" разработки, а также навести порядок в многообразии корпоративных печатных форм.

18000 15300 руб.

06.10.2023    7337    22    6    

39

SALE! 20%

Infostart УДиФ: Управление данными и формами

Инструменты администратора БД Инструментарий разработчика Роли и права Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Расширение позволяет без изменения кода конфигурации выполнять проверки при вводе данных, скрывать от пользователя недоступные ему данные, выполнять код в обработчиках. Не изменяет данные конфигурации, легко устанавливается практически на любую конфигурацию на управляемых формах.

10000 8000 руб.

10.11.2023    3628    11    1    

34

SALE! 30%

PowerTools

Инструментарий разработчика Инструменты администратора БД Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Платные (руб)

Универсальный инструмент программиста для администрирования конфигураций. Сборник наиболее часто используемых обработок под единым интерфейсом.

3600 2520 руб.

14.01.2013    177823    1074    0    

851

Многопоточность. Универсальный «Менеджер потоков» 2.1

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Восстановление партий или взаиморасчетов, расчет зарплаты, пакетное формирование документов или отчетов - теперь все это стало доступнее. * Есть желание повысить скорость работы медленных алгоритмов! Но... * Нет времени думать о реализации многопоточности? * о запуске и остановке потоков? * о поддержании потоков в рабочем состоянии? * о передаче данных в потоки и как получить ответ из потока? * об организации последовательности? Тогда ЭТО - то что надо!!!

5000 руб.

07.02.2018    99375    239    97    

296

[ЕХТ] Фреймворк для Расширений 1С

Инструментарий разработчика Платформа 1С v8.3 Управляемые формы Платные (руб)

"Фреймворк для Расширений 1С" это универсальное и многофункциональное решение, упрощающее разработку и поддержку создаваемых Расширений. Поставляется в виде комплекта из нескольких Расширений с открытым исходным кодом. Работает в любых Конфигурациях в режиме Управляемого приложения с режимом совместимости 8.3.12 и выше без необходимости внесения изменений в Конфигурацию.

3000 руб.

27.08.2019    18136    6    8    

40

1С HTML Шаблоны / HTML Templates

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Быстрая и удобная обработка для работы с шаблонами HTML. Позволяет легко и быстро формировать код HTML.

2040 руб.

27.12.2017    28119    3    10    

15

Выполнение произвольного кода или запроса с параметрами через Web-сервис (замена COM-подключений)

Инструментарий разработчика Обмен между базами 1C Платформа 1С v8.3 Платные (руб)

В процессе работы в 1С часто возникает потребность получить данные из другой базы.  Обычно это делается через COM-соединение, и время выполнения запроса при этом оставляет желать лучшего. В данной публикации представлено универсальное решение, позволяющее практически моментально выполнить произвольный код или запрос с параметрами в другой информационной базе через Web-сервис.

2400 руб.

24.09.2019    23607    15    15    

32
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Wolfis 7 14.04.17 16:53 Сейчас в теме
а не проше было бы сделать общей командой?
3. Igor030370 211 14.04.17 20:51 Сейчас в теме
(1)хорошая идея..... нет предела совершенству!
2. DAnry 8 14.04.17 17:15 Сейчас в теме
Клас! Вместо громоздкой БСП компактное и красивое решение. Отдельное спасибо за толковое описание.
4. user797918 13.12.17 00:39 Сейчас в теме
(2) Не соглашусь с Вами - не совсем толковое описание, нет подробного описания для регистра сведений: "Настройка хранения файлов" и "Хранилище файлов" - какие типы нужно выставлять в "Ресурсах" - здесь для меня лично остается загадкой((((
п.с. уж простите меня самоучку - не помешало бы подробного описания!
5. Aleator 18.12.18 09:38 Сейчас в теме
Классная вещь! Спасибо автору!
6. NoMax 232 31.07.19 14:39 Сейчас в теме
Спасибо пригодится.
Но только не понятно для чего лишняя точка в имена файлов добавляется?
7. rinik88 31 23.09.19 07:55 Сейчас в теме
8. AndrewUs 11 13.03.20 13:40 Сейчас в теме
При настройке хранения файлов в информационной базе и попытке добавить их в базу появляется ошибка
Прикрепленные файлы:
9. AndrewUs 11 13.03.20 14:38 Сейчас в теме
Попробовал действовать по рекомендации публикации: ВАРИАНТ 2, перенес перечисление и регистры, добавил в существующий документ ссылку, но при попытке добавить файл выдает ошибку по параметру UID
Прикрепленные файлы:
10. Igor030370 211 16.03.20 09:39 Сейчас в теме
заимствуйте лучше объекты из расширения. Либо добавьте расширение в свою конфигурацию
вот ссылка, качайте бесплатно https://cloud.mail.ru/public/324Y/54hJvZ5rm
user1628996; sponchebob; helen_1C; masterprint; vadeem_13; +5 Ответить
11. Скользящий1 17.06.20 18:10 Сейчас в теме
Та же проблема, что в сообщении (9). с уид.
12. Скользящий1 18.06.20 14:14 Сейчас в теме
Поправил ошибку в коде после этого заработало.

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	// Вставить содержимое обработчика.
	//Список.Параметры.УстановитьЗначениеПараметра("ОбъектУИД",Параметры.ОбъектУИД);
	Список.Параметры.УстановитьЗначениеПараметра("ОбъектУИД",Параметры.Объект);
КонецПроцедуры
13. masterprint 29.03.21 12:35 Сейчас в теме
Игорь, спасибо за ваш труд! Как раз для моей небольшой задачи.
GutaGroup; +1 Ответить
14. se77777 08.05.21 08:25 Сейчас в теме
Игорь, здравствуйте. Проблема с отображением картинок. Не могли бы вы продублировать пункт "КАК НАСТРОИТЬ ИНТЕРФЕЙС ПОЛЬЗОВАТЕЛЯ ДЛЯ РАБОТЫ С ФАЙЛАМИ."? Спасибо.
15. Igor030370 211 11.05.21 16:55 Сейчас в теме
(14)картинки в публикации слетели. Перезалил
16. lemilk 2 27.05.21 18:57 Сейчас в теме
Установил расширение.
Добавил в него форму справочника но получаю сообщение что не найдена процедура ПолучитьСтрокуФайлов(Объект.Ссылка)
18. Igor030370 211 28.05.21 07:48 Сейчас в теме
(16)
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	Файлы=ПолучитьСтрокуФайлов(Объект.Ссылка);
	Если ПустаяСтрока(Файлы) Тогда 
		Файлы="Нет прикреплений";
	КонецЕсли;
КонецПроцедуры

&НаСервере
Функция ПолучитьСтрокуФайлов(Ссылка)

	Возврат РегистрыСведений.ХранилищеФайлов.ПолучитьСтрокуФайлов(Ссылка);

КонецФункции // ПолучитьСтрокуФайлов()
Показать
17. lemilk 2 27.05.21 19:47 Сейчас в теме
Ошибка: "Тип не определен (ОбъектУИД)"
19. Igor030370 211 28.05.21 07:56 Сейчас в теме
(17)
ОбъектУИД
Прикрепленные файлы:
20. lemilk 2 28.05.21 10:34 Сейчас в теме
Все работает!
Очень удобная разработка!
21. lemilk 2 28.05.21 11:35 Сейчас в теме
Файлы только с сервера можно загружать? Как с клиента сделать?
22. rhtr 90 29.04.22 14:31 Сейчас в теме
(21)
В модуле менеджера регистра сведений "ХранилищеФайлов"

Процедура ДобавитьЗаписьВРегистр(знач ДатаЗагрузки,знач п_ОбъектСсылка...........

Добавьте код:

ИмяВременногоФайла = КаталогВременныхФайлов()+п_Файл.Имя;
		ДвоичныеДанные = ПолучитьИзВременногоХранилища(п_Файл.АдресВременногоХранилища);
		ДвоичныеДанные.Записать(ИмяВременногоФайла);
		п_Файл.ПолноеИмя = ИмяВременногоФайла; 


перед "Если л_МестоХраненияФайлов = Перечисления.МестоХраненияПрикрепленныхФайлов.ИнформационнаяБаза Тогда":

Автору +
23. ogursoft 12.05.22 14:34 Сейчас в теме
Все заработало через расширение, но есть 3 нюанса:
1. Не дает добавлять файлы пока не сохранишь объект (ну может это и правильно?)
2. После Закрытия формы добавленных файлов не обновляется гиперссылка на форме
3. При попытке удалить файл появляется сообщение "Вам недоступно удаление"
24. ogursoft 12.05.22 15:44 Сейчас в теме
И еще: Пользователю с полными правами не дает удалить, хотя роль УдалениеПрикрепленныхФайлов ему добавлена
Пользователю без административных прав выдает ошибку при добавлении:
Пользователю недостаточно прав для выполнения операции.
{РасшПрикрепФайлы РегистрСведений.ХранилищеФайлов.Форма.УпрФормаСписка.Форма(363)}:л_Соединения=ПолучитьСоединенияИнформационнойБазы();
{РасшПрикрепФайлы РегистрСведений.ХранилищеФайлов.Форма.УпрФормаСписка.Форма(52)}:Если ПолучитьТипКлиента() = "WebServerExtension" Тогда

по причине:
Пользователю недостаточно прав для выполнения операции.
25. sponchebob 20 17.03.23 05:43 Сейчас в теме
Автору респект и огромное спасибо, подкорректировал возможность удаления файлов:
В модуле формы "УпрФормаСписка" есть функция "Функция ДоступноУдаление()", в ней есть условие проверки доступности роли, которое в случае успеха возвращает ЛОЖЬ, а потом идет возврат ИСТИНА, т.е. в независимости от результата проверки возврат ИСТИНА...немного подправил:

&НаСервереБезКонтекста
Функция ДоступноУдаление()
	Если НЕ РольДоступна("УдалениеПрикрепленныхФайлов") Тогда 
			Возврат Ложь;
	Иначе
		Возврат Истина;
	КонецЕсли;
КонецФункции // ДоступноУдаление()


БЫЛО:

&НаСервереБезКонтекста
Функция ДоступноУдаление()
	Если НЕ РольДоступна("УдалениеПрикрепленныхФайлов") Тогда 
			Возврат Ложь;
	КонецЕсли;
	Возврат Истина;
КонецФункции // ДоступноУдаление()
26. sponchebob 20 17.03.23 07:34 Сейчас в теме
С проверкой ролью что-то пошло не так, переделал функцию ДоступноУдаление(), заработало:

&НаСервереБезКонтекста
Функция ДоступноУдаление()
	
	юз = Пользователи.ТекущийПользователь();
		ГруппаДоступа1 = Справочники.ГруппыДоступа.НайтиПоНаименованию("Администратор");
	Если ГруппаДоступа1.Пользователи.Найти(юз, "Пользователь") = Неопределено Тогда //не  члены группы "Администратор"
		Возврат(ЛОЖЬ);

	Иначе		//ребята из группы "Администратор"
		Возврат(ИСТИНА);             
			
		КонецЕсли;
КонецФункции
Показать
27. sponchebob 20 20.03.23 05:09 Сейчас в теме
Друзья, еще 1 нюанс: если Вы используете не файловую 1с, а серверную, то, при использовании записи на общий сетевой ресурс, необходимо на данном ресурсе (на "шаре") создать УЗ (учетную запись) пользователя с таким же логином и паролем, от которой у Вас работает сервер 1с (запускается служба агента 1с....) и дать на общем ресурсе права на запись в соответствующий каталог для данной УЗ.
user1628996; Igor030370; +2 Ответить
Оставьте свое сообщение