Подключение нового справочника к подсистемам БСП (дополнительные реквизиты, файлы, запрет редактирования)

17.08.21

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

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

Введение

Описание в дополнение к ранее опубликованной статье Пример создания документа с движениями в ERP 2.5.7. Пример создавал на базе ERP 2.5.7, но не затрагивая какие-либо объекты ERP,  в этот раз пример без использования расширения. 

В данном примере дано описание, как добавить произвольный справочник к подсистемам:

  • Версионирование
  • Запрет редактирования реквизитов
  • Дополнительные реквизиты и сведения
  • Присоединенные файлы
  • Подключаемые отчеты и обработки

Всё, что я написал, описано в документации к БСП, но тут живой пример, без лишней информации.

Встраивание справочника в подсистемы

Добавляем условный справочник с именем "Статья_НовыйСправочник".

Состав реквизитов простой, например поля Организация, Дата и Номер.

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

 

Подсистема "Версионирование"

Включаем СправочникСсылка.Статья_НовыйСправочник в определяемый тип "ВерсионируемыеДанные" и СправочникОбъект.Статья_НовыйСправочник в определяемый тип "ВерсионируемыеДанныеОбъект"

В модуле менеджера определяем процедуру

Процедура ПриОпределенииНастроекВерсионированияОбъектов(Настройки) Экспорт

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

В форме объекта и форме списка  в событии "ПриСозданииНаСервере" добавляем вызов

ВерсионированиеОбъектов.ПриСозданииНаСервере(ЭтотОбъект);

 

Подсистема "Запрет редактирования реквизитов"

Ищем в конфигурации форму "РазблокированиеРеквизитов" и копируем её в новый справочник.

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

Функция ПолучитьБлокируемыеРеквизитыОбъекта() Экспорт
	
	Результат = Новый Массив;
	Результат.Добавить("Дата");
	Результат.Добавить("Номер");
	Результат.Добавить("Код");
	Результат.Добавить("Организация");
	Результат.Добавить("Наименование");
	
	Возврат Результат;

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

В общий модуль "ЗапретРедактированияРеквизитовОбъектовПереопределяемый" в процедуру "ПриОпределенииОбъектовСЗаблокированнымиРеквизитами" вносим наш справочник

Объекты.Вставить(Метаданные.Справочники.Статья_НовыйСправочник.ПолноеИмя(), "ПолучитьБлокируемыеРеквизитыОбъекта");

Добавляем реквизит формы "ДоступностьРеквизитов" с типом Булево.

В форму справочника в событие "ПриСозданииНаСервере" вносим вызов

ЗапретРедактированияРеквизитовОбъектов.ЗаблокироватьРеквизиты(ЭтаФорма);

А также в событие "ПослеЗаписиНаСервере"

ЗапретРедактированияРеквизитовОбъектов.ЗаблокироватьРеквизиты(ЭтаФорма);

 

Подсистема "Дополнительные реквизиты и сведения"

Скопируем в наш справочник табличную часть "ДополнительныеРеквизиты" с любого другого объекта.

Для того, чтобы со справочником и его доп. реквизитами корректно работали отчеты и динамические списки, пропишем в характеристиках справочника необходимые данные:

Виды характеристик Значения характеристик
Поле ключа Поле отбора видов Значение отбора видов Поле пути к данным Поле объекта Поле вида Поле значения
Справочник.НаборыДополнительныхРеквизитовИСведений.ТабличнаяЧасть.ДополнительныеРеквизиты Справочник.Статья_НовыйСправочник.ТабличнаяЧасть.ДополнительныеРеквизиты
Свойство Ссылка Справочник_Статья_НовыйСправочник   Ссылка Свойство Значение
Справочник.НаборыДополнительныхРеквизитовИСведений.ТабличнаяЧасть.ДополнительныеРеквизиты РегистрСведений.ДополнительныеСведения
Свойство Ссылка Справочник_Статья_НовыйСправочник   Объект Свойство Значение

 

