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

11.05.21

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

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Прикрепление внешних файлов к документам, справочникам и другим объектам на управляемых формах (интерфейс такси):
.cf 40,28Kb
85
85 Скачать (1 SM) Купить за 1 850 руб.
Прикрепление внешних файлов к документам, справочникам и другим объектам для управляемого приложения (интерфейс такси):
.cfe 37,66Kb
29
29 Скачать (1 SM) Купить за 1 850 руб.

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

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

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

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

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

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

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

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

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

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

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

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

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

Измерения:

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

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

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

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

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

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

Ресурсы:

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

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

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

 

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

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

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

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

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

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

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

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

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

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

См. также

SALE! 15%

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

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

10000 руб.

02.09.2020    159889    876    399    

862

SALE! 15%

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

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP и т.д.). Поддерживаются управляемые и обычные формы. Может выполнять свертку сразу нескольких баз данных и выполнять их автоматически без непосредственного участия пользователя.

8400 7140 руб.

20.08.2024    7962    59    24    

70

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

Инструмент для написания и отладки кода в режиме «1С:Предприятие». Представляет собой консоль кода с возможностью пошаговой отладки, просмотра значений переменных любых типов, использования процедур и функций, просмотра стека вызовов, вычисления произвольных выражений на встроенном языке в контексте точки останова, синтаксического контроля и остановки по ошибке. В консоли используется удобный редактор кода с подсветкой, контекстной подсказкой, возможностью вызова конструкторов запроса и форматной строки.

9360 руб.

17.05.2024    23567    68    45    

117

SALE! 15%

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

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

10000 8500 руб.

10.11.2023    10499    36    25    

61

SALE! 15%

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

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

22200 19980 руб.

06.10.2023    15469    35    7    

70

SALE! 35%

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

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

4800 3120 руб.

14.01.2013    188117    1140    0    

912

SALE! 15%

Инструментарий разработчика Программист 8.3.14 1С:Конвертация данных Россия Платные (руб)

Расширение для конфигурации “Конвертация данных 3”. Добавляет подсветку синтаксиса, детальную контекстную подсказку, глобальный поиск по коду.

15000 12750 руб.

07.10.2021    17339    6    32    

42

Инструментарий разработчика Программист Платные (руб)

Менеджер конфигураций 1С — альтернативный стартер информационных баз 1С:Предприятие.

1800 руб.

21.02.2023    7738    8    35    

23
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Wolfis 7 14.04.17 16:53 Сейчас в теме
а не проше было бы сделать общей командой?
3. Igor030370 213 14.04.17 20:51 Сейчас в теме
(1)хорошая идея..... нет предела совершенству!
2. DAnry 9 14.04.17 17:15 Сейчас в теме
Клас! Вместо громоздкой БСП компактное и красивое решение. Отдельное спасибо за толковое описание.
4. user797918 13.12.17 00:39 Сейчас в теме
(2) Не соглашусь с Вами - не совсем толковое описание, нет подробного описания для регистра сведений: "Настройка хранения файлов" и "Хранилище файлов" - какие типы нужно выставлять в "Ресурсах" - здесь для меня лично остается загадкой((((
п.с. уж простите меня самоучку - не помешало бы подробного описания!
5. Aleator 18.12.18 09:38 Сейчас в теме
Классная вещь! Спасибо автору!
6. NoMax 233 31.07.19 14:39 Сейчас в теме
Спасибо пригодится.
Но только не понятно для чего лишняя точка в имена файлов добавляется?
7. rinik88 32 23.09.19 07:55 Сейчас в теме
8. AndrewUs 13 13.03.20 13:40 Сейчас в теме
При настройке хранения файлов в информационной базе и попытке добавить их в базу появляется ошибка
Прикрепленные файлы:
9. AndrewUs 13 13.03.20 14:38 Сейчас в теме
Попробовал действовать по рекомендации публикации: ВАРИАНТ 2, перенес перечисление и регистры, добавил в существующий документ ссылку, но при попытке добавить файл выдает ошибку по параметру UID
Прикрепленные файлы:
10. Igor030370 213 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 213 11.05.21 16:55 Сейчас в теме
(14)картинки в публикации слетели. Перезалил
16. lemilk 3 27.05.21 18:57 Сейчас в теме
Установил расширение.
Добавил в него форму справочника но получаю сообщение что не найдена процедура ПолучитьСтрокуФайлов(Объект.Ссылка)
18. Igor030370 213 28.05.21 07:48 Сейчас в теме
(16)
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	Файлы=ПолучитьСтрокуФайлов(Объект.Ссылка);
	Если ПустаяСтрока(Файлы) Тогда 
		Файлы="Нет прикреплений";
	КонецЕсли;
КонецПроцедуры

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

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

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

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

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

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


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

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

по причине:
Пользователю недостаточно прав для выполнения операции.
28. user1628996 20.06.24 06:49 Сейчас в теме
(24) Здравствуйте! Такая же ошибка, хотя дал такие же правка как и администратору. Вам удалось выйти из ситуации?)
29. user1628996 20.06.24 08:42 Сейчас в теме
(28) Разобрался. Надо в ролях установить флажок "Активные пользователи"
Прикрепленные файлы:
25. sponchebob 21 17.03.23 05:43 Сейчас в теме
Автору респект и огромное спасибо, подкорректировал возможность удаления файлов:
В модуле формы "УпрФормаСписка" есть функция "Функция ДоступноУдаление()", в ней есть условие проверки доступности роли, которое в случае успеха возвращает ЛОЖЬ, а потом идет возврат ИСТИНА, т.е. в независимости от результата проверки возврат ИСТИНА...немного подправил:

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


БЫЛО:

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

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

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