Постановка задачи: У нас в расширении есть документ ПФ_ПояснительнаяЗаписка. Нам нужно добавить возможность хранить файлы в документе.
Будем использовать функционал БСП присоединенные файлы.
Для начала нам потребуется захватить в расширение метаданные, которые будут использоваться в справочнике присоединенные файлы.
1. Добавление метаданных из основной конфигурации
Подписки на событие
ВладелецПрисоединенныхФайлов
УстановитьПометкуУдаленияПрисоединенныхФайловДокументов
ПереопределитьПолучаемуюФормуПрисоединенногоФайла
Определяемые типы
ВладелецПрисоединенныхФайлов
ПрисоединенныйФайл
ПрисоединенныйФайлОбъект
Справочники
ВнешниеПользователи
УчетныеЗаписиСинхронизацииФайлов
Пользователи
ТомаХраненияФайлов
Перечисления
СтатусыИзвлеченияТекстаФайлов
ТипыХраненияФайлов
СпособыФормированияСегментов
2. Создание справочника для хранения файлов
Теперь скопируем из основной конфигурации справочник, который уже хранит присоединенные файлы, например АвансовыйОтчетПрисоединенныеФайлы и переименуем его, в моем случае это будет ПФ_ПояснительнаяЗапискаПрисоединенныеФайлы.
Расширение в конфигураторе примет вид:
Идем в реквизиты ПФ_ПояснительнаяЗапискаПрисоединенныеФайлы, находим реквизит ВладелецФайла и устанавливаем тип нашего документа ДокументСсылка.ПФ_ПояснительнаяЗаписка.
3. Источники в подписках на события
ОпределитьФормуПрисоединенногоФайлаВзаимодействия - СправочникМенеджер.ПФ_ПояснительнаяЗапискаПрисоединенныеФайлы
УстановитьПометкуУдаленияПрисоединенныхФайловДокументов - ДокументОбъект.ПФ_ПояснительнаяЗаписка
ОпределитьФормуПрисоединенногоФайлаВзаимодействия - СправочникМенеджер.ПФ_ПояснительнаяЗапискаПрисоединенныеФайлы
4. Добавление новых объектов в определяемые типы
ВладелецПрисоединенныхФайлов - ДокументСсылка.ПФ_ПояснительнаяЗаписка
ПрисоединенныйФайл - СправочникСсылка.ПФ_ПояснительнаяЗапискаПрисоединенныеФайлы
ПрисоединенныйФайлОбъект - СправочникОбъект.ПФ_ПояснительнаяЗапискаПрисоединенныеФайлы
5. Доработка формы
Добавить реквизит формы ПараметрыРаботыСФайлами - тип произвольный.
6. Обновление модуля формы
Теперь нужно скопипастить вызовы из БСП, чтобы появились стандартные команды по загрузке и просмотру файлов
Расширить обработчики формы, добавить несколько строчек:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
// СтандартныеПодсистемы.РаботаСФайлами
ПараметрыГиперссылки = РаботаСФайлами.ГиперссылкаФайлов();
ПараметрыГиперссылки.Размещение = "КоманднаяПанель";
РаботаСФайлами.ПриСозданииНаСервере(ЭтотОбъект, ПараметрыГиперссылки);
// Конец СтандартныеПодсистемы.РаботаСФайлами
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
// СтандартныеПодсистемы.РаботаСФайлами
РаботаСФайламиКлиент.ПриОткрытии(ЭтотОбъект, Отказ);
// Конец СтандартныеПодсистемы.РаботаСФайлами
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
// СтандартныеПодсистемы.РаботаСФайлами
РаботаСФайламиКлиент.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия);
// Конец СтандартныеПодсистемы.РаботаСФайлами
КонецПроцедуры
Скопировать в форму обязательные обработчики
// СтандартныеПодсистемы.РаботаСФайлами
&НаКлиенте
Процедура Подключаемый_КомандаПанелиПрисоединенныхФайлов(Команда)
РаботаСФайламиКлиент.КомандаУправленияПрисоединеннымиФайлами(ЭтотОбъект, Команда);
КонецПроцедуры
// Конец СтандартныеПодсистемы.РаботаСФайлами
// СтандартныеПодсистемы.РаботаСФайлами
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраПроверкаПеретаскивания(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка)
РаботаСФайламиКлиент.ПолеПредпросмотраПроверкаПеретаскивания(ЭтотОбъект, Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка);
КонецПроцедуры
// Конец СтандартныеПодсистемы.РаботаСФайлами
// СтандартныеПодсистемы.РаботаСФайлами
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраПеретаскивание(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка)
РаботаСФайламиКлиент.ПолеПредпросмотраПеретаскивание(ЭтотОбъект, Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка);
КонецПроцедуры
// Конец СтандартныеПодсистемы.РаботаСФайлами
// СтандартныеПодсистемы.РаботаСФайлами
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраНажатие(Элемент, СтандартнаяОбработка)
РаботаСФайламиКлиент.ПолеПредпросмотраНажатие(ЭтотОбъект, Элемент, СтандартнаяОбработка);
КонецПроцедуры
// Конец СтандартныеПодсистемы.РаботаСФайлами
В результате получаем возможность хранить файлы в новом документе
Проверено на следующих конфигурациях и релизах:
- Управление торговлей, редакция 11, релизы 11.5.17.216
Вступайте в нашу телеграмм-группу Инфостарт