Для подсистемы нужны две подписки на события ОбработкаПроверкиЗаполнения и ПередУдалением. В типовых конфигурациях они уже существуют (ДополнительныеРеквизитыОбработкаПроверкиЗаполнения и СвойстваПередУдалениемСсылочногоОбъекта соответственно), где определен СправочникОбъект. Поэтому необходимости создавать новые нет.

Расширим тип определяемого типа "ВладелецДополнительныхСведений" нашим справочником (СправочникСсылка.Статья_НовыйСправочник).

Необходимо в справочник "НаборыДополнительныхРеквизитовИСведений" добавить новый предопределенный элемент

Имя Справочник_Статья_НовыйСправочник
Наименование Справочник "Новый справочник для статьи"

и любым способом вызвать служебные процедуры для обновления и заполнения справочника (например через обработку, или повысить версию конфигурации или запустить с ключем "/c ЗапуститьОбновлениеИнформационнойБазы").

УправлениеСвойствамиСлужебный.СоздатьПредопределенныеНаборыСвойств();
УправлениеСвойствамиСлужебный.УстановитьЗначениеПризнакаИспользуется();

 

Остается только в форму справочника добавить вызовы функционала подсистемы

В событие "ПриСозданииНаСервере"

УправлениеСвойствами.ПриСозданииНаСервере(ЭтаФорма);

В событие "ПриЧтенииНаСервере"

УправлениеСвойствами.ПриЧтенииНаСервере(ЭтаФорма, ТекущийОбъект);

В событие "ПередЗаписьюНаСервере"

УправлениеСвойствами.ПередЗаписьюНаСервере(ЭтаФорма, ТекущийОбъект);

В событие "ПриОткрытии"

УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);

В событие "ОбработкаОповещения"

Если УправлениеСвойствамиКлиент.ОбрабатыватьОповещения(ЭтотОбъект, ИмяСобытия, Параметр) Тогда
	ОбновитьЭлементыДополнительныхРеквизитов();
	УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
КонецЕсли;

И добавить служебные процедуры

&НаКлиенте
Процедура ОбновитьЗависимостиДополнительныхРеквизитов()
	УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ПриИзмененииДополнительногоРеквизита(Элемент)
	УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры

&НаСервере
Процедура ОбновитьЭлементыДополнительныхРеквизитов()
	УправлениеСвойствами.ОбновитьЭлементыДополнительныхРеквизитов(ЭтаФорма);
КонецПроцедуры

 

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

 

Подсистема "Присоединенные файлы"

Для работы этой системы нам в первую очередь нужно создать новый справочник "Статья_НовыйСправочникПрисоединенныеФайлы". Функционал подсистемы будет искать справочник с именем "Имя справочника владельца" + "ПрисоединенныеФайлы".

В качестве шаблона для справочника скопируйте любой из существующих с постфиксом "ПрисоединенныеФайлы" и измените тип реквизита ВладелецФайла на свой справочник. В моем случае это будет "СправочникСсылка.Статья_НовыйСправочник".

Если вы создаете свой справочник, то как правило префикс будет совпадать и никаких сложностей нет. Но если вы хотите подключить присоединенные файлы к уже существующему типовому объекту и при этом для нового справочника необходимо ввести префикс, то необходимо дополнительно скорректировать в общем модуле процедуру РаботаСФайламиПереопределяемый.ПриОпределенииСправочниковХраненияФайлов

Например, мы добавляем присоединенные файлы к типовому документу "ЧекККМ", а префикс для добавляемых объектов у нас "Статья_", тогда в этом случае нам нужно прописать следующий код:

Если ТипВладелецФайла = Тип("ДокументСсылка.ЧекККМ") Тогда
	ИменаСправочников.Вставить("Статья_ЧекККМПрисоединенныеФайлы", Истина);
КонецЕсли;

