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