Шпаргалка по БСП: Топ функций, которые спасут вас от изобретения велосипедов

30.07.26

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

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

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
Шпаргалка по БСП: Топ функций, которые спасут вас от изобретения велосипедов
.epf 7,95Kb
2 2 500 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

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

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

Каждый раз, когда я сажусь писать код, я задаю себе один и тот же вопрос: «А не написал ли это кто-то до меня?». Есть ли уже готовая, полностью оттестированная и оптимизированная великими умами 1С процедура под мою задачу? Грубо говоря, я стараюсь никогда не изобретать велосипед, ведь в Библиотеке стандартных подсистем (БСП) всё это уже лежит на блюдечке.bБолее того, если мы откроем стандарты разработки на сайте ИТС, мы увидим прямое требование: 1С жестко предписывает использовать методы БСП вместо написания собственного кода. Это не просто рекомендация, а правило хорошего тона. В этой статье я собрала свой личный топ-лист из функций БСП, разбитый по задачам. Это те инструменты, которые нужны в разработке каждый день, чтобы писать чистый, поддерживаемый код по стандартам 1С.

 

Блок 1. Работа со ссылками, объектами и реквизитами

Самая частая боль — получение данных объекта без его полного считывания.

1. Точечное получение реквизитов

Проблема: Нужно получить ИНН контрагента. Обращаться в серверном коде через точку (Контрагент.ИНН) — плохая практика. Платформа неявно вытягивает всю запись объекта целиком.

Как надо по стандартам:

// Вытягивает ровно одно поле динамическим микро-запросом

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

2. Получение нескольких реквизитов сразу

Если нужно несколько полей, один вызов функции вернет вам готовую структуру. Идеально для компактного кода.

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

3. Поиск предопределенного элемента

Избавляемся от конструкций Справочники.ВидыНоменклатуры.Услуга, которые могут вызвать ошибку при обновлении или отсутствии элемента.

СсылкаНаУслугу = ОбщегоНазначения.ПредопределенныйЭлемент("Справочник.ВидыНоменклатуры.Услуга");

4. Проверка наличия реквизита у объекта

Вместо того чтобы лезть в метаданные и писать сложные обходы коллекций, используем готовое:

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

// Или еще круче, для любых свойств - она проверяет, есть ли у конкретного экземпляра объекта (который может быть чем угодно: формой, структурой, строкой табличной части) реквизит, либо иное свойство с заданным именем:

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

5. Получение описания типов

Быстро генерируем описание типа для создания колонок таблиц значений или типизации реквизитов без громоздких конструкторов Новый ОписаниеТипов(...).

ОТ_Число = ОбщегоНазначения. ОписаниеТипаЧисло (15, 2);

ОТ_Строка = ОбщегоНазначения. ОписаниеТипаСтрока (100);

6. Глубокое сравнение данных

Как быстро понять, изменились ли данные, не перебирая все поля циклом?

Решение: Функция ДанныеСовпадают умеет рекурсивно сравнивать вообще всё: структуры внутри массивов, таблицы значений, примитивные типы.

Если Не ОбщегоНазначения.ДанныеСовпадают(СтарыеДанные, НовыеДанные) Тогда

    // Данные различаются, запускаем логику

КонецЕсли;

7. Проверка ссылок на удаляемый объект

Перед распроведением или удалением нужно проверить ссылочную целостность, не выписывая тяжелые соединения со всеми таблицами базы.

МассивПроверки = Новый Массив;

МассивПроверки.Добавить(СсылкаНаСклад);

Если ОбщегоНазначения.ЕстьСсылкиНаОбъект(МассивПроверки) Тогда

    // Склад используется, запрещаем удаление

КонецЕсли;

 

Блок 2. Магия строк и форматов

8. Вставить параметры в строку (красивая обертка СтрШаблон)

ТекстШаблона = "Документ [Номер] [Дата]";

ГотовыйТекст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстШаблона, "123", ТекущаяДата());

Важное ограничение: как и у СтрШаблон, здесь тоже максимум 9 параметров.

Нюанс обработки: в отличие от СтрШаблон, эта функция не бросает исключение при несоответствии количества параметров. Она может вернуть строку с недозаполненными местами или пустую строку - ошибку придётся ловить отдельно.

9. Безопасное приведение строки к числу

Защищает от ошибок конвертации, очищая неразрывные пробелы и некорректные символы (частая боль при загрузке из Excel).

Сумма = СтроковыеФункцииКлиентСервер.СтрокаВЧисло(" 15 000,50 ");

10. Парсинг строки в дату

ДатаДок = СтроковыеФункцииКлиентСервер.СтрокаВДату("31.12.2023");

11. Фамилия и Инициалы

Хватит писать велосипеды с функциями СтрНайти и Лев, чтобы получить «Иванов И. И.».

ФИО_Кратко = ФизическиеЛицаКлиентСервер.ФамилияИнициалы("Иванов Иван Иванович");

12. Склонение ФИО и должностей

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

// Получаем структуру со всеми вариантами склонения

ПадежиДолжности = СклонениеПредставленийОбъектов.ДанныеСклонения("Генеральный директор");

// Теперь просто берем нужный падеж через точку:

Кому = ПадежиДолжности.Дательный;     // Вернет: Генеральному директору

Кого = ПадежиДолжности.Родительный;   // Вернет: Генерального директора