Далее необходимо в определяемые типы "ВладелецПрисоединенныхФайлов", "ПрисоединенныйФайл" добавить тип СправочникСсылка на справочник "Статья_НовыйСправочник" и в определяемый тип "ПрисоединенныйФайлОбъект" добавить  тип СправочникОбъект.Статья_НовыйСправочник.

Для контроля удаления справочника и подчиненных файлом создадим подписку или отредактируем существующую (УстановитьПометкуУдаленияПрисоединенныхФайлов)

Имя Статья_УстановитьПометкуУдаленияПрисоединенныхФайлов
Источник СправочникОбъект.Статья_НовыйСправочник
Событие ПередЗаписью
Обработчик РаботаСФайлами.УстановитьПометкуУдаленияПрисоединенныхФайлов

 

И остается только доработать форму справочника.

1. Добавить реквизит формы "ПараметрыРаботыСФайлами" с  типом Произвольный.

2. Добавить вызовы функционала подсистемы из событий формы.

В событие "ПриСозданииНаСервере" 

ПараметрыГиперссылки = РаботаСФайлами.ГиперссылкаФайлов();
ПараметрыГиперссылки.Размещение = "КоманднаяПанель";
РаботаСФайлами.ПриСозданииНаСервере(ЭтотОбъект, ПараметрыГиперссылки);

В событие "ПриОткрытии" 

РаботаСФайламиКлиент.ПриОткрытии(ЭтотОбъект, Отказ);

В событие "ОбработкаОповещения" 

РаботаСФайламиКлиент.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия);

А также служебные команды

 
&НаКлиенте
Процедура Подключаемый_КомандаПанелиПрисоединенныхФайлов(Команда)
	 РаботаСФайламиКлиент.КомандаУправленияПрисоединеннымиФайлами(ЭтотОбъект, Команда);
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраПроверкаПеретаскивания(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка)
	 РаботаСФайламиКлиент.ПолеПредпросмотраПроверкаПеретаскивания(ЭтотОбъект, Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка);
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраПеретаскивание(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка)
	 РаботаСФайламиКлиент.ПолеПредпросмотраПеретаскивание(ЭтотОбъект, Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка);
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраНажатие(Элемент, СтандартнаяОбработка)
	 РаботаСФайламиКлиент.ПолеПредпросмотраНажатие(ЭтотОбъект, Элемент, СтандартнаяОбработка);
КонецПроцедуры

 

Подсистема "Подключаемые отчеты и обработки" (Подключаемые команды)

Для работы этой подсистемы, необходимо прописать функционал подключаемых команд.

В форме объекта добавляем реквизит формы "ПараметрыПодключаемыхКоманд" с типом Произвольный, а так же вызовы:

В событие "ПриСозданииНаСервере"

ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект);

В событие "ПриЧтенииНаСервере"

ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);

В событие "ПриОткрытии"

ПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект);

В событие "ПослеЗаписи"

Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда
	МодульПодключаемыеКомандыКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиент");
	МодульПодключаемыеКомандыКлиент.ПослеЗаписи(ЭтотОбъект, Объект, ПараметрыЗаписи);
КонецЕсли;

И служебные команды

&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
	ПодключаемыеКомандыКлиент.ВыполнитьКоманду(ЭтотОбъект, Команда, Объект);
КонецПроцедуры

&НаСервере
Процедура Подключаемый_ВыполнитьКомандуНаСервере(Контекст, Результат) Экспорт
	ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, Контекст, Объект, Результат);
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ОбновитьКоманды()
	ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
КонецПроцедуры

 

Заключение

Эта статья - компиляция документации БСП (на самом деле, просто для примера реализовал данный пример в ERP 2.5.7, предварительно снятой с поддержки). 

Т.к. меняются определяемые типы и предопределенные элементы, то это потребует внимательности при последующих обновлениях конфигурации.

БСП ЗапретРедактированияРеквизитов ПрисоединенныеФайлы Версионирование

