Прикрепление файлов к нетиповому документу 1с

Документация 1С: Настройка прикрепления файлов 

Прикрепляем файл к новому документу (БСП). Простенькая шпаргалка

Настройка присоединения файлов к объектам

В зависимости от того, используются ли в конфигурации ограничения доступа на уровне записей (RLS; см. раздел Управление доступом) необходимо принять решение по варианту хранения присоединенных файлов:

  • отдельный справочник присоединенных файлов для каждого «объекта с файлами» (типа владельца) (например, КонтрагентыПрисоединенныеФайлы) - в большинстве случаев, вариант рекомендуется, если в конфигурации предусмотрены разные права доступа к владельцам;
  • один справочник присоединенных файлов сразу для нескольких «объектов с файлами» (типов владельцев)  - вариант подходит, если владельцев немного (не более 10), а права доступа к владельцам полностью совпадают (RLS к которым полностью одинаков) и с высокой вероятностью не будут пересматриваться в дальнейшем.

Также допустимо не создавать справочники присоединенных файлов, а выбрать вариант хранения в имеющемся справочнике Файлы в тех случаях, когда в конфигурации отсутствует логика RLS или когда она есть, но в «объектах с файлами» (типах владельцев) предусмотрена запись наборов значений доступа:

  • В первом случае доступ к справочнику Файлы, как и для владельцев, предоставляется без ограничений (но при совместном внедрении с подсистемой Управление доступом остается базовое ограничение по типам владельцев).
  • Во втором – доступ к справочнику Файлы будет обеспечен «как у владельца» с помощью стандартного шаблона #ПоЗначениямИНаборамРасширенный (подробнее см. раздел Управление доступом).

Настройка присоединения файлов к объектам в случае отдельного справочника для хранения файлов

Для каждого «объекта с файлами» (типа владельца), использующего отдельный справочник для хранения файлов, выполнить настройку:

  1. Создать (копированием подобного типового) справочник для хранения присоединенных файлов и задать ему имя по шаблону: <Префикс>ПрисоединенныеФайлы, где <Префикс> – имя объекта метаданных, для которого настраиваются присоединенные файлы  (например, для справочника Номенклатура справочник с файлами должен называться НоменклатураПрисоединенныеФайлы). Задать синоним, например: Присоединенные файлы (Номенклатура).
  2. Принять решение о возможности создавать группы в списках присоединенных файлов. Для обеспечения возможности создания папок необходимо:
    • включить у справочника свойство Иерархический, установить Вид иерархии: Иерархия групп и элементов;
    • изменить свойства Использование: Для группы и элемента реквизитов:
      1. Автор;
      2. ВладелецФайла;
      3. ДатаМодификацииУниверсальная;
      4. ДатаСоздания;
      5. Изменил;
      6. ИндексКартинки;
      7. Описание.
  3. У реквизита ВладелецФайла справочника <Префикс>ПрисоединенныеФайлы установить тип владельца «объект с файлами» (например, СправочникСсылка.Номенклатура).
  4. Включить в состав определяемых типов:
    • ВладелецПрисоединенныхФайлов – добавляем тип владельца;
    • ПрисоединенныйФайл – добавляем тип <Префикс>ПрисоединенныеФайлы (ссылка);
    • ПрисоединенныйФайлОбъект - добавляем тип <Префикс>ПрисоединенныеФайлы (объект);
  5. У списка (в форме списка документа, если нет, создаем) включаем флаг Произвольный запрос и меняем  запрос: 

  6. В форме списка настроить колонку «Есть файлы»:
    • вид – поле картинки;
    • положение заголовка – нет;
    • картинка значения– скрепка (Прикрепить);
    • картинка шапки – скрепка (Прикрепить).
  7. В форму документа и форму списка в ПриСозданииНаСервере добавить блок:

  8. В форму владельца добавляем код:

    Вышеописанного должно быть достаточно.

  9. Опционально. Включить в состав плана обмена ОбновлениеИнформационнойБазы справочник, созданный на шаге 1 (например, СправочникСсылка.НоменклатураПрисоединенныеФайлы).
  10. Опционально. Расширить состав типов свойства Источник у подписки ПереопределитьПолучаемуюФормуПрисоединенногоФайла, включив в него тип – СправочникМенеджер справочника с файлами, созданного на шаге 1 (например, СправочникМенеджер.НоменклатураПрисоединенныеФайлы).
  11. Опционально. Добавить реквизит Служебный типа Булево, если в справочнике хранятся присоединенные файлы, которые содержат служебную информацию и должны быть скрыты от пользователей.

Настройка присоединения файлов к объектам в случае справочника Файлы для хранения файлов

Для каждого «объекта с файлами» (типа владельца), использующего справочник Файлы для хранения файлов, выполнить настройку:

  • включить в состав определяемого типа ВладелецФайлов (ссылки) владельцев (например, ДокументСсылка.ЗаказПокупателя).

В обоих случаях

Настроить подписки на события, расширив состав типов свойства Источник у подписок ПереопределитьПолучаемуюФормуПрисоединенногоФайлаУстановитьПометкуУдаленияПрисоединенныхФайловДокументов, включив в него новый справочник СправочникМенеджер.Номенклатура.ПрисоединенныеФайлы:

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

