Содержание:
В типовых конфигурациях и во многих отраслевых решениях, часто используется подсистема «Свойства» из состава БСП, которая позволяет использовать дополнительные реквизиты, сведения и метки объектов. Подробное описание можно почитать на ИТС, например для БСП 3.1.11 по описанию методов программного интерфейса тут, по внедрению подсистемы в свое решение тут.
Включается подсистема в пользовательском режиме обычно в разделе Администрирование -> Общие настройки.

В эту статью вынес некоторые возможности по работе с доп. реквизитами и сведениями, которые периодически используются на практике.
Получение данных в запросе
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
// 1. Дополнительные сведения ВЫБРАТЬ ЕСТЬNULL(ВедомостьДополнительныеСведения.Значение, "") КАК ДопСогласовант ИЗ ВТИтоговыеДанные КАК ВТИтоговыеДанные ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДополнительныеСведения КАК ВедомостьДополнительныеСведения ПО ВТИтоговыеДанные.Ссылка = ВедомостьДополнительныеСведения.Объект И (ВедомостьДополнительныеСведения.Свойство.Имя = "Ведомость_ДопСогласовант") //И (ВедомостьДополнительныеСведения.Свойство = &СвойствоДопСогласовант) //СвойствоДопСогласовант = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоРеквизиту("Имя","Ведомость_ДопСогласовант"); //Запрос.УстановитьПараметр("СвойствоДопСогласовант", СвойствоДопСогласовант); // 2. Дополнительные реквизиты ВЫБРАТЬ ЕСТЬNULL(ПодразделенияДополнительныеРеквизиты.Значение, "") КАК ПромышленныйПризнак ИЗ ВТИтоговыеДанные КАК ИтоговыеДанные ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПодразделенияОрганизаций.ДополнительныеРеквизиты КАК ПодразделенияДополнительныеРеквизиты ПО ИтоговыеДанные.Подразделение = ПодразделенияДополнительныеРеквизиты.Ссылка И (ПодразделенияДополнительныеРеквизиты.Свойство.Имя = "Подразделения_ПромышленныйПризнак") //И (ПодразделенияДополнительныеРеквизиты.Свойство = &СвойствоПромышленныйПризнак) //СвойствоПромышленныйПризнак = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоРеквизиту("Имя","Подразделения_ПромышленныйПризнак"); //Запрос.УстановитьПараметр("СвойствоПромышленныйПризнак", СвойствоПромышленныйПризнак); |
Запись и чтение через методы БСП
Большинство методов программного интерфейса можно найти в общем модуле «УправлениеСвойствами».
Запись значений в дополнительные реквизиты и сведения
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
// исходные данные СсылкаСотрудник = Справочники.Сотрудники.НайтиПоНаименованию("Капица Пётр Леонидович", Истина); СвойствоПенсионер = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоРеквизиту("Имя","Сотрудники_Пенсионер"); // инициализация таблицы свойств ТаблицаСвойств = Новый ТаблицаЗначений; ТаблицаСвойств.Колонки.Добавить("Свойство"); ТаблицаСвойств.Колонки.Добавить("Значение"); // заполнение таблицы данными СтрокаСвойств = ТаблицаСвойств.Добавить(); СтрокаСвойств.Свойство = СвойствоПенсионер; СтрокаСвойств.Значение = Истина; // запись Если ТаблицаСвойств.Количество() > 0 Тогда УправлениеСвойствами.ЗаписатьСвойстваУОбъекта(СсылкаСотрудник, ТаблицаСвойств); КонецЕсли; |
Получение значений дополнительных реквизитов и сведений
1 2 3 4 5 6 7 |
// 1. По одному объекту, одно свойство // ЗначениеСвойства(Объект, Свойство, КодЯзыка = "") ЗначениеСвойства = УправлениеСвойствами.ЗначениеСвойства(СсылкаСотрудник, СвойствоПенсионер); // 2. По массиву или одиному объекту, несколько или все свойства // ЗначенияСвойств(ОбъектыСоСвойствами, ПолучатьДопРеквизиты = Истина, ПолучатьДопСведения = Истина, Свойства = Неопределено, КодЯзыка = "") ТаблицаЗначенийСвойствОбъектов = УправлениеСвойствами.ЗначенияСвойств(МассивСсылок); |
Проверка свойства на тип: ссылочный или строковый
1 2 3 4 5 6 |
СвойствоДопРеквизита = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоРеквизиту("Имя", ИмяРеквизита); Если СвойствоДопРеквизита.ТипЗначения.СодержитТип(Тип("Строка")) Тогда ... ИначеЕсли СвойствоДопРеквизита.ТипЗначения.СодержитТип(Тип("СправочникСсылка.ЗначенияСвойствОбъектов")) Тогда ... КонецЕсли; |