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

04.06.26

Разработка - БСП (Библиотека стандартных подсистем)

Каждый раз, когда разработчик 1С пишет очередной цикл для свертки массива или использует конструкцию Попытка / Исключение для проверки наличия реквизита, где-то грустит один архитектор фирмы «1С». Мы привыкли изобретать велосипеды там, где в Библиотеке стандартных подсистем (БСП) уже давно лежат готовые, оптимизированные и протестированные на тысячах баз решения. Ниже — практическая подборка из 8 методов актуальных релизов БСП (3.X), которые сделают ваш код чище, быстрее и профессиональнее. Разберем на примерах «Было / Стало».

1. Свертка массива (удаление дублей)

Где искать: ОбщегоНазначенияКлиентСервер Метод: СвернутьМассив()

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

Было:

СоответствиеУникальных = Новый Соответствие;
Для Каждого Элемент Из ИсходныйМассив Цикл
    СоответствиеУникальных.Вставить(Элемент, Истина);
КонецЦикла;

УникальныйМассив = Новый Массив;
Для Каждого КлючИЗначение Из СоответствиеУникальных Цикл
    УникальныйМассив.Добавить(КлючИЗначение.Ключ);
КонецЦикла;

Стало:

УникальныйМассив = ОбщегоНазначенияКлиентСервер.СвернутьМассив(ИсходныйМассив);

 

2. Чтение реквизитов без получения всего объекта

Где искать: ОбщегоНазначения Метод: ЗначенияРеквизитовОбъекта()

Обращение к реквизитам через точку от ссылки (Ссылка.Реквизит) неявно считывает из базы данных весь объект со всеми его табличными частями. Если вам нужно только пару полей, используйте точечный SELECT.

Было:

ИНН = СсылкаНаКонтрагента.ИНН;
КПП = СсылкаНаКонтрагента.КПП;

Стало:

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

 

3. Массовое чтение реквизитов

Где искать: ОбщегоНазначения Метод: ЗначенияРеквизитовОбъектов()

Старший брат предыдущего метода. Если у вас есть массив ссылок (например, нужно обработать 100 контрагентов) и из каждого нужно вытащить данные, этот метод сделает всего один оптимальный запрос к базе данных вместо десятков запросов в цикле.

Было:

Для Каждого Ссылка Из МассивКонтрагентов Цикл
    // Неявный запрос к БД на каждой итерации цикла
    МассивИНН.Добавить(Ссылка.ИНН); 
КонецЦикла;

Стало:

// Возвращает Соответствие, где ключ - ссылка, значение - структура реквизитов
ДанныеКонтрагентов = ОбщегоНазначения.ЗначенияРеквизитовОбъектов(МассивКонтрагентов, "ИНН");

 

4. Быстрая конвертация Таблицы Значений для клиента

Где искать: ОбщегоНазначения Метод: ТаблицаЗначенийВМассив()

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

Было:

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

Стало:

// Преобразует ТЗ в массив структур, где ключи - имена колонок
МассивДанных = ОбщегоНазначения.ТаблицаЗначенийВМассив(МояТаблицаЗначений);

 

5. Встроенная транслитерация

Где искать: СтроковыеФункцииКлиент Метод: СтрокаЛатиницей()

Незаменимая вещь при интеграциях. Когда нужно русское наименование превратить в валидный URL (slug) или безопасное имя файла, разработчики часто пишут гигантские функции с маппингом алфавитов.

Было:

// Полотно кода на 50 строк с соответствием русских и английских букв

Стало:

ИмяДляURL = СтроковыеФункцииКлиент.СтрокаЛатиницей("Кресло офисное"); 
// Результат: "Kreslo ofisnoe"

 

6. Проверка существования реквизита без исключений

Где искать: ОбщегоНазначения Метод: ЕстьРеквизитОбъекта()

При написании универсальных обработок нужно проверить, есть ли у объекта конкретный реквизит. Использование Попытка / Исключение — плохой тон, который замедляет работу и может засорять журнал регистрации.

Было:

ЕстьИНН = Истина;
Попытка
    Проверка = ОбъектДокумента.ИНН;
Исключение
    ЕстьИНН = Ложь;
КонецПопытки;

Стало:

ЕстьИНН = ОбщегоНазначения.ЕстьРеквизитОбъекта("ИНН", Метаданные.Справочники.Контрагенты);

 

7. Умное разделение строки на слова

Где искать: СтроковыеФункцииКлиентСервер Метод: РазложитьСтрокуВМассивСлов()

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

Было:

