Как использовать Библиотеку стандартных подсистем (БСП) при разработке новых объектов в 1С?

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

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

Понимание архитектурной роли БСП

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

Рассмотрим, что именно предоставляет БСП для разработки:

  1. Инфраструктура: механизмы печати, рассылки отчетов, версионирование объектов.
  2. Управление доступом: сложные механизмы RLS (ограничение прав на уровне записей) и профили групп доступа.
  3. Сервисные возможности: работа с файлами, адресный классификатор (ФИАС), дополнительные реквизиты.

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

Интеграция БСП в новые документы и справочники

Выясним, какие подсистемы чаще всего внедряют программисты при создании новых документов «с нуля». На основе практического опыта выделяются следующие ключевые блоки:

1. Механизм печати. Вместо создания собственных форм печати в каждом объекте, мы используем подсистему «Печать». Это позволяет выносить шаблоны в макеты, управлять ими в режиме «1С:Предприятие» и стандартизировать вывод документов на экран и принтер.

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

3. Версионирование (История изменений). Разберем, как отслеживать, кто и когда изменил реквизит в документе. Подсистема «ВариантыОтчетов» и «ВерсионированиеОбъектов» позволяют хранить историю состояний объекта и сравнивать версии между собой.

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

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

Особое внимание уделим программному интерфейсу (API) библиотеки. Одной из самых популярных функций является ОбщегоНазначения.ЗначениеРеквизитаОбъекта(). Рассмотрим пример её использования:


// Получение значения реквизита без получения всего объекта (экономия ресурсов)
СтатусЗаказа = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(СсылкаНаЗаказ, "Статус");

Однако проанализируем важный нюанс производительности. Функция ЗначениеРеквизитаОбъекта() может быть ресурсоемкой, если она вызывается в цикле, так как при каждом вызове происходит определение типа объекта. Если нам нужно получить несколько реквизитов или обработать массив ссылок, рассмотрим более эффективный метод — ЗначенияРеквизитовОбъекта() (во множественном числе).


// Оптимизированное получение нескольких реквизитов за один запрос
ДанныеОбъекта = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(СсылкаНаДокумент, "Дата, Номер, Проведен");
Если ДанныеОбъекта.Проведен Тогда
    // Ваша логика
КонецЕсли;

Такой подход значительно снижает нагрузку на сервер БД, особенно при итерационной обработке данных.

Механизм «Переопределяемых» модулей

Посмотрим на то, как БСП позволяет расширять стандартную логику. Ключевой принцип — использование переопределяемых общих модулей. Это специальные «точки входа» для разработчика. Вместо правки основного кода библиотеки, мы вписываем свои алгоритмы в модули с постфиксом Переопределяемый. Например, ПриЗаписи или ПередЗаписью в глобальных механизмах.

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

Работа с правами доступа и RLS

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

При добавлении новой роли в конфигурацию, программисты часто следуют правилу:

  1. Создаем роль, предоставляющую права на объект.
  2. Включаем роль в соответствующие профили групп доступа через пользовательский интерфейс.
  3. Если требуется ограничение на уровне записей, подключаем объект к механизму RLS БСП через переопределяемый модуль УправлениеДоступомПереопределяемый.

Внешние обработки и отчеты

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

Инструментарий разработчика

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

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

← На главную