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

04.06.26

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

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

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

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

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

Было:

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

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

Стало:

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

 

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

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

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

Было:

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

Стало:

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

 

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

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

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

Было:

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

Стало:

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

 

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

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

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

Было:

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

Стало:

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

 

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

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

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

Было:

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

Стало:

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

 

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

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

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

Было:

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

Стало:

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

 

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

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

Проблема: Платформенная функция СтрРазделить() воспринимает параметр-разделитель как набор независимых символов. Если вы попытаетесь разделить HTML-текст или лог-файл по разделителю <br>, платформа разрежет строку при встрече любого из этих четырех символов по отдельности (<, b, r, >), превратив массив в кашу.

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

Было (костыль через замену):

// Заменяем сложный разделитель на непечатный символ (например, "¶" - Символ(182)), 
// чтобы типовая функция СтрРазделить отработала корректно
ВременнаяСтрока = СтрЗаменить(ИсходнаяСтрока, "<br>", Символ(182));
МассивПодстрок = СтрРазделить(ВременнаяСтрока, Символ(182), Ложь);

Стало (красиво через БСП):

// Метод БСП воспринимает "<br>" как единый неделимый разделитель
МассивПодстрок = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(ИсходнаяСтрока, "<br>");

 

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

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

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

Стало:

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

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

 

Заключение

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

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

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

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

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

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

См. также

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

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

25000 руб.

06.03.2026    1067    1    0    

3

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

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

3254 руб.

21.11.2024    13428    48    26    

55

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

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

06.02.2026    13057    manul1c    6    

25

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

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

23.09.2025    14074    AlexeyPROSTO_1C    1    

18

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

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

16.09.2025    6873    _seerco2002    0    

36

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

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

02.09.2025    7769    krasnov322    25    

44
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Трактор 1283 04.06.26 17:59 Сейчас в теме
Волга впадает в океан Тетис.
Kaliostr0; JinnWatson; +2 Ответить
2. DmitryKlimushkin 04.06.26 19:15 Сейчас в теме
(1) Реклама пива "Толстяк" - "А мужики-то и не знали!"))
Mizhgan42; Sashares; siamagic; awk; Kaliostr0; ImHunter; EvgeniyOlxovskiy; Трактор; +8 Ответить
3. aximo 2693 04.06.26 20:22 Сейчас в теме
Товарищ автор опоздал с подобными статьями - они были актуальны лет 5 назад... сейчас актуален хайп на ИИ
IgorS; Sashares; siamagic; Kaliostr0; ImHunter; paybaseme; t278; EvgeniyOlxovskiy; +8 Ответить
4. mszsuz 349 04.06.26 22:28 Сейчас в теме
в СтрРазделить() Разделитель это строка символов, каждый из которых является индивидуальным разделителем
Kaliostr0; Трактор; +2 Ответить
6. Kaliostr0 37 05.06.26 09:51 Сейчас в теме
(4) Благодарю за исправление. Внес изменения в статью, чтобы не вводить читателей в заблуждение.
5. chuevsf 401 05.06.26 09:36 Сейчас в теме
Про склонение ФИО забыли....
cleaner_it; Kaliostr0; +2 Ответить
8. starik-2005 3263 05.06.26 14:33 Сейчас в теме
(5) А про склонение должности? Правильные посоны юзают ИИ.
Kaliostr0; chuevsf; +2 Ответить
7. DmitryKSL 169 05.06.26 12:53 Сейчас в теме
Хоть для меня банально, поставил плюсик.
v_den_v; al_ikar; cleaner_it; Kaliostr0; +4 Ответить
9. lada2011 05.06.26 15:51 Сейчас в теме
как бы быстренько узнать есть нужная функция в БСП или нет?
11. cleaner_it 199 06.06.26 01:27 Сейчас в теме
(9) здесь не обойтись без яблочка и блюдечка с голубой каёмочкой
12. BomjBandit 16 08.06.26 10:13 Сейчас в теме
(9) Гуглишь "1С БСП твойфункционал" и если на первых ссылках не выходит сайт фасткод.им, то скорее всего такого функционала нет.
MaiorovYury; +1 Ответить
14. dmb2006 10.06.26 08:32 Сейчас в теме
Добрый день. Выгружать можно только по одному документу из формы объекта или
(9)
в тлг есть бот от местного автора https://t.me/SSLHelperBot
10. TheVudi 4 05.06.26 18:31 Сейчас в теме
С каких пор БСП - это платформенный функционал?
Ну хоть перечитывали бы за ИИ...
advice_fox; maxis33; Sashares; aximo; +4 Ответить
13. kser87 2484 09.06.26 13:29 Сейчас в теме
Нужно знать такое
15. Radkt 10.06.26 22:10 Сейчас в теме
Зрелый программист знает где можно использовать методы бсп, а где нельзя, так как при обновлении бсп. Полетит твоя разработка и будешь в который раз объяснять клиенту, что ты не причём. Использование БСП признак ленивости)))
Для отправки сообщения требуется регистрация/авторизация