Подключение к подсистеме Присоединенные файлы
Настройка определяемых типов
Включить собственный объект в определяемые типы:
ВладелецПрисоединенныхФайлов
ВладелецПрисоединенныхФайловОбъект
(только для справочников)ВладелецПрисоединенныхФайловБЗК
(в ЗУП)
Если владелец файла - это документ. то необходимо его включить в состав типов свойства Источник
подписки на собыите УстановитьПометкуУдаленияПрисоединенныхФайловДокументов
. Если подписки нет - создаем свою:
Свойство | Значение |
---|---|
Источник | <ПодключаемыйОбъектМетаданных> |
Событие | ПередЗаписью |
Обработчик | РаботаСФайлами.УстановитьПометкуУдаленияПрисоединенныхФайловДокументов |
Создание справочника для хранения информации о файлах
- Скопировать любой стандартный справочник БСП, имя которого заканчивается на
ПрисоединенныеФайлы
(например,ПользователиПрисоединенныеФайлы
). - Скопированный справочник по шаблону:
<ПодключаемыйОбъектМетаданных>ПрисоединенныеФайлы
. Например:ПодключаемыйОбъектМетаданныхПрисоединенныеФайлы
- В скопированном справочнике
<ПодключаемыйОбъектМетаданных>ПрисоединенныеФайлы
необходимо откорректировать тип реквизитаВладелецФайла
. Как тип необходимо указать тот объект, который подключается к подсистеме. НапримерСправочникСсылка.ПодключаемыйОбъектМетаданных
- Справочник
<ПодключаемыйОбъектМетаданных>ПрисоединенныеФайлы
нужно включить в определяемые типыПрисоединенныйФайл
ПрисоединенныйФайлОбъект
.
- Включить в состав плана обена
ОбновлениеИнформационнойБазы
- В подписке на событие
ОпределитьФормуПрисоединенногоФайла
включить в состав типов свойстваИсточник
. Если подписки на событие нет, то создаем новую:
Свойство | Значение |
---|---|
Источник | <ПодключаемыйОбъектМетаданных>ПрисоединенныеФайлы |
Событие | ОбработкаПолученияФормы |
Обработчик | РаботаСФайламиКлиентСервер.ОпределитьФормуПрисоединенногоФайла |
Настройка формы объекта
Создать форму элемента (при отсутствии). В модуле формы необходимо добавить следующий код:
&НаСервереПроцедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
// СтандартныеПодсистемы.РаботаСФайлами
// Для отображения гиперссылки ПараметрыГиперссылки = РаботаСФайлами.ГиперссылкаФайлов(); ПараметрыГиперссылки.Размещение = "КоманднаяПанель";
ДобавляемыеЭлементы.Добавить(ПараметрыГиперссылки);
РаботаСФайлами.ПриСозданииНаСервере(ЭтотОбъект, ДобавляемыеЭлементы); // Конец СтандартныеПодсистемы.РаботаСФайлами
КонецПроцедуры
&НаКлиентеПроцедура ПриОткрытии(Отказ)
// СтандартныеПодсистемы.РаботаСФайлами РаботаСФайламиКлиент.ПриОткрытии(ЭтотОбъект, Отказ); // Конец СтандартныеПодсистемы.РаботаСФайлами
КонецПроцедуры
&НаКлиентеПроцедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
// СтандартныеПодсистемы.РаботаСФайлами РаботаСФайламиКлиент.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия); // Конец СтандартныеПодсистемы.РаботаСФайлами
КонецПроцедуры
// СтандартныеПодсистемы.РаботаСФайлами&НаКлиентеПроцедура Подключаемый_КомандаПанелиПрисоединенныхФайлов(Команда) РаботаСФайламиКлиент.КомандаУправленияПрисоединеннымиФайлами(ЭтотОбъект, Команда);КонецПроцедуры// Конец СтандартныеПодсистемы.РаботаСФайлами
Настройка формы списка
- Определить запрос для списка как
Произвольный
- В настройках списка на вкладке
Запрос
добавляем еще одно полеЕстьФайлы
, полученное в результате левого соединения с регистромНаличие файлов
. В простейшем варианте запрос будет выглядеть так:
ВЫБРАТЬ ДокументЗаявкаНаРазработку.Ссылка КАК Ссылка, //Произвольные поля, ВЫБОР КОГДА НаличиеФайлов.ЕстьФайлы ЕСТЬ NULL ТОГДА 0 КОГДА НаличиеФайлов.ЕстьФайлы ТОГДА 1 ИНАЧЕ 0 КОНЕЦ КАК ЕстьФайлыИЗ Документ.ЗаявкаНаРазработку КАК ДокументЗаявкаНаРазработку ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НаличиеФайлов КАК НаличиеФайлов ПО ДокументЗаявкаНаРазработку.Ссылка = НаличиеФайлов.ОбъектСФайлами
- После сохранения произвольного запроса необходимо вывести новое поле
ЕстьФайлы
в таблицу формы. В свойствах этого реквизита устанавливаем свойствоВид
в значениеПоле картинки
, свойствоПоложениеЗаголовка
в значениеНет
, а в свойствеКартинкаЗначений
выбираем стандартную БСПшную картинкуКоллекцияСкрепка
, которая находится во вкладкеИз конфигурации
ДОПОЛНИТЕЛЬНО. Вывод поля картинки на форму объекта
Чтобы на форме объекта отображать картинку (например, изображение товара), нужно:
- Создать реквизит объекта, который будет хранить ссылку на элемент справочника - хранилища файлов (
<ПодключаемыйОбъектМетаданных>ПрисоединенныеФайлы
) - В форме объекта:
- Создаем группу, где будет располагаться поле картинки.
- В модуле формы дополнительно прописываем:
&НаСервереПроцедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
// СтандартныеПодсистемы.РаботаСФайлами
...
ПараметрыПоля = РаботаСФайлами.ПолеФайла(); ПараметрыПоля.ПоказыватьКоманднуюПанель = Ложь; ПараметрыПоля.ПутьКДанным = "Объект.ФайлКартинки"; ПараметрыПоля.ПутьКДаннымИзображения = "ИзображениеНаФорме"; ПараметрыПоля.Размещение = "ГруппаИзображениеТовара"; // Имя созданной группы
...
ДобавляемыеЭлементы.Добавить(ПараметрыПоля);
...
РаботаСФайлами.ПриСозданииНаСервере(ЭтотОбъект, ДобавляемыеЭлементы); // Конец СтандартныеПодсистемы.РаботаСФайлами
КонецПроцедуры
// СтандартныеПодсистемы.РаботаСФайлами&НаКлиентеПроцедура Подключаемый_ПолеПредпросмотраНажатие(Элемент, СтандартнаяОбработка)
РаботаСФайламиКлиент.ПолеПредпросмотраНажатие(ЭтотОбъект, Элемент, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиентеПроцедура Подключаемый_ПолеПредпросмотраПеретаскивание(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка)
РаботаСФайламиКлиент.ПолеПредпросмотраПеретаскивание(ЭтотОбъект, Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиентеПроцедура Подключаемый_ПолеПредпросмотраПроверкаПеретаскивания(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка)
РаботаСФайламиКлиент.ПолеПредпросмотраПроверкаПеретаскивания(ЭтотОбъект, Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка);
КонецПроцедуры
// Конец СтандартныеПодсистемы.РаботаСФайлами
Исправление ошибки БСП при работе с полями картинки
В общем модуле РаботаСФайламиКлиент
в процедуре ОбновитьОбластьПредпросмотра
нужно исправить:
&ИзменениеИКонтроль("ОбновитьОбластьПредпросмотра")Процедура IS_ОбновитьОбластьПредпросмотра(Форма, НомерЭлемента, Файл)
Если ТипЗнч(НомерЭлемента) = Тип("Строка") Тогда НомерЭлементаЧислом = Число(НомерЭлемента); НомерЭлементаСтрокой = НомерЭлемента; Иначе НомерЭлементаЧислом = НомерЭлемента; #Удаление НомерЭлементаСтрокой = Формат(НомерЭлемента, "ЧГ=;"); #КонецУдаления #Вставка НомерЭлементаСтрокой = Формат(НомерЭлемента, "ЧН=0; ЧГ="); #КонецВставки КонецЕсли;
...
КонецПроцедуры