Присоединенные файлы в новом документе через расширение без изменения основной конфигурации
Разработка - БСП (Библиотека стандартных подсистем)
Файлы
ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.
Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний
Оформите подписку на компанию для решения рабочих задач
Оформить подписку и скачать решение со скидкойВы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.
Постановка задачи: У нас в расширении есть документ ПФ_ПояснительнаяЗаписка. Нам нужно добавить возможность хранить файлы в документе.
Будем использовать функционал БСП присоединенные файлы.
Для начала нам потребуется захватить в расширение метаданные, которые будут использоваться в справочнике присоединенные файлы.
1. Добавление метаданных из основной конфигурации
Подписки на событие
ВладелецПрисоединенныхФайлов
УстановитьПометкуУдаленияПрисоединенныхФайловДокументов
ПереопределитьПолучаемуюФормуПрисоединенногоФайла
Определяемые типы
ВладелецПрисоединенныхФайлов
ПрисоединенныйФайл
ПрисоединенныйФайлОбъект
Справочники
ВнешниеПользователи
УчетныеЗаписиСинхронизацииФайлов
Пользователи
ТомаХраненияФайлов
Перечисления
СтатусыИзвлеченияТекстаФайлов
ТипыХраненияФайлов
СпособыФормированияСегментов
2. Создание справочника для хранения файлов
Теперь скопируем из основной конфигурации справочник, который уже хранит присоединенные файлы, например АвансовыйОтчетПрисоединенныеФайлы и переименуем его, в моем случае это будет ПФ_ПояснительнаяЗапискаПрисоединенныеФайлы.
Расширение в конфигураторе примет вид:

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