БСП, о которой вы не знали: 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    1602    4    0    

3

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

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

3254 руб.

21.11.2024    13816    49    26    

56

БСП (Библиотека стандартных подсистем) Программист 1С 8.3 1С:Библиотека стандартных подсистем Россия Абонемент ($m)

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

1 стартмани

30.07.2026    4426    Elya_Elya    14    

16

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

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

06.02.2026    17546    manul1c    7    

26

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

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

23.09.2025    16297    AlexeyPROSTO_1C    1    

18

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

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

16.09.2025    8276    _seerco2002    0    

36
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Трактор 1288 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 2715 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 38 05.06.26 09:51 Сейчас в теме
(4) Благодарю за исправление. Внес изменения в статью, чтобы не вводить читателей в заблуждение.
5. chuevsf 434 05.06.26 09:36 Сейчас в теме
Про склонение ФИО забыли....
cleaner_it; Kaliostr0; +2 Ответить
8. starik-2005 3297 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 202 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 Сейчас в теме
Зрелый программист знает где можно использовать методы бсп, а где нельзя, так как при обновлении бсп. Полетит твоя разработка и будешь в который раз объяснять клиенту, что ты не причём. Использование БСП признак ленивости)))
17. YA_1365918075 24.07.26 10:19 Сейчас в теме
(15) Скорее всего ты просто не шаришь в этой теме, изобретатель двухколесного
18. Yashazz 4932 26.07.26 09:43 Сейчас в теме
(15) Частично правда.
Они там любят внезапно поменять количество аргументов, имя или расположение метода; и привет, особенно привет расширениям. Для тех, кто хочет сделать действительно надёжный код - применение БСП недопустимо.
А вот если не критично, и плевать, что в самый неподходящий момент всё умрёт - тогда можно и БСП.
19. Yashazz 4932 26.07.26 09:55 Сейчас в теме
"считывает из базы данных весь объект со всеми его табличными частями" - кхм, вроде бы уж много релизов как без табличных частей, нэ?

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

Чисто навскидку, а) вместо переделки исходного массива создаёт копию, что далеко не всегда нужно, особенно при экономии ресурса на больших объёмах, б) выполняет чтение-поиск по соответствию в каждой итерации, скорость при этом будет падать как минимум линейно. Потому что эта свёртка - тупая насадка на "ДополнитьМассив".

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

А запуск фоновых - ну, на мой взгляд, просто первое место за переусложнение простого действия. Попытка, пардон, сесть одним задом на все возможные стулья.

Желающие сделать по-настоящему хорошо - игнорят этот хлам, и делают нужное сами.
Но если надо тяп-ляп по-быстрому - тогда можно.
20. Yashazz 4932 26.07.26 10:05 Сейчас в теме
И да, уж на что я против БЯМ, но как раз для поиска "есть чо в БСП", подходящего функционала, я бы это применял.
Просто такой очень продвинутый синтакс-помощник.
Но, раз 1С его не делает, значит, и им самим не шибко надо. Либо супер-гении и помнят механику наизусть, либо сами не пользуются.

К слову, я время от времени натыкаюсь в типовых конфах на явные велосипеды, иногда просто смешно делается...
21. Cyberhawk 135 28.07.26 08:19 Сейчас в теме
ДанныеКонтрагентов = ОбщегоНазначения.ЗначенияРеквизитовОбъектов(МассивКонтрагентов, "ИНН")
У этого метода есть опасный недостаток: т.к. в платформе порядок в соответствии не определен, то в общем случае при обходе
ДанныеКонтрагентов
порядок контрагентов в нем не будет соответствовать порядку контрагентов в исходном массиве ссылок.
Иногда про это забывают, и тогда в самый неподходящий момент оно "стреляет".
Для отправки сообщения требуется регистрация/авторизация