ВременнаяСтрока = СтрЗаменить(ИсходнаяСтрока, ",", " ");
ВременнаяСтрока = СтрЗаменить(ВременнаяСтрока, ";", " ");
МассивСлов = СтрРазделить(ВременнаяСтрока, " ", Ложь);

Стало:

// Идеально для реализации нечеткого поиска и парсинга
МассивСлов = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивСлов(ИсходнаяСтрока);

 

8. Запуск фоновых заданий без боли

Где искать: ДлительныеОперации Метод: ЗапуститьВыполнениеВФоне()

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

Стало:

ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияВФоне(УникальныйИдентификатор);
ПараметрыВыполнения.НаименованиеЗадания = "СинхронизацияСМаркетплейсом";

// БСП сама создаст задание и вернет его структуру управления
Результат = ДлительныеОперации.ЗапуститьВыполнениеВФоне(
    УникальныйИдентификатор, 
    "ИнтеграцияAPI.ВыгрузитьДанные", 
    СтруктураПараметров, 
    ПараметрыВыполнения
);

 

Заключение

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

А какие малоизвестные, но полезные методы БСП чаще всего используете вы в своих проектах? Поделитесь в комментариях!

Вступайте в нашу телеграмм-группу Инфостарт

БСП Приемы программирования Оптимизация кода Стандарты разработки 1С 1С:Предприятие 8.3

Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

См. также

Адаптация типовых решений БСП (Библиотека стандартных подсистем) Кадровый учет ЭДО и ОФД 1C:Бухгалтерия 1С:Зарплата и кадры 7.7 1C:ERP 1С:ЗУП 1С:УТ 1С:ДО Платные (руб)

Наше расширение 1С Госключ обеспечивает интеграцию любой конфигурации 1С на базе БСП с мобильным приложением «Госключ», позволяя сотрудникам подписывать кадровые документы (КЭДО) и документы материальной ответственности (МОЛ, ПБ) усиленной электронной подписью прямо со смартфона. Решение автоматизирует формирование и отправку документов на подпись, отслеживает статусы подписания и хранит подписанные файлы непосредственно в базе 1С

25000 руб.

06.03.2026    869    1    0    

2

БСП (Библиотека стандартных подсистем) Программист Платные (руб)

Синтакс-помощник БСП - cправочник по библиотекам стандартных подсистем и электронных документов. В состав справочника входит описание экспортных процедур и функций, размещенных в областях кода ПрограммныйИнтерфейс БСП и БЭД.

3254 руб.

21.11.2024    13210    47    26    

54

БСП (Библиотека стандартных подсистем) Универсальные функции Программист 1С 8.3 1С:Библиотека стандартных подсистем Бесплатно (free)

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

06.02.2026    11276    manul1c    6    

25

Рефакторинг и качество кода БСП (Библиотека стандартных подсистем) Механизмы платформы 1С Программист 1С:Предприятие 8 1С:Библиотека стандартных подсистем Бесплатно (free)

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

23.09.2025    13392    AlexeyPROSTO_1C    1    

18

БСП (Библиотека стандартных подсистем) Программист 1С:Предприятие 8 1С:Библиотека стандартных подсистем Бесплатно (free)

Уже заезженная тема с выводом в Word макетов при помощи БСП, но некоторые коллеги все равно спрашивают. Поэтому размещаю тут материал, как это сделать за три простых шага. Решение, которым я успешно пользуюсь в случаях, когда не нужна универсальность подключаемых внешних печатных форм.

16.09.2025    6577    _seerco2002    0    

36

Нейросети БСП (Библиотека стандартных подсистем) Инструментарий разработчика Программист 1С:Предприятие 8 1С:Библиотека стандартных подсистем Бесплатно (free)

Telegram-бот для разработчиков 1С, работающих с БСП. Если не знаете нужный под задачу метод или не помните название, то опишите боту задачу и получите список подходящих экспортных методов из общих модулей БСП.

02.09.2025    7629    krasnov322    25    

44
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Трактор 1282 04.06.26 17:59 Сейчас в теме
Волга впадает в океан Тетис.
JinnWatson; +1 Ответить
2. DmitryKlimushkin 04.06.26 19:15 Сейчас в теме
(1) Реклама пива "Толстяк" - "А мужики-то и не знали!"))
Трактор; +1 Ответить
3. aximo 2692 04.06.26 20:22 Сейчас в теме
Товарищ автор опоздал с подобными статьями - они были актуальны лет 5 назад... сейчас актуален хайп на ИИ
Для отправки сообщения требуется регистрация/авторизация