Комментарии (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С, предоставляющий готовые модули для управления доступом, логирования, обмена данными и уведомлений.