При разработке в современных конфигурациях 1С, таких как Зарплата и управление персоналом 3.1, ERP или Бухгалтерия предприятия 3.0, часто возникает задача добавить возможность прикрепления внешних файлов (сканов документов, PDF, Word) к объектам системы — визуально контролировать вложения в списках поможет отображение значка наличия файлов в списках документов 1С. В таких конфигурациях используется БСП (Библиотека стандартных подсистем), которая уже содержит мощный модуль РаботаСФайлами. Рассмотрим подробно, как правильно интегрировать этот функционал в ваш объект метаданных.
Прежде чем писать программный код, нам необходимо подготовить структуру в дереве конфигурации. Для каждого основного объекта (например, справочника ФизическиеЛица), к которому мы хотим прикреплять файлы, должен существовать вспомогательный справочник — автоматизировать этот процесс на практике поможет автоматическое прикрепление файлов к карточкам 1С. Проанализируем, как это сделать правильно:
Файлы или любой существующий справочник присоединенных файлов (например, ОрганизацииПрисоединенныеФайлы).ФизическиеЛицаПрисоединенныеФайлы. Лучше всего сделать это копированием аналогичного справочника из БСП, чтобы сохранились все реквизиты: Автор, ДатаСоздания, Расширение, ХранилищеДиректории и табличные части.ФизическиеЛица.Система БСП должна «узнать» о том, что ваш новый справочник теперь участвует в механизме работы с файлами. Для этого разберем настройку определяемых типов:
ВладелецПрисоединенныхФайлов и добавьте в него тип СправочникСсылка.ФизическиеЛица.ПрисоединенныйФайл и добавьте в него СправочникСсылка.ФизическиеЛицаПрисоединенныеФайлы.ПрисоединенныйФайлОбъект и добавьте в него тип СправочникОбъект.ФизическиеЛицаПрисоединенныеФайлы.Теперь перейдем к самому интересному — оживлению интерфейса. Чтобы на форме справочника ФизическиеЛица появилась кнопка управления файлами и гиперссылка, нам нужно добавить вызовы процедур БСП в модуль формы. Рассмотрим пример кода, который необходимо разместить в форме элемента:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
// СтандартныеПодсистемы.РаботаСФайлами
ПараметрыГиперссылки = РаботаСФайлами.ГиперссылкаФайлов();
ПараметрыГиперссылки.Размещение = "КоманднаяПанель";
РаботаСФайлами.ПриСозданииНаСервере(ЭтотОбъект, ПараметрыГиперссылки);
// Конец СтандартныеПодсистемы.РаботаСФайлами
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
// СтандартныеПодсистемы.РаботаСФайлами
РаботаСФайламиКлиент.ПриОткрытии(ЭтотОбъект, Отказ);
// Конец СтандартныеПодсистемы.РаботаСФайлами
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
// СтандартныеПодсистемы.РаботаСФайлами
РаботаСФайламиКлиент.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия);
// Конец СтандартныеПодсистемы.РаботаСФайлами
КонецПроцедуры
Обратите внимание на параметр Размещение. Значение КоманднаяПанель создаст кнопку в верхней части формы. Если вы хотите видеть гиперссылку в определенном месте формы, можно указать имя группы или элемента.
Для того чтобы команды управления файлами (добавление, просмотр, редактирование) корректно работали, необходимо добавить стандартные подключаемые процедуры. Проанализируем ситуацию, когда пользователь хочет просто перетащить файл мышкой на форму:
#Область СтандартныеПодсистемы_РаботаСФайлами
&НаКлиенте
Процедура Подключаемый_КомандаПанелиПрисоединенныхФайлов(Команда)
РаботаСФайламиКлиент.КомандаУправленияПрисоединеннымиФайлами(ЭтотОбъект, Команда);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраПроверкаПеретаскивания(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка)
РаботаСФайламиКлиент.ПолеПредпросмотраПроверкаПеретаскивания(ЭтотОбъект, Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраПеретаскивание(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка)
РаботаСФайламиКлиент.ПолеПредпросмотраПеретаскивание(ЭтотОбъект, Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка);
КонецПроцедуры
#КонецОбласти
Не забудьте, что для работы этих процедур на самой форме должны быть созданы соответствующие команды с именами, начинающимися на Подключаемый_, или система должна автоматически их подхватить через механизм БСП.
Выясним причину, по которой база 1С может начать быстро расти после внедрения этого функционала. По умолчанию файлы сохраняются прямо в информационную базу (в SQL-таблицы). Выясним, как этого избежать:
Это позволит хранить тяжелые документы отдельно от базы данных, что значительно ускорит процесс резервного копирования и повысит стабильность системы. При необходимости гибкой настройки томов в зависимости от типа объекта можно использовать расширение для сохранения файлов в разные тома.
Разберем несколько важных моментов, которые часто упускают начинающие разработчики:
Объект.Ссылка.Пустая().ФизическиеЛицаПрисоединенныеФайлы. Без этого кнопки управления файлами просто не отобразятся./ЗапуститьОбновлениеИнформационнойБазы или просто обновите конфигурацию через конфигуратор, чтобы изменения вступили в силу.Таким образом, использование стандартной подсистемы 1С:БСП позволяет реализовать профессиональный механизм работы с файлами всего за несколько шагов, обеспечивая при этом высокую надежность и удобство для конечного пользователя.