Что нужно знать 1С-программисту о БСП (Библиотеке стандартных подсистем) для успешной работы и прохождения собеседований?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При поиске работы разработчики 1С постоянно сталкиваются с требованием «отличное знание БСП» в вакансиях. Начинающие специалисты часто путают знание БСП с умением настраивать разделы «НСИ и администрирование» в типовых конфигурациях вроде «Управление торговлей 11» или «ERP». Однако для практикующего программиста знание Библиотеки стандартных подсистем лежит совершенно в другой плоскости.

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

1. Что работодатели понимают под «знанием БСП» на техническом уровне

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

  1. Отказ от изобретения «велосипедов». В БСП уже реализовано более 50 подсистем, закрывающих 95% рутинных задач: от отправки SMS и работы с файлами до формирования печатных форм и настройки обменов данными. Разработчик должен уметь использовать готовый программный интерфейс библиотеки, а не писать собственные уникальные механизмы с нуля.
  2. Понимание концепции переопределяемых модулей. Архитектура БСП построена на внедрении прикладного кода через специальные общие модули с суффиксом ...Переопределяемый. Мы должны четко понимать, как интегрировать свои доработки в стандартные алгоритмы (например, при обновлении информационной базы, заполнении объектов по умолчанию или проверке прав доступа), не снимая конфигурацию с поддержки.
  3. Умение работать со стандартными механизмами через расширения. Современная разработка практически полностью ушла в расширения конфигурации. Нам необходимо уметь перехватывать вызовы функций БСП с помощью аннотаций &Вместо, &Перед или &После так, чтобы при обновлении конфигурации-поставщика логика расширения не ломалась.

2. Ключевые программные функции (API БСП), которые нужно знать наизусть

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

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


// Неправильно (приводит к избыточному чтению объекта из БД):
ИННКонтрагента = СсылкаНаКонтрагента.ИНН;

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

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

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


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

Получение ссылки на текущего пользователя. Новички часто путают системное имя пользователя Windows или имя учетной записи «1С:Предприятия» с элементом справочника «Пользователи». Метод БСП Пользователи.ТекущийПользователь() всегда возвращает корректную ссылку на элемент справочника физического пользователя, под которым сейчас запущена сессия.

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


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

Утилитарные методы для работы со строками и массивами. БСП предоставляет мощные инструменты для рутинных операций. Например, модуль ОбщегоНазначенияКлиентСервер содержит функции СвернутьМассив() (удаление дублей), РазложитьСтрокуВМассивПодстрок() (разделение текста по разделителям) и ТолькоЦифрыВСтроке().

3. Критически важные подсистемы БСП

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

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

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

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

Подсистема «Работа с файлами». Позволяет организовать хранение файлов, привязанных к документам или справочникам. Разработчику необходимо понимать структуру хранения файлов (создание вспомогательных справочников вида [ИмяОбъекта]ПрисоединенныеФайлы), уметь настраивать хранение файлов в томах на диске вместо базы данных и выводить стандартные элементы управления файлами на управляемые формы.

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

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

4. Внедрение и обновление БСП

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

Первое внедрение. Для интеграции библиотеки «с нуля» мы используем специализированный инструмент — обработку ПервоеВнедрениеБСП.epf, которая поставляется в дистрибутиве библиотеки. С ее помощью мы можем отметить галочками только те подсистемы, которые нам действительно нужны. Инструмент автоматически рассчитает зависимости между модулями и сформирует правила для объединения конфигураций.

Обновление конфигурации и обработчики обновления ИБ. При переходе конфигурации на новые релизы структура данных неизбежно меняется. БСП предоставляет стройный механизм последовательного обновления данных. Разработчик должен уметь создавать процедуры-обработчики обновления данных, регистрировать их в модуле ОбновлениеИнформационнойБазы[ИмяКонфигурации] и управлять очередью их выполнения (в том числе в многопоточном режиме для высоконагруженных систем).

Рассмотрим пример регистрации простого обработчика обновления в модуле БСП:


Процедура ПриДобавленииОбработчиковОбновления(Обработчики) Экспорт

    Обработчик = Обработчики.Добавить();
    Обработчик.Версия = "1.1.2.5";
    Обработчик.Процедура = "МойОбщийМодульОбновления.ЗаполнитьНовыеРеквизитыНоменклатуры";
    Обработчик.РежимВыполнения = "Оперативно";

КонецПроцедуры

5. Современные тенденции в БСП (версии 3.1 и 3.2)

С выходом новых версий платформы «1С:Предприятие 8.3» Библиотека стандартных подсистем также претерпевает изменения. Проанализируем ключевые тренды последних релизов БСП:

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

← На главную