При разработке конфигураций «с нуля» перед программистом рано или поздно встает задача добавления стандартного функционала: версионирования, отправки SMS, работы с почтой или, как в нашем случае, прикрепления произвольных файлов к документам и справочникам. Писать собственное решение (создавать «велосипеды») не всегда оправданно, ведь фирма 1С предоставляет мощный инструмент — Библиотеку стандартных подсистем (БСП).
В этой статье мы подробно разберем, как интегрировать блок работы с файлами из БСП в легкую самописную конфигурацию, сколько времени это займет у разработчика без опыта работы с БСП, и какие важные технические нюансы необходимо учесть, чтобы база не превратилась в неповоротливого монстра.
Для разработчика с «прямыми руками», который впервые сталкивается с БСП, реальное время интеграции одной конкретной подсистемы составляет от 4 до 8 часов. Этот период включает в себя изучение документации на ИТС, подготовку конфигурации, сам процесс слияния и последующий разбор ошибок первого запуска. При повторном внедрении на других проектах эта процедура будет занимать не более 30–40 минут на один объект автоматизации.
Существует два основных подхода к интеграции:
Внедрять БСП «в лоб» через обычное сравнение и объединение всей библиотеки целиком категорически не рекомендуется. Библиотека содержит десятки подсистем, и если перенести их все, ваша легкая конфигурация мгновенно раздуется, а скорость ее работы и обновления заметно снизится. Нам нужно перенести только подсистему РаботаСФайлами и ее зависимости.
Выясним, как автоматизировать этот процесс:
ExtFiles) внешнюю обработку ПервоеВнедрениеБСП.epf.РаботаСФайлами (или «Работа с файлами»).БазоваяФункциональность, ОбновлениеВерсииИБ, Пользователи и т. д.).Теперь перейдем к непосредственному слиянию конфигураций:
1Cv8.cf).ПервоеВнедрениеБСП.epf на предыдущем шаге. Конфигуратор автоматически снимет отметки со всех неиспользуемых объектов БСП.МодуляСеанса и МодуляУправляемогоПриложения демо-базы БСП или файла поставки в вашу конфигурацию. Без этого БСП не сможет инициализироваться при старте системы.После объединения конфигураций функционал работы с файлами не появится в ваших документах сам по себе. Нам нужно связать целевой объект (например, Документ.МойДокумент) со структурами БСП. Разберем этот процесс по шагам.
1. Создание подчиненного справочника файлов
Для хранения информации о прикрепленных файлах у каждого документа должен быть свой подчиненный справочник. Чтобы не создавать его с нуля, выполните следующие действия:
_ДемоПроектыПрисоединенныеФайлы и скопируйте его в свою конфигурацию.[ИмяВашегоДокумента]ПрисоединенныеФайлы. Например: МойДокументПрисоединенныеФайлы.Присоединенные файлы (Мой документ).ДокументСсылка.МойДокумент.ВладелецФайла и в его типе данных также укажите ДокументСсылка.МойДокумент.2. Регистрация справочника в определяемых типах БСП
БСП должна «знать», какие объекты в базе могут иметь присоединенные файлы. Для этого отредактируйте следующие определяемые типы:
ПрисоединенныйФайл — добавьте в состав типов ссылку на ваш новый справочник файлов (СправочникСсылка.МойДокументПрисоединенныеФайлы).ПрисоединенныйФайлОбъект — добавьте объект созданного справочника (СправочникОбъект.МойДокументПрисоединенныеФайлы).ВладелецПрисоединенныхФайлов — укажите ссылку на сам документ-владелец (ДокументСсылка.МойДокумент).3. Настройка подписок на события
Чтобы система корректно управляла файлами при удалении или изменении документов, настройте подписки на события:
ПереопределитьПолучаемуюФормуПрисоединенногоФайла найдите свойство Источник и добавьте туда менеджер вашего нового справочника файлов (СправочникМенеджер.МойДокументПрисоединенныеФайлы).УстановитьПометкуУдаленияПрисоединенныхФайловДокументов в свойстве Источник укажите ваш документ (ДокументОбъект.МойДокумент). Это позволит автоматически помечать файлы на удаление при удалении самого документа.4. Вывод интерфейса на форму документа
Чтобы пользователи могли прикреплять файлы, нам нужно вывести стандартную команду на форму документа:
ПрисоединенныеФайлы.ДокументСсылка.МойДокумент).При первом запуске базы после внедрения БСП вы можете столкнуться с ошибками инициализации системы. Это происходит потому, что БСП жестко привязана к справочнику ИдентификаторыОбъектовМетаданных, который на данный момент пуст или не актуализирован.
Чтобы избежать ошибок, запустите сеанс «1С:Предприятие» в режиме отладки с использованием специального параметра запуска:
Параметр запуска: /С ЗапуститьОбновлениеИнформационнойБазы
Этот параметр заставит БСП просканировать конфигурацию, зарегистрировать все новые объекты метаданных в справочнике идентификаторов и корректно выполнить все процедуры обновления.
После успешного запуска рекомендуется воспользоваться внешним отчетом ПроверкаВнедренияБСП.erf (находится в каталоге дистрибутива БСП). Запустите его через меню Файл — Открыть в режиме предприятия. Отчет покажет детальный лог проверок: правильно ли заполнены составы определяемых типов, нет ли битых ссылок и все ли обработчики событий назначены корректно.
По умолчанию при копировании документа в системе 1С создается новый объект, но его присоединенные файлы автоматически не дублируются. Чтобы решить эту проблему, рассмотрим пример программного кода, который необходимо добавить в модуль формы вашего документа.
Разберем следующий пример реализации:
&НаСервере
Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи, Параметры)
// Передаем управление подсистеме БСП для обработки присоединенных файлов при записи
ПараметрыПрисоединенныхФайлов = Новый Структура;
ПрисоединенныеФайлы.ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи, ПараметрыПрисоединенныхФайлов);
КонецПроцедуры
Также убедитесь, что в параметрах формы вашего документа присутствует стандартный параметр ЗначениеКопирования. При наличии этого механизма файлы будут корректно дублироваться для нового документа-копии.
По умолчанию БСП настроена на хранение двоичных данных файлов непосредственно в самой базе данных (в регистре сведений ДвоичныеДанныеФайлов). Если ваша база маленькая и используется только для перевода реестров Excel, на первое время этого будет достаточно.
Однако, проанализировав перспективу роста базы, мы настоятельно рекомендуем сразу настроить хранение файлов в томах на диске. Сделать это можно в режиме предприятия через раздел администрирования БСП:
.1CD или таблиц SQL).Среди начинающих разработчиков бытует мнение, что внедрение БСП способно существенно замедлить работу легкой «самописки». Выясним, так ли это на самом деле.
Практика аудита крупных систем показывает, что сама по себе БСП вносит ничтожно малую нагрузку на систему (сотые и тысячные доли процента от общей загрузки процессора). Замедление работы базы, как правило, вызывают:
Использование БСП — это стандарт современной разработки на платформе «1С:Предприятие 8». Потратив один день на изучение и интеграцию подсистемы работы с файлами, вы получите надежный, масштабируемый и легко обновляемый функционал, который полностью соответствует стандартам фирмы 1С.