Кем  = ПадежиДолжности.Творительный;  // Вернет: Генеральным директором

// Аналогично работает с ФИО:

ПадежиФИО = СклонениеПредставленийОбъектов.ДанныеСклонения("Иванов Иван Иванович");

ФИО_В_Дательном = ПадежиФИО.Дательный; // Вернет: Иванову Ивану Ивановичу

 

Блок 3. Работа с коллекциями (Массивы, Структуры, ТЗ)

Манипуляции с коллекциями при подготовке данных для запросов — рутина, которую БСП сводит к одной строке.

13. Выгрузка колонки из ТЗ в массив (без циклов!)

Частая задача: передать колонку ТЗ как параметр в условие запроса В (&МассивДокументов).

// Третий параметр "Истина" сразу оставит только уникальные значения!

МассивНоменклатуры = ОбщегоНазначения.ВыгрузитьКолонку(ТЗ_Товары, "Номенклатура", Истина);

14. Слияние массивов

Избавляемся от цикла обхода первого массива ради добавления во второй.

// Дополняет первый массив элементами второго (с проверкой на уникальность, если Истина)

ОбщегоНазначенияКлиентСервер.ДополнитьМассив(МассивИтоговый, МассивНовыхДанных, Истина);

15. Свернуть массив

Удаляем дубли из любого массива одной строкой.

ОбщегоНазначенияКлиентСервер.СвернутьМассив(МассивСДублями);

16. Строка таблицы значений в Структуру

Часто нужно передать строку ТЗ в процедуру, которая принимает структуру (так как передавать саму строку ТЗ между клиентом и сервером тяжело или невозможно).

СтруктураДанных = ОбщегоНазначения.СтрокаТаблицыЗначенийВСтруктуру(СтрокаТЗ);

17. Таблица значений в Массив структур

Самая частая задача при клиент-серверном взаимодействии (ведь ТЗ на клиент передавать нельзя, а массив структур — можно).

МассивСтруктурНаКлиент = ОбщегоНазначения. ТаблицаЗначенийВМассив (ТЗ);

18. Массив структур в Таблицу значений (Бонус, не БСП)

А вот обратной функции в БСП нет! Поэтому дарю вам эталонный сниппет, который должен быть в вашем шаблоне (идеально для преобразования данных с клиента обратно в серверную ТЗ):

Функция МассивСтруктурВТаблицуЗначений(МассивСтруктур) Экспорт

    ТЗ = Новый ТаблицаЗначений;

    Если МассивСтруктур.Количество() = 0 Тогда

        Возврат ТЗ;

    КонецЕсли;

    Для Каждого КлючИЗначение Из МассивСтруктур[0] Цикл

        ТЗ.Колонки.Добавить(КлючИЗначение.Ключ);

    КонецЦикла;

    Для Каждого Структура Из МассивСтруктур Цикл

        НоваяСтрока = ТЗ.Добавить();

        ЗаполнитьЗначенияСвойств(НоваяСтрока, Структура);

    КонецЦикла;

    Возврат ТЗ;

КонецФункции

 

Блок 4. Интерфейс и Взаимодействие с пользователем

19. Правильное сообщение об ошибке (По стандартам ИТС)

Проблема: Использование одиночного оператора Сообщить() прямо запрещено стандартами разработки 1С. Система должна четко позиционировать ошибку и подсказывать пользователю, в каком конкретно поле он ошибся.

Как надо: Используем универсальный метод. Платформа сама найдет поле на форме и подсветит его красным.

ОбщегоНазначенияКлиентСервер.СообщитьПользователю("Укажите корректный договор для контрагента!",
                        ЭтотОбъект,
                        "ДоговорКонтрагента", // Имя реквизита для привязки сообщения
                        ,
                        Отказ);

20. Установить свойство элемента формы

Безопасная установка свойств (видимость, доступность), которая не роняет код, если элемента на форме вдруг не оказалось (например, он скрыт правами доступа).

ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "КнопкаПровести", "Доступность", Ложь);

21. Показать форму редактирования комментария

Вызывает стандартное красивое окно для ввода длинного многострочного текста, которое пользователи привыкли видеть в типовых конфигурациях.

ОбщегоНазначенияКлиент.ПоказатьФормуРедактированияКомментария(Элемент, ТекстКомментария);

 

Итог:

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

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

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

Проверено на следующих конфигурациях и релизах:

  • 1С:Библиотека стандартных подсистем, редакция 3.1, релизы 3.1.12.268

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

БСП Разработка Чистый код Стандарты разработки Шпаргалка 1С

См. также

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

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

25000 руб.

06.03.2026    1520    4    0    

3

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

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

3254 руб.

21.11.2024    13743    49    26    

56

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

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

04.06.2026    10241    Kaliostr0    21    

36

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

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

06.02.2026    16984    manul1c    7    

26

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

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

23.09.2025    16039    AlexeyPROSTO_1C    1    

18

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

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

16.09.2025    8071    _seerco2002    0    

36
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. RocKeR_13 1481 30.07.26 13:12 Сейчас в теме
2. Константин С. 686 30.07.26 16:37 Сейчас в теме
Проблема, не где посмотреть. А знать, что смотреть и какая функция/процедура есть в наличие.
Для отправки сообщения требуется регистрация/авторизация