Skip to content

Подключение к подсистеме Присоединенные файлы

Полезные файлы

Настройка определяемых типов

Включить собственный объект в определяемые типы:

  • ВладелецПрисоединенныхФайлов
  • ВладелецПрисоединенныхФайловОбъект (только для справочников)
  • ВладелецПрисоединенныхФайловБЗК (в ЗУП)

Если владелец файла - это документ. то необходимо его включить в состав типов свойства Источник подписки на собыите УстановитьПометкуУдаленияПрисоединенныхФайловДокументов. Если подписки нет - создаем свою:

СвойствоЗначение
Источник<ПодключаемыйОбъектМетаданных>
СобытиеПередЗаписью
ОбработчикРаботаСФайлами.УстановитьПометкуУдаленияПрисоединенныхФайловДокументов

Создание справочника для хранения информации о файлах

  • Скопировать любой стандартный справочник БСП, имя которого заканчивается на ПрисоединенныеФайлы (например, ПользователиПрисоединенныеФайлы).
  • Скопированный справочник по шаблону: <ПодключаемыйОбъектМетаданных>ПрисоединенныеФайлы. Например: ПодключаемыйОбъектМетаданныхПрисоединенныеФайлы
  • В скопированном справочнике <ПодключаемыйОбъектМетаданных>ПрисоединенныеФайлы необходимо откорректировать тип реквизита ВладелецФайла. Как тип необходимо указать тот объект, который подключается к подсистеме. Например СправочникСсылка.ПодключаемыйОбъектМетаданных
  • Справочник <ПодключаемыйОбъектМетаданных>ПрисоединенныеФайлы нужно включить в определяемые типы
    • ПрисоединенныйФайл
    • ПрисоединенныйФайлОбъект.
  • Включить в состав плана обена ОбновлениеИнформационнойБазы
  • В подписке на событие ОпределитьФормуПрисоединенногоФайла включить в состав типов свойства Источник. Если подписки на событие нет, то создаем новую:
СвойствоЗначение
Источник<ПодключаемыйОбъектМетаданных>ПрисоединенныеФайлы
СобытиеОбработкаПолученияФормы
ОбработчикРаботаСФайламиКлиентСервер.ОпределитьФормуПрисоединенногоФайла

Настройка формы объекта

Создать форму элемента (при отсутствии). В модуле формы необходимо добавить следующий код:

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
// СтандартныеПодсистемы.РаботаСФайлами
// Для отображения гиперссылки
ПараметрыГиперссылки = РаботаСФайлами.ГиперссылкаФайлов();
ПараметрыГиперссылки.Размещение = "КоманднаяПанель";
ДобавляемыеЭлементы.Добавить(ПараметрыГиперссылки);
РаботаСФайлами.ПриСозданииНаСервере(ЭтотОбъект, ДобавляемыеЭлементы);
// Конец СтандартныеПодсистемы.РаботаСФайлами
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
// СтандартныеПодсистемы.РаботаСФайлами
РаботаСФайламиКлиент.ПриОткрытии(ЭтотОбъект, Отказ);
// Конец СтандартныеПодсистемы.РаботаСФайлами
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
// СтандартныеПодсистемы.РаботаСФайлами
РаботаСФайламиКлиент.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия);
// Конец СтандартныеПодсистемы.РаботаСФайлами
КонецПроцедуры
// СтандартныеПодсистемы.РаботаСФайлами
&НаКлиенте
Процедура Подключаемый_КомандаПанелиПрисоединенныхФайлов(Команда)
РаботаСФайламиКлиент.КомандаУправленияПрисоединеннымиФайлами(ЭтотОбъект, Команда);
КонецПроцедуры
// Конец СтандартныеПодсистемы.РаботаСФайлами

Настройка формы списка

  • Определить запрос для списка как Произвольный
  • В настройках списка на вкладке Запрос добавляем еще одно поле ЕстьФайлы, полученное в результате левого соединения с регистром Наличие файлов. В простейшем варианте запрос будет выглядеть так:
ВЫБРАТЬ
ДокументЗаявкаНаРазработку.Ссылка КАК Ссылка,
//Произвольные поля,
ВЫБОР
КОГДА НаличиеФайлов.ЕстьФайлы ЕСТЬ NULL
ТОГДА 0
КОГДА НаличиеФайлов.ЕстьФайлы
ТОГДА 1
ИНАЧЕ 0
КОНЕЦ КАК ЕстьФайлы
ИЗ
Документ.ЗаявкаНаРазработку КАК ДокументЗаявкаНаРазработку
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НаличиеФайлов КАК НаличиеФайлов
ПО ДокументЗаявкаНаРазработку.Ссылка = НаличиеФайлов.ОбъектСФайлами
  • После сохранения произвольного запроса необходимо вывести новое поле ЕстьФайлы в таблицу формы. В свойствах этого реквизита устанавливаем свойство Вид в значение Поле картинки, свойство ПоложениеЗаголовка в значение Нет, а в свойстве КартинкаЗначений выбираем стандартную БСПшную картинку КоллекцияСкрепка, которая находится во вкладке Из конфигурации

ДОПОЛНИТЕЛЬНО. Вывод поля картинки на форму объекта

Чтобы на форме объекта отображать картинку (например, изображение товара), нужно:

  • Создать реквизит объекта, который будет хранить ссылку на элемент справочника - хранилища файлов (<ПодключаемыйОбъектМетаданных>ПрисоединенныеФайлы)
  • В форме объекта:
    • Создаем группу, где будет располагаться поле картинки.
    • В модуле формы дополнительно прописываем:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
// СтандартныеПодсистемы.РаботаСФайлами
...
ПараметрыПоля = РаботаСФайлами.ПолеФайла();
ПараметрыПоля.ПоказыватьКоманднуюПанель = Ложь;
ПараметрыПоля.ПутьКДанным = "Объект.ФайлКартинки";
ПараметрыПоля.ПутьКДаннымИзображения = "ИзображениеНаФорме";
ПараметрыПоля.Размещение = "ГруппаИзображениеТовара"; // Имя созданной группы
...
ДобавляемыеЭлементы.Добавить(ПараметрыПоля);
...
РаботаСФайлами.ПриСозданииНаСервере(ЭтотОбъект, ДобавляемыеЭлементы);
// Конец СтандартныеПодсистемы.РаботаСФайлами
КонецПроцедуры
// СтандартныеПодсистемы.РаботаСФайлами
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраНажатие(Элемент, СтандартнаяОбработка)
РаботаСФайламиКлиент.ПолеПредпросмотраНажатие(ЭтотОбъект, Элемент, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраПеретаскивание(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка)
РаботаСФайламиКлиент.ПолеПредпросмотраПеретаскивание(ЭтотОбъект, Элемент,
ПараметрыПеретаскивания, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраПроверкаПеретаскивания(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка)
РаботаСФайламиКлиент.ПолеПредпросмотраПроверкаПеретаскивания(ЭтотОбъект, Элемент,
ПараметрыПеретаскивания, СтандартнаяОбработка);
КонецПроцедуры
// Конец СтандартныеПодсистемы.РаботаСФайлами

Исправление ошибки БСП при работе с полями картинки

В общем модуле РаботаСФайламиКлиент в процедуре ОбновитьОбластьПредпросмотра нужно исправить:

&ИзменениеИКонтроль("ОбновитьОбластьПредпросмотра")
Процедура IS_ОбновитьОбластьПредпросмотра(Форма, НомерЭлемента, Файл)
Если ТипЗнч(НомерЭлемента) = Тип("Строка") Тогда
НомерЭлементаЧислом = Число(НомерЭлемента);
НомерЭлементаСтрокой = НомерЭлемента;
Иначе
НомерЭлементаЧислом = НомерЭлемента;
#Удаление
НомерЭлементаСтрокой = Формат(НомерЭлемента, "ЧГ=;");
#КонецУдаления
#Вставка
НомерЭлементаСтрокой = Формат(НомерЭлемента, "ЧН=0; ЧГ=");
#КонецВставки
КонецЕсли;
...
КонецПроцедуры