Этюды по программированию. Хитрости создания расширений для конфигураций на БСП. Часть 1.

20.11.24

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

Некоторые нюансы, если вы захотите создавать свои расширения.

Молочников Олег Spb. 2019

Хитрости создания расширений для конфигураций на БСП. Часть 1.  

Вторая часть статьи  здесь: //infostart.ru/1c/articles/1044424/

Третья часть статьи  здесь: //infostart.ru/1c/articles/2240529/

Рассмотрим пример создания расширения от начала  и до конца на примере создания расширения: Подсистема "Входной контроль" для ERP 2.5, КА 2.5, УТ 11.5

Для начала создадим в расширении подсистему, которая будет отображаться в интерфейсе и назовем ее, к примеру, “Входной  контроль”.  Далее следует вполне рутинная работа по программированию документов, справочников, обработок и других объектов нашей системы.

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

//infostart.ru/upload/iblock/21c/21ca118dfaed593c731623b2cc77988b.png

Если мы оставим, как есть, то наша подсистема не будет доступна пользователям с полными правами, несмотря на наличие любых других прав. Чтобы этого избежать, достаточно включить в расширение роль “полные права” и дать ей права на наши объекты.

Создание на основании

Далее по логике системы документ “Акт входного контроля ” может вводиться на основании документа “Приобретение товаров услуг”. Необходимо, чтоб  в списке документов, которые можно создать на основании Приобретение товаров услуг” был и наш документ.

Затянем в нашу конфигурацию модуль :  “СозданиеНаОснованииПереопределяемый” и добавим примерно следующий код, только для ваших объектов.

&После("ПриОпределенииОбъектовСКомандамиСозданияНаОсновании")

// Определяет список объектов конфигурации, в модулях менеджеров которых предусмотрена процедура

// ДобавитьКомандыСозданияНаОсновании, формирующая команды создания на основании объектов.

// Синтаксис процедуры ДобавитьКомандыСозданияНаОсновании см. в документации.

//

// Параметры:

//   Объекты - Массив - объекты метаданных (ОбъектМетаданных) с командами создания на основании.

//

// Пример:

//             Объекты.Добавить(Метаданные.Справочники.Организации);

//  

Процедура ВК_ПриОпределенииОбъектовСКомандамиСозданияНаОсновании(Объекты) Экспорт

               Объекты.Добавить(Метаданные.Документы.мо_АктВходногоКонтроля);

               Объекты.Добавить(Метаданные.Документы.мо_АктОНепрохождениеВходногоКонтроля);

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

 

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

В модуле менеджера документа надо добавить примерно следующий код:

#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область СлужебныеПроцедурыИФункции
// Определяет список команд создания на основании.
//
// Параметры:
//   КомандыСозданияНаОсновании - ТаблицаЗначений - Таблица с командами создания на основании. Для изменения.
//       См. описание 1 параметра процедуры СозданиеНаОснованииПереопределяемый.ПередДобавлениемКомандСозданияНаОсновании().
//   Параметры - Структура - Вспомогательные параметры. Для чтения.
//       См. описание 2 параметра процедуры СозданиеНаОснованииПереопределяемый.ПередДобавлениемКомандСозданияНаОсновании().
//
Процедура ДобавитьКомандыСозданияНаОсновании(КомандыСозданияНаОсновании, Параметры) Экспорт
КонецПроцедуры

 
// Добавляет команду создания документа "Упаковочный лист".
//
// Параметры:
//   КомандыСозданияНаОсновании - ТаблицаЗначений - Таблица с командами создания на основании. Для изменения.
//       См. описание 1 параметра процедуры СозданиеНаОснованииПереопределяемый.ПередДобавлениемКомандСозданияНаОсновании().
//
Функция ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании) Экспорт
               Если ПравоДоступа("Добавление", Метаданные.Документы.мо_АктВходногоКонтроля) Тогда
                               КомандаСоздатьНаОсновании = КомандыСозданияНаОсновании.Добавить();
                               КомандаСоздатьНаОсновании.Менеджер = Метаданные.Документы.мо_АктВходногоКонтроля.ПолноеИмя();
                               КомандаСоздатьНаОсновании.Представление = ОбщегоНазначенияУТ.ПредставлениеОбъекта(Метаданные.Документы.мо_АктВходногоКонтроля);
                               КомандаСоздатьНаОсновании.РежимЗаписи = "Проводить";
                              Возврат КомандаСоздатьНаОсновании;
               КонецЕсли;
               Возврат Неопределено;
