Методы БСП, которые не озвучивают на курсах

26.06.26

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

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

Всем привет.  Хочется немного поделиться с вами рабочими моментами, так как оно встречается больше, чем может показаться. Повсюду. Итак, начнем.

Вариант задания 1: У вас база на ..дцать организаций, ну, например, пять-десять. Вам нужно всем поделить доступ, чтоб каждый  видел документы только своей организации. И вот беда, первая мысля это RLS, но туда можно не лезть, так как включена галка в настройках Учет в целом по компании (есть главная организация) и эта компания лезет отовсюду, как в каждой бочке затычка. При отборе и при создании.

Решение - немного доработать справочник. Вариантов несколько с алгоритмами работы. Проверить, есть ли ограничения. У каждого пользователя  добавить свой список организаций. Если нет ограничений, то доступ на базу полный, а иначе  даем запрос к справочнику как раз на свои созданные реквизиты, получаем список значений. Метод лучше вынести в общий модуль как экспортный.  Это будет наш отбор.

Ну а далее для каждого документа в формах списка  мы скрываем типовой элемент отбора по организации и вставляем свой отбор.

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

Вот пример из типовой  конфигурации в форме списка документа АвансовыйОтчет:

ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(
		Список, "Валюта", Валюта, ВидСравненияКомпоновкиДанных.Равно,, ЗначениеЗаполнено(Валюта));

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

Аналогично тот же список значений можно использовать в формах документа Обработчик Начало выбора. Но тут уж с параметрами выбора код кидать не буду. Оно гуглится в интернете.

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

Вариант задания 2.  Вас просят сделать что-то в обработке, чтобы там был список. Бьетесь фэйсом об тэйбл? Не нужно!  В обработке в основном форма объекта, и создать через реквизиты (данные) очередной реквизит с типом динамический список - номер не пройдет. У вас он будет недоступен в данных формы.

Создавайте как реквизит формы и играйтесь аналогично с данным списком.

 

 

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

Вариант задания 3. Программное создание и проведение документа. Вы из формы одного типового документа и создаете  другой новый документ, и проводите. Но вот беда, статус проведен, а движений нет?! Знакомо?

Если распровести и снова провести, то вылезет ошибка пересчета. Хоть поле Количество и заполнено. Вроде мы все реквизиты и прочее скопировали, заполнили, но не катит.

Решение 1. Обязательно нужно при создании нового документа вызывать обработчик заполнения, а потом уже заполнять реквизиты.

Я, например, делаю калькуляцию из формы заказа клиента:

НовыйДок = Документы.ПлановаяКалькуляция2_2.СоздатьДокумент();
			НовыйДок.Заполнить(ИсточникЗаполнения);
            ...
            НовыйДок.Записать(РежимЗаписиДокумента.Проведение);

Источник чаще всего это ДанныеЗаполнения, но это в модуле объекта, а в модуле формы это чаще всего Объект или ЭтотОбъект.

Но вот беда, и этого может быть недостаточно. А вы распроведите док и проведите заново, авось и вылезет, где песик порылся.

У меня вылезла ошибка с количеством. Оно, оказывается, нулевое? Да с чего ли? Оказывается, есть клиентские обработчики пересчета упаковок и количества, которые срабатывают при интерактивном  обращении. То есть введите вы заново данные в ТЧ документа и вуаля, все будет норм. Но нам нужно, чтобы программно док создавался, пока не получается.

&НаКлиенте
Процедура ОбъектыКалькуляцииУпаковкаПриИзменении(Элемент)
	
	ТекущаяСтрока = Элементы.ОбъектыКалькуляции.ТекущиеДанные;

	СтруктураДействий = Новый Структура;
	СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц");

	ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
	
КонецПроцедуры

Вот оно, вроде, решение проблемы?! Но нет. Мы же создаем док на сервере и не можем стучаться на клиент, как обычно с клиента на сервер(

Кто-то заблудится с отладчиком в БСП как в темном лесу, но если порыться повнимательнее, в процессе найдете.. 

Если ТребуетсяСервер Тогда
...

Идем дальше, вуаля, есть аналогично серверные методы.

В итоге проблема решилась так. До записи документа вводим в процессе:

СтруктураДействий = Новый Структура;
			СтруктураДействий.Вставить("ПересчитатьКоличествоУпаковок", Истина); 
			
			
			ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПересчитатьКоличествоУпаковокВСтрокеТЧ(НоваяСтрока,
			СтруктураДействий, КэшированныеЗначения);

Сейчас кто-то закричит, но это же обработчики табличных частей! да! Потому что в типовой оно оттуда и вызывается и с ними работает. НО никто не мешает заменить переменные.

ВЫ уже в форме документа при работе с ТЧ обработаете данные и создадите док новый ток в цикле.

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

Перем КэшированныеЗначения;

Переменная кэшированные значения, ваша структура действий и ваша строка из цикла. У меня получилось. Из заказа клиента  моя плановая калькуляция провелась как надо, движения появились)

Варианты заданий буду  потихоньку дополнять, если встретится что еще)))

Показано на конфигурации 1С:ERP Управление предприятием 2 (2.5.22.103). Платформа 1С:Предприятие 8.3 (8.3.27.1989).

С уважением, когда-то затюканный юзер форума. Благо сейчас меня никто уже не трогает))))

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

БСП МетодыБСП Разработка ERP

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

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

См. также

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

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

25000 руб.

06.03.2026    1158    1    0    

3

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

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

3254 руб.

21.11.2024    13492    49    26    

56

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

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

04.06.2026    8336    Kaliostr0    16    

35

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

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

06.02.2026    13659    manul1c    6    

25

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

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

23.09.2025    14301    AlexeyPROSTO_1C    1    

18

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

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

16.09.2025    6964    _seerco2002    0    

36
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. bengamenm 29.06.26 05:28 Сейчас в теме
Задача про организации решается без кодинга, автор забыл про РЛС
2. Bukaska 157 29.06.26 12:58 Сейчас в теме
(1) Оно возможно решается без кодинга, но без учета той галки, о которой я упомянула. А если нужна та галка, то уже номер не пройдет. Благо мой начальник универсал и он за каждый механизм может сказать, куда лучше смотреть и как лучше сделать. Кто бы что за франчей минуса не говорил. Но мой франч относится к клиенту вполне ответственно, а не лишь бы сдать клиенту кое как и поиметь деньги. Сразу скажет: "тут лучше сюда не смотреть, здесь лучше обратить внимание на это, а вот так лучше не делать, за такое будь ты разраб типовых, могут и премии лишить или на месяцок без зарплаты оставить".
Так что я рада, что залетела пускай в малой франче, но плохому меня там точно не учат и если есть вариант без кодинга, то это вполне сделают более опытные консультанты или аналитики.
Один раз был вопрос с печатной формы, я отладчиком побегала, поняла что оно где то должно быть по настройкам, где? Мой мозг взорвался. Консультанты через два дня нашли решение. Потом я долго смеялась, найдя тут на портале печатную форму, когда вопрос решался всего лишь одной галочкой в настройках учета.
По пользовательской стороне я хромак и я это признаю. Отладчик другой раз лучше может сказать)
Для отправки сообщения требуется регистрация/авторизация