← Назад к вопросам

Что из БСП использовал?

1.6 Junior🔥 161 комментариев
#БСП#Опыт и софт-скиллы

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI26 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

БСП в работе 1С разработчика

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

Основные модули БСП

1. Подсистема "Управление доступом"

// RLS (Row-Level Security) — управление видимостью данных
// Используется для разграничения доступа по филиалам, подразделениям

Если ПроверитьДоступ("Просмотр", СправочникиОрганизации) Тогда
    // Загрузить только данные доступные пользователю
    Запрос.Текст = "SELECT * WHERE Подразделение = &Подразделение";
Иначе
    ВызватьИсключение("Доступ запрещён");
КонецЕсли;

2. Подсистема "Интернет поддержка"

// Отправка данных в облако (HTTPS)
// Обновление конфигурации через интернет
// Проверка обновлений

ОтправитьДанныеВОблако(Данные);
ОбновитьКонфигурацию();

3. Подсистема "Сохранение и восстановление данных"

// Создание резервных копий
// Восстановление из архива
// Архивирование старых данных

СоздатьРезервнуюКопию("/backup/data_"+Формат(ТекущаяДата(),"ДДММГГГГччмм")+".zip");
ВосстановитьИзРезервнойКопии("/backup/data_26032024.zip");

4. Подсистема "Обмен данными"

// Синхронизация с другими системами
// Планы обмена (для обмена между БД 1С)
// Вложенные планы обмена

ОбменПлан = ПланыОбмена.ОбменСДругойСистемой.Создать();
ОбменПлан.КодУзла = "Филиал_1";
ОбменПлан.Записать();

// Выгрузка и загрузка данных
ВыгрузитьДанныеПланаОбмена(ОбменПлан, "C:\\export.xml");
ЗагрузитьДанныеПланаОбмена("C:\\import.xml");

5. Подсистема "Оповещения"

// Уведомления пользователей в системе
// SMS/Email уведомления (интеграция)
// Системные оповещения

ОповещениеДляПользователя = Новый Структура();
ОповещениеДляПользователя.Вставить("Заголовок", "Новый заказ");
ОповещениеДляПользователя.Вставить("Текст", "Поступил заказ #123");
ОповещениеДляПользователя.Вставить("Пользователь", Пользователи.ТекущийПользователь());
ОповещениеДляПользователя.Вставить("ЗначениеРассылки", Заказы.ПолучитьСсылку());

Оповещени = Оповещения.НовоеОповещение(ОповещениеДляПользователя);
Оповещени.Записать();

6. Подсистема "Люди"

// Управление пользователями системы
// Права доступа
// Роли

Роль = Справочники.Роли.НайтиПоНаименованию("Менеджер продаж");
Пользователь.Роль = Роль;
Пользователь.Записать();

// Проверка прав
Если ПроверитьПрава("Редактирование", Справочники.Контрагенты) Тогда
    // Пользователь может редактировать контрагентов
Иначе
    ВывестиОшибку("У вас нет прав на редактирование");
КонецЕсли;

7. Подсистема "Логирование"

// Логирование событий для аудита
// История изменений документов

Лог = РегистрыСведений.ЛогСобытий;
Написать = Лог.СоздатьМенеджерЗаписи();
Написать.Дата = ТекущаяДата();
Написать.Пользователь = ПользователиИнформационнойБазы.ТекущийПользователь();
Написать.Событие = "Редактирование счёта #123";
Написать.Записать();

// История изменений
ЗафиксироватьИзменение(Счёт.Ссылка, "Сумма", "1000", "2000");

8. Подсистема "Периодические задачи"

// Регламентные задачи (встроенные)
// Планировщик заданий

// Пересчёт остатков каждую ночь
Процедура ПересчитатьОстатки() Экспорт
    ПересчитатьРегистрыНакоплений();
КонецПроцедуры

// Регистрация в конфигураторе:
// Администрирование → Регламентные задачи

9. Подсистема "Работа с файлами"

// Управление хранилищем файлов
// Загрузка/скачивание документов

Файл = РегистрыСведений.ХранилищеФайлов.СоздатьМенеджерЗаписи();
Файл.Объект = Заказ.Ссылка;
Файл.ФайлДанные = ПрочитатьФайл("C:\\заказ.pdf");
Файл.Записать();

// Получить файл
ДанныеФайла = ХранилищеФайлов.ПолучитьФайл(Заказ.Ссылка);
СохранитьФайл(Данные, "C:\\результат.pdf");

Практические примеры использования БСП

Пример 1: Разграничение доступа

// При загрузке справочника показать только доступные организации

Процедура ПриОткрытииФормы(Отмена, СтандартнаяОбработка)
    
    ДоступныеОрганизации = Новый Массив();
    
    Для каждого Организация Из Справочники.Организации.Выбрать() Цикл
        Если ПроверитьДоступ("Просмотр", Организация) Тогда
            ДоступныеОрганизации.Добавить(Организация);
        КонецЕсли;
    КонецЦикла;
    
    // Заполнить таблицу формы только доступными записями
    Для каждого Организация Из ДоступныеОрганизации Цикл
        НовоеСтрок = Элементы.Таблица.Добавить();
        НовоеСтрок.Организация = Организация.Наименование;
    КонецЦикла;
    
КонецПроцедуры

Пример 2: Отправка уведомления

// При создании нового заказа уведомить ответственного

Процедура ОтправитьУведомлениеОНовомЗаказе(ЗаказСсылка)
    
    Оповещение = Новый Структура();
    Оповещение.Вставить("Заголовок", "Новый заказ");
    Оповещение.Вставить("Текст", "Поступил заказ #" + ЗаказСсылка.Номер);
    Оповещение.Вставить("Пользователь", ЗаказСсылка.ОтветственныйМенеджер);
    Оповещение.Вставить("ЗначениеРассылки", ЗаказСсылка);
    Оповещение.Вставить("ОповещениеДелегировано", Истина);
    
    НовоеОповещение = Оповещения.НовоеОповещение(Оповещение);
    НовоеОповещение.Записать();
    
КонецПроцедуры

Когда БСП помогает

  • Уускорение разработки — не переиспользовать велосипед
  • Стандартный функционал — аудит, логирование, права доступа
  • Интеграции — обмен данными, синхронизация
  • Масштабирование — БСП оптимизирована для больших объёмов
  • Поддержка — на БСП есть документация и примеры

Когда БСП не подходит

  • Очень специфический функционал — лучше писать с нуля
  • Производительность критична — БСП может быть тяжеловата
  • Очень маленькие системы — оверхед не оправдан

Итого: БСП — незаменимый инструмент для 95% проектов 1С, предоставляющий готовые модули для управления доступом, логирования, обмена данными и уведомлений.