КонецФункции
// Определяет список команд отчетов.
//
// Параметры:
//   КомандыОтчетов - ТаблицаЗначений - Таблица с командами отчетов. Для изменения.
//       См. описание 1 параметра процедуры ВариантыОтчетовПереопределяемый.ПередДобавлениемКомандОтчетов().
//   Параметры - Структура - Вспомогательные параметры. Для чтения.
//       См. описание 2 параметра процедуры ВариантыОтчетовПереопределяемый.ПередДобавлениемКомандОтчетов().
//
Процедура ДобавитьКомандыОтчетов(КомандыОтчетов, Параметры) Экспорт
                                           

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

Расширение БСП

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

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

См. также

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

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

25000 руб.

06.03.2026    1870    4    0    

3

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

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

3254 руб.

21.11.2024    14026    49    30    

57

Сканер штрих-кода Пользователь 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Управленческий учет Платные (руб)

Стандартные конфигурации ERP, КА, УТ 11 позволяют работать с штрихкодированием серий. Есть только одно суровое ограничение – на упаковке должна быть этикетка для номенклатуры и отдельно для серии. Во многих случаях это критически неудобно.

24400 руб.

19.04.2021    30561    68    59    

79

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

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

1 стартмани

30.07.2026    6560    Elya_Elya    14    

19

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

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

04.06.2026    11687    Kaliostr0    21    

36

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

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

06.02.2026    19734    manul1c    7    

27
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. echo77 1943 04.02.19 18:43 Сейчас в теме
(0) Оформите, пожалуйста, код в виде блока код, чтобы раскрасить его автоматом и убрать лишние пустые строки
PLAstic; top_1c; kuzyara; wowik; +4 Ответить
2. German_Tagil 43 05.02.19 05:44 Сейчас в теме
ну что в копилку - должно пригодиться
3. Boyborodin 05.02.19 11:54 Сейчас в теме
Спасибо. Пригодится.
4. Hans 3 05.02.19 11:58 Сейчас в теме
В чем ньюансы то? Напиши в самом начале что решает этот этюд.
5. Alien_job 193 05.02.19 12:31 Сейчас в теме
Вы включили полные права в зависимости расширения. При каждом обновлении они будут изменяться. Расширение гарантированно не будет работать после первого же обновления конфигурации?
6. milkers 3045 05.02.19 12:59 Сейчас в теме
(5) Нет. В расширении вы можете настроить для затянутой роли права доступа только на объекты расширения. Другие не затрагиваются.
7. TerveRus 06.02.19 11:54 Сейчас в теме
Режим совместимости вручную меняли?
Если я включу возможность изменения конфигурации, то и так могу документы-справочники добавить. В чем тогда смысл расширения?
Когда уже в типовой режим совместимости уберут??
8. milkers 3045 06.02.19 12:41 Сейчас в теме
(7)
Режим совместимости вручную меняли?


Режим совместимости нужен, чтоб возможности новых версий платформы не мешали работать старому коду. Режим совместимости Версия 8.3.12+ означает, что я использую в расширении возможности, которые появились с платформы 8.3.12. Во всех конфигурация которые рассчитаны на эту и более поздние версии платформы мое расширение будет работать, может быть только понадобиться поменять режим совместимости, чтобы он соответствовал конфигурации. Для более ранних конфигураций я сделал конфигурацию для объединения.

Если я включу возможность изменения конфигурации, то и так могу документы-справочники добавить. В чем тогда смысл расширения?

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

Когда уже в типовой режим совместимости уберут??

Никогда. Это удобный механизм контроля совместимости версий платформы, конфигураций, расширений.
user774630; +1 Ответить
Для отправки сообщения требуется регистрация/авторизация