Как внедрить подсистему работы с файлами из БСП в самописную конфигурацию 1С: подробное пошаговое руководство

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При разработке конфигураций «с нуля» перед программистом рано или поздно встает задача добавления стандартного функционала: версионирования, отправки SMS, работы с почтой или, как в нашем случае, прикрепления произвольных файлов к документам и справочникам. Писать собственное решение (создавать «велосипеды») не всегда оправданно, ведь фирма 1С предоставляет мощный инструмент — Библиотеку стандартных подсистем (БСП).

В этой статье мы подробно разберем, как интегрировать блок работы с файлами из БСП в легкую самописную конфигурацию, сколько времени это займет у разработчика без опыта работы с БСП, и какие важные технические нюансы необходимо учесть, чтобы база не превратилась в неповоротливого монстра.

Оценка трудозатрат: сколько времени занимает внедрение БСП?

Для разработчика с «прямыми руками», который впервые сталкивается с БСП, реальное время интеграции одной конкретной подсистемы составляет от 4 до 8 часов. Этот период включает в себя изучение документации на ИТС, подготовку конфигурации, сам процесс слияния и последующий разбор ошибок первого запуска. При повторном внедрении на других проектах эта процедура будет занимать не более 30–40 минут на один объект автоматизации.

Существует два основных подхода к интеграции:

  1. Развернуть пустую базу БСП и перенести туда свои доработки. Этот способ идеален, если ваша самописная конфигурация еще очень мала (пара документов и справочников). Вы просто берете готовую пустую конфигурацию-шаблон БСП и создаете или переносите в нее свои объекты.
  2. Внедрить БСП в существующую рабочую конфигурацию. Этот метод мы подробно рассмотрим ниже, так как он наиболее универсален и чаще всего встречается на практике.

Шаг 1. Подготовка и минимизация лишнего кода

Внедрять БСП «в лоб» через обычное сравнение и объединение всей библиотеки целиком категорически не рекомендуется. Библиотека содержит десятки подсистем, и если перенести их все, ваша легкая конфигурация мгновенно раздуется, а скорость ее работы и обновления заметно снизится. Нам нужно перенести только подсистему РаботаСФайлами и ее зависимости.

Выясним, как автоматизировать этот процесс:

  1. Найдите в дистрибутиве БСП (в каталоге ExtFiles) внешнюю обработку ПервоеВнедрениеБСП.epf.
  2. Запустите вашу информационную базу в режиме «1С:Предприятие» и откройте эту обработку.
  3. В появившемся дереве подсистем отметьте флажком только нужную нам подсистему РаботаСФайлами (или «Работа с файлами»).
  4. Обработка автоматически проанализирует зависимости и отметит другие обязательные подсистемы (такие как БазоваяФункциональность, ОбновлениеВерсииИБ, Пользователи и т. д.).
  5. Нажмите кнопку формирования файла настроек. Обработка создаст файл правил объединения, который мы будем использовать в конфигураторе.

Шаг 2. Сравнение и объединение в Конфигураторе

Теперь перейдем к непосредственному слиянию конфигураций:

  1. Откройте вашу конфигурацию в Конфигураторе.
  2. Выполните команду Конфигурация — Сравнить, объединить с конфигурацией из файла... и выберите файл поставки БСП (1Cv8.cf).
  3. В открывшемся окне сравнения перейдите в меню Действия — Загрузить настройки из файла... и выберите файл настроек, созданный обработкой ПервоеВнедрениеБСП.epf на предыдущем шаге. Конфигуратор автоматически снимет отметки со всех неиспользуемых объектов БСП.
  4. Важный нюанс: Не забудьте вручную проверить и скопировать свойства и предопределенные процедуры из МодуляСеанса и МодуляУправляемогоПриложения демо-базы БСП или файла поставки в вашу конфигурацию. Без этого БСП не сможет инициализироваться при старте системы.
  5. Нажмите кнопку Выполнить. При появлении вопросов о настройке правил сопоставления объектов (например, для общих модулей) соглашайтесь с предлагаемыми БСП настройками.

Шаг 3. Привязка функционала файлов к вашему документу

После объединения конфигураций функционал работы с файлами не появится в ваших документах сам по себе. Нам нужно связать целевой объект (например, Документ.МойДокумент) со структурами БСП. Разберем этот процесс по шагам.