См. также

Шаблон многопоточного выполнения фонового задания

Инструментарий разработчика БСП (Библиотека стандартных подсистем) Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Пример шаблона для многопоточного выполнения фонового задания на основе БСП. Шаблоны сделаны для процедуры и функции.

2 стартмани

03.05.2024    652    6    Hitcher    2    

7

БСП. Добавляем отчет в меню Отчеты

БСП (Библиотека стандартных подсистем) Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Добавим новый отчет в меню нового документа средствами БСП.

02.04.2024    3509    John_d    10    

92

Создать на основании - своя кнопка (БСП). Проблема двух подменю Создать на основании

БСП (Библиотека стандартных подсистем) Адаптация типовых решений Платформа 1С v8.3 1С:ERP Управление предприятием 2 Бесплатно (free)

Понадобилось в подменю "Создать на основании" добавить свою команду, которая открывает обработку. В процессе доработок появилась проблема двух подменю "Создать на основании". В статье о том, как решились проблемы.

01.03.2024    2043    dimanich70    8    

14

Заполнение поля адреса в своей обработке [БСП]

Механизмы платформы 1С БСП (Библиотека стандартных подсистем) Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Небольшая шпаргалка по функциям БСП касательно адреса. Так скажем, еще один способ помимо https://infostart.ru/1c/articles/1060970/

12.02.2024    849    FilippovRI    0    

16

Расширяем возможности дополнительных обработок и настраиваем их отладку

БСП (Библиотека стандартных подсистем) Механизмы типовых конфигураций Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Уже не одна веб-страница исписана знаниями о дополнительных обработках, как создать, как подключить. Есть масса вариантов, как их можно отладить. Я разобрался в кишках работы библиотеки и покажу, как можно расширить возможности дополнительных отчетов, а также покажу удобный способ отладки.

07.02.2024    2780    YA_418728146    11    

47

1С:БСП Дополнительные реквизиты и сведения

БСП (Библиотека стандартных подсистем) Платформа 1С v8.3 Бесплатно (free)

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

19.01.2024    7252    PROSTO-1C    5    

47
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. krollzlat 19.08.21 15:25 Сейчас в теме
Не хватает еще даты запрета, печати и кнопки создания на основания(не платформенная).Так же хотел бы порекомендовать создавать отдельные подписки на с нетиповыми источниками вызывающие типовые обработчики.
3. mmustafin 19.08.21 17:01 Сейчас в теме
(1)
, печати и кнопки создания на основания(не платформенная).Так же хотел бы порекомендовать создавать отдельные подписки на с нетиповыми источниками вызывающие типовые обработчики

Дату запрета и создание на основании я описал в статье https://infostart.ru/1c/articles/1494836, подумал излишне дублировать информацию в разных статьях.
2. MiniGrad2014 19.08.21 15:36 Сейчас в теме
Подскажите, пожалуйста, если включил поля своего справочника в подсистему "Запрет редактирования реквизитов", то "Разрешить редактирование реквизитов" по кнопке "Ещё" их не открывает для редактирования?
4. maraty 439 19.08.21 17:11 Сейчас в теме
(2)
Подскажите, пожалуйста, если включил поля своего справочника в подсистему "Запрет редактирования реквизитов", то "Разрешить редактирование реквизитов" по кнопке "Ещё" их не открывает для редактирования?


