====== Коротко об дополнительных реквизитах/сведениях ====== [[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 |}} И теперь можно сохраняться и пользоваться доп реквизитами и свойствами у нового справочника/документа. Обновление вспомогательных данных вроде не требуется. ===== Если нужны метки ===== Нужно добавить тип объекта, для которого требуются метки, в определяемый тип ''ВладелецМеток''