1. Создание подчиненного справочника файлов

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

  1. Найдите в демонстрационной базе БСП справочник-заготовку _ДемоПроектыПрисоединенныеФайлы и скопируйте его в свою конфигурацию.
  2. Переименуйте скопированный справочник по шаблону: [ИмяВашегоДокумента]ПрисоединенныеФайлы. Например: МойДокументПрисоединенныеФайлы.
  3. Задайте для него понятный синоним, например: Присоединенные файлы (Мой документ).
  4. В свойствах этого справочника перейдите на вкладку Владельцы и в качестве владельца укажите ваш документ: ДокументСсылка.МойДокумент.
  5. Откройте реквизиты этого справочника, найдите реквизит ВладелецФайла и в его типе данных также укажите ДокументСсылка.МойДокумент.

2. Регистрация справочника в определяемых типах БСП

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

3. Настройка подписок на события

Чтобы система корректно управляла файлами при удалении или изменении документов, настройте подписки на события:

4. Вывод интерфейса на форму документа

Чтобы пользователи могли прикреплять файлы, нам нужно вывести стандартную команду на форму документа:

  1. Найдите в метаданных общую команду ПрисоединенныеФайлы.
  2. В свойстве Тип параметра команды добавьте ссылку на ваш документ (ДокументСсылка.МойДокумент).
  3. После этого на форме вашего документа в командной панели автоматически появится стандартная кнопка скрепки для перехода к списку присоединенных файлов.

Шаг 4. Первый запуск и обновление идентификаторов

При первом запуске базы после внедрения БСП вы можете столкнуться с ошибками инициализации системы. Это происходит потому, что БСП жестко привязана к справочнику ИдентификаторыОбъектовМетаданных, который на данный момент пуст или не актуализирован.

Чтобы избежать ошибок, запустите сеанс «1С:Предприятие» в режиме отладки с использованием специального параметра запуска:

Параметр запуска: /С ЗапуститьОбновлениеИнформационнойБазы

Этот параметр заставит БСП просканировать конфигурацию, зарегистрировать все новые объекты метаданных в справочнике идентификаторов и корректно выполнить все процедуры обновления.

После успешного запуска рекомендуется воспользоваться внешним отчетом ПроверкаВнедренияБСП.erf (находится в каталоге дистрибутива БСП). Запустите его через меню Файл — Открыть в режиме предприятия. Отчет покажет детальный лог проверок: правильно ли заполнены составы определяемых типов, нет ли битых ссылок и все ли обработчики событий назначены корректно.

Важная доработка: Копирование документов с файлами

По умолчанию при копировании документа в системе 1С создается новый объект, но его присоединенные файлы автоматически не дублируются. Чтобы решить эту проблему, рассмотрим пример программного кода, который необходимо добавить в модуль формы вашего документа.

Разберем следующий пример реализации:


&НаСервере
Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи, Параметры)
    
    // Передаем управление подсистеме БСП для обработки присоединенных файлов при записи
    ПараметрыПрисоединенныхФайлов = Новый Структура;
    ПрисоединенныеФайлы.ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи, ПараметрыПрисоединенныхФайлов);
    
КонецПроцедуры

Также убедитесь, что в параметрах формы вашего документа присутствует стандартный параметр ЗначениеКопирования. При наличии этого механизма файлы будут корректно дублироваться для нового документа-копии.

Где хранить файлы: в базе данных или на диске (в томах)?

По умолчанию БСП настроена на хранение двоичных данных файлов непосредственно в самой базе данных (в регистре сведений ДвоичныеДанныеФайлов). Если ваша база маленькая и используется только для перевода реестров Excel, на первое время этого будет достаточно.

Однако, проанализировав перспективу роста базы, мы настоятельно рекомендуем сразу настроить хранение файлов в томах на диске. Сделать это можно в режиме предприятия через раздел администрирования БСП:

Развенчание мифов о производительности БСП

Среди начинающих разработчиков бытует мнение, что внедрение БСП способно существенно замедлить работу легкой «самописки». Выясним, так ли это на самом деле.

Практика аудита крупных систем показывает, что сама по себе БСП вносит ничтожно малую нагрузку на систему (сотые и тысячные доли процента от общей загрузки процессора). Замедление работы базы, как правило, вызывают:

Использование БСП — это стандарт современной разработки на платформе «1С:Предприятие 8». Потратив один день на изучение и интеграцию подсистемы работы с файлами, вы получите надежный, масштабируемый и легко обновляемый функционал, который полностью соответствует стандартам фирмы 1С.

← На главную