РаботаСФайлами.УстановитьПометкуУдаленияПрисоединенныхФайловДокументов

Для каждого «объекта с файлами» (типа владельца), использующего любой справочник для хранения файлов, выполнить настройку:

  1. Расширить состав определяемых типов ВладелецПрисоединенныхФайлов (ссылки) и ВладелецПрисоединенныхФайловОбъект (объекты, кроме документов), добавив в него тип «объект с файлами» (например СправочникСсылка.Номенклатура).
  2. Расширить состав типов свойства Источник подписки УстановитьПометкуУдаленияПрисоединенныхФайловДокументов, включив в него тип – «объект с файлами» (только документы-владельцы, например, СправочникОбъект.Номенклатура).
  3. Если при интерактивном копировании объекта, содержащего присоединенные файлы, требуется автоматическое копирование файлов в новый объект, то в форме объекта необходимо:
    • в параметры формы добавить ключевой параметр ЗначениеКопирования такого же типа, как и сам объект;
    • в модуле формы в процедуру ПриЗаписиНаСервере вставить следующий код: РаботаСФайлами.ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи, Параметры);
  4. Если перед закрытием формы объекта-владельца файлов требуется проверить наличие занятых текущим пользователем файлов, то необходимо:
    • добавить реквизит формы МожноЗакрытьФормуСФайлами типа Булево;
    • в обработчике формы ПередЗакрытием вставить вызов процедуры ПоказатьПодтверждениеЗакрытияФормыСФайлами общего модуля РаботаСФайламиКлиент по шаблону:

      другой код, который необходимо выполнять в обработчике ПередЗакрытием, следует размещать после вызова процедуры и проверки параметра Отказ. Например:

Настройка прав доступа пользователей см. Документация 1С: Настройка прикрепления файлов 

Использование присоединения файлов при разработке конфигурации

Создание реквизитов типа «присоединенный файл»

При необходимости можно добавить к произвольному объекту ссылочного типа реквизит типа СправочникСсылка.Файлы или собственного справочника присоединенных файлов (например, реквизит ПрисоединенныйФайл или Фотография в справочнике физических лиц). Использование этого реквизита в пользовательском интерфейсе определяется по месту и может быть, например, таким:

  • гиперссылка в форме объекта, при нажатии на которую открывается карточка файла или сам файл;
  • поле картинки в режиме гиперссылки, при нажатии на которую открывается карточка файла.

После добавления реквизита типа СправочникСсылка.Файлы к объекту метаданных (объекту с файлом) необходимо:

  1. добавить ссылку на объект с файлом к составному типу реквизита ВладелецФайла справочника Файлы;
  2. добавить ссылку на объект с файлом к составному типу параметра ВладелецФайла формы элемента справочника Файлы.

Управление присоединенными файлами из формы «объекта с файлами»

В форме любого «объекта с файлами» можно подключить настраиваемые элементы управления присоединенными файлами. Предусмотрены следующие варианты использования в пользовательском интерфейсе:

  • гиперссылка для быстрого перехода к списку присоединенных файлов, имеет настраиваемые заголовок и местоположение на форме, а также позволяет присоединять файлы из формы размещения;
  • поле реквизита типа «присоединенный файл», предоставляет возможность интерактивной работы с присоединенным файлом без перехода к карточке файла.

Для размещения на форме гиперссылки необходимо:

  • В модуле формы объекта в процедуру ПриСозданииНаСервере добавить код:

Для размещения на форме поля реквизита:

  • В модуле формы объекта в процедуру ПриСозданииНаСервере добавить код:

Для размещения на форме комбинации элементов управления или нескольких полей реквизитов:

Замечание: Для снижения времени открытия формы рекомендуется предварительно создать служебные реквизиты и группу формы, в которой будут размещены элементы:

  • ПараметрыРаботыСФайлами типа Произвольный;
  • ИзображениеНаФорме типа Строка - для размещения поля изображения на форме. Имя этого реквизита также указать в явном виде в коде:

  • ГруппаРазмещения типа ГруппаФормы - для размещения создаваемых элементов на форме. Имя группы также указать в явном виде в коде:

В ином случае реквизиты и элементы формы будут созданы программно, что замедлит открытие формы.

  • В модуле формы объекта в процедуру ПриОткрытии добавить фрагмент:

  • В модуле формы объекта в процедуру ОбработкаОповещения добавить фрагмент:

  • В область ОбработчикиСобытийЭлементовШапкиФормы модуля формы объекта поместить следующий код:

  • В область ОбработчикиКомандФормы модуля формы объекта поместить следующий код:

Признак наличия присоединенных файлов в списках

Если в списке «объектов с файлами» требуется вывести признак наличия присоединенных к объекту файлов, то необходимо в запросе динамического списка сделать левое соединение с регистром сведений НаличиеФайлов (по измерению ОбъектСФайлами).

Пример запроса из демонстрационной конфигурации (форма списка справочника _ДемоПроекты):

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

Пример списка «со скрепкой»:

Интерфейс

Добавить комментарий

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.