====== Коротко об дополнительных реквизитах/сведениях ======
[[https://its.1c.ru/db/bsp319doc#content:4:hdoc:issogl1_%D1%81%D0%B2%D0%BE%D0%B9%D1%81%D1%82%D0%B2%D0%B0|Источник]]
Задача: оснастить документ/справочник дополнительными реквизитами или сведениями.
===== Настройка объектов с дополнительными реквизитами =====
Нужно у объекта создать табличную часть ''ДополнительныеРеквизиты'' с реквизитами:
^Имя^Тип^Подсказка^
|''Свойство''|''ПланВидовХарактеристикСсылка.ДополнительныеРеквизитыИСведения''|Дополнительный реквизит|
|''Значение''|''Характеристика.ДополнительныеРеквизитыИСведения''|Значение дополнительного реквизита|
|''ТекстоваяСтрока''|''Строка неограниченной длины''|Полный текст строкового дополнительного реквизита|
Реквизиту ''Значение'' в свойстве **Связи параметров выбора** установить связь: ''Отбор.Владелец'' (''ДополнительныеРеквизиты.Свойство'').
1. В форме объекта рекомендуется создать специальную группу полей или страницу с наименованием ''ГруппаДополнительныеРеквизиты'' для размещения элементов управления, редактирующих свойства объекта.
2. В обработчике события ПриСозданииНаСервере формы объекта необходимо выполнить вызов:
// СтандартныеПодсистемы.Свойства
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("ИмяЭлементаДляРазмещения", "ГруппаДополнительныеРеквизиты");
УправлениеСвойствами.ПриСозданииНаСервере(ЭтотОбъект, ДополнительныеПараметры);
// Конец СтандартныеПодсистемы.Свойства
где ''ГруппаДополнительныеРеквизиты'' – имя группы формы, созданной на шаге 2, в которой будут располагаться поля формы, предназначенные для редактирования дополнительных реквизитов. Если этот параметр не указывать, то элементы управления для редактирования свойств будут размещаться в нижней части формы.
3. этот пункт из ИТС пропускаем
4. В модуле формы каждого объекта со свойствами необходимо добавить процедуру
#Область ОбработчикиКомандФормы
// СтандартныеПодсистемы.Свойства
&НаКлиенте
Процедура Подключаемый_СвойстваВыполнитьКоманду(ЭлементИлиКоманда, НавигационнаяСсылка = Неопределено, СтандартнаяОбработка = Неопределено)
УправлениеСвойствамиКлиент.ВыполнитьКоманду(ЭтотОбъект, ЭлементИлиКоманда, СтандартнаяОбработка);
КонецПроцедуры
// Конец СтандартныеПодсистемы.Свойства
#КонецОбласти
5. В обработчике события ''ПриОткрытии'' добавить код:
// СтандартныеПодсистемы.Свойства
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
// Конец СтандартныеПодсистемы.Свойства
6. В обработчике события ''ОбработкаОповещения'' добавить код:
// СтандартныеПодсистемы.Свойства
Если УправлениеСвойствамиКлиент.ОбрабатыватьОповещения(ЭтотОбъект, ИмяСобытия, Параметр) Тогда
ОбновитьЭлементыДополнительныхРеквизитов();
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
КонецЕсли;
// Конец СтандартныеПодсистемы.Свойства
7. Добавить вспомогательные процедуры:
#Область СлужебныеПроцедурыИФункции
// СтандартныеПодсистемы.Свойства
&НаСервере
Процедура ОбновитьЭлементыДополнительныхРеквизитов()
УправлениеСвойствами.ОбновитьЭлементыДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьЗависимостиДополнительныхРеквизитов()
УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПриИзмененииДополнительногоРеквизита(Элемент)
УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
// Конец СтандартныеПодсистемы.Свойства
#КонецОбласти
8. В обработчике события ''ПриЧтенииНаСервере'' добавить код:
// СтандартныеПодсистемы.Свойства
УправлениеСвойствами.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
// Конец СтандартныеПодсистемы.Свойства
9. В обработчике события ''ОбработкаПроверкиЗаполненияНаСервере'' добавить код:
// СтандартныеПодсистемы.Свойства
УправлениеСвойствами.ОбработкаПроверкиЗаполнения(ЭтотОбъект, Отказ, ПроверяемыеРеквизиты);
// Конец СтандартныеПодсистемы.Свойства
10. В обработчике события ''ПередЗаписьюНаСервере'' добавить код:
// СтандартныеПодсистемы.Свойства
УправлениеСвойствами.ПередЗаписьюНаСервере(ЭтотОбъект, ТекущийОбъект);
// Конец СтандартныеПодсистемы.Свойства
===== Настройка объектов с дополнительными сведениями =====
Перечислить типы объектов с дополнительными сведениями в составе определяемого типа ''ВладелецДополнительныхСведений''. Поддерживаемые типы объектов: документы, справочники, планы видов характеристик, планы счетов, планы видов расчета, бизнес-процессы и задачи.
===== Настройка динамических списков =====
Для возможности отображения дополнительных реквизитов и сведений в формах списков объектов со свойствами необходимо добавить поле ''Ссылка'' из запроса динамического списка в таблицу формы, связанную с этим динамическим списком. При этом добавленное поле ''Ссылка'' следует по умолчанию скрыть от пользователей, сняв флажок ''Видимость'' в свойстве **Пользовательская видимость**.
===== Настройка наборов свойств объектов =====
Тут описан простой случай: у всех элементов/документов единый набор доп реквизитов/сведений, не зависящий от самих элементов/документов.
В процедуре ''ПриПолученииПредопределенныхНаборовСвойств'' общего модуля ''УправлениеСвойствамиПереопределяемый'' описать предопределенный набор свойств с именем по шаблону ''Справочник_<ИмяОбъекта>'' (если объект – справочник; ''Документ_<ИмяОбъекта>'', если объект – документ, и т.д., например, ''Справочник_Сотрудники'', ''Документ_АвансовыйОтчет'', ''БизнесПроцесс_Продажа''), а также указать уникальный идентификатор.
&После("ПриПолученииПредопределенныхНаборовСвойств")
Процедура ФЕС_ПриПолученииПредопределенныхНаборовСвойств(Наборы)
// Вставить содержимое метода.
Набор = Наборы.Строки.Добавить();
Набор.Имя = "Документ_ФЕС_КартаДвиженияУпаковки";
Набор.Идентификатор = Новый УникальныйИдентификатор("e1331e45-669c-45c0-b7bf-36a70cb61e31");
Набор = Наборы.Строки.Добавить();
Набор.Имя = "Документ_ФЕС_Рейс";
Набор.Идентификатор = Новый УникальныйИдентификатор("e1331e45-669c-45c0-b7bf-36a70cb61e32");
КонецПроцедуры
Идентификатор этот должен указывать на элемент справочника ''НаборыДополнительныхРеквизитовИСведений''
ид = Новый УникальныйИдентификатор("e1331e45-669c-45c0-b7bf-36a70cb61e32");
спр = справочники.НаборыДополнительныхРеквизитовИСведений.ПолучитьСсылку(ид);
Если такого элемента нет, то его нужно создать. Возможно, есть способ при помощи инструментов БСП, но я его не нашел. сделал через ''СоздатьЭлемент''. Важно: у созданного элемента должно быть установлено свойство ''Используется''.
===== Настройка дополнительных характеристик объектов метаданных =====
Для каждого объекта конфигурации со свойствами необходимо открыть и заполнить диалог редактирования дополнительных характеристик. На скрине пример. Если у объекта есть доп. реквизиты, то используете первую строку, если есть доп. сведения, то вторую.
{{ :dev1c:addon01.png?direct |}}
И теперь можно сохраняться и пользоваться доп реквизитами и свойствами у нового справочника/документа. Обновление вспомогательных данных вроде не требуется.
===== Если нужны метки =====
Нужно добавить тип объекта, для которого требуются метки, в определяемый тип ''ВладелецМеток''