я в описании пропустил для этой подсистемы важный пункт: "Ищем в конфигурации форму "РазблокированиеРеквизитов" и копируем её в новый справочник.".
Статью поправил.
5. MiniGrad2014 20.08.21 07:32 Сейчас в теме
(4) Я нашёл в УТ 11 такие формы у некоторых справочников и они индивидуальны по реквизитам справочника. Универсальной получается нет, надо скопировать и изменить её под свои реквизиты?
6. maraty 439 25.08.21 09:36 Сейчас в теме
(5) Специально посмотрел, как пример форма "РазблокированиеРеквизитов" справочника "ДоговорыКредитовИДепозитов" полностью универсальна и в ней нет какой либо привязки к реквизитам справочника.
7. MiniGrad2014 25.08.21 09:49 Сейчас в теме
(6) Спасибо! Я смотрел у знакомых справочников, типа номенклатура.
8. MiniGrad2014 25.08.21 09:59 Сейчас в теме
(6) Может что не так сделал, но простое копирование данной формы в мой справочник не открыло элементы для редактирования, а проверка использования вывалилась в ошибку
9. DoctorRoza 03.11.21 14:47 Сейчас в теме
Не совсем понятно, какой тип справочника нужно добавлять в Определяемые типы ПрисоединенныйФайлОбъект и ВладелецПрисоединенныхФайловОбъект? Посмотрел демо БСП (3.1.2.264) в эти ОТ добавляются объект метаданные ***ПрисоединенныеФайлы.
10. Medvedik 16.11.21 21:06 Сейчас в теме
Правильно ли я понимаю, что встроить новый справочник из расширения в подсистему дополнительных реквизитов не получится, т.к. в расширении (по крайней мере при совместимости с 12м релизом) недоступен тип "Характеристика"?
11. user1671810 06.12.21 14:37 Сейчас в теме
Спасибо за статью.Подскажите как убрать верхнюю ссылку на файлы, а то получается эта ссылка на форме 2 раза?
Прикрепленные файлы:
12. maraty 439 20.12.21 10:17 Сейчас в теме
(11) В форме элемента, на закладке "Командный интерфейс", необходимо снять галки Видимость и Автовидимость с ОбщаяКоманда.ПрисоединенныеФайлы в подменю Перейти.
13. maraty 439 20.12.21 19:06 Сейчас в теме
Оставлю в комментарии по поводу предопределенного элемента в справочнике НаборыДополнительныхРеквизитовИСведений.
Лучше это сделать через УправлениеСвойствамиПереопределяемый.ПриПолученииПредопределенныхНаборовСвойств

Набор = Наборы.Строки.Добавить();
Набор.Имя = "Справочник_Статья_НовыйСправочник";
Набор.Идентификатор = Новый УникальныйИдентификатор("9fe7fb02-a0f0-467d-b1df-5e104d430985");
zabaluev; +1 Ответить
16. zabaluev 462 12.07.23 22:04 Сейчас в теме
(13) Важное замечание. Сейчас уже предопределённых элементов в этом справочнике в типовых конфигурациях уже нет.
14. blaik 21.12.22 13:34 Сейчас в теме
Добрый день! У меня почему то после всех действий по инструкции _Подсистема "Дополнительные реквизиты и сведения", в Администрировании -Дополнительные реквизиты не видно справочник характеристик, хотя с номенклатурой получилось(. КОнфигурация самописная на БСП 3.1.5.317 платформа 8.3.20.2180. Это может быть из-зи того что справочник "Характеристики Номенклатура" подчиненный?
15. korppinen 69 14.03.23 16:44 Сейчас в теме
и любым способом вызвать служебные процедуры для обновления и заполнения справочника (например через обработку, или повысить версию конфигурации или запустить с ключем "/c ЗапуститьОбновлениеИнформационнойБазы").

Этот важный момент я не увидел в документации. Всё сделаете - сам обьект, форму и "ПриПолученииПредопределенныхНаборовСвойств" опишите , но Без "этого" не появлялся объект в справочнике "НаборыДоп.... "

(!) Спасибо, добрый человек.. .

ps минус день из-за того что в документации бсп не было указано что нужно делать обновление инф базы.. - я не увидал по крайней мере, ну и наверное это для кого то очевидно скорее всего что внося предопределенный элемент справочника - ссылка на него оказывается доступна только после обновления инф базы. . Зато теперь оттрасировал бсп реквизиты и сведения))) жесть
Оставьте свое сообщение