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