Как организовать хранение различных характеристик (свойств) для справочника, не добавляя реквизиты справочника в Конфигураторе? Так, чтобы пользователь сам мог добавлять нужные ему свойства? Для примера справочником пусть будет справочник "Контрагенты". Подразумевая, что такой справочник в конфигурации уже есть (и у него есть форма элемента), в простейшем случае необходимо проделать следующее:
1. Создать в конфигурации новый План видов характеристик "СвойстваКонтрагентов". Свойство "Тип значения характеристик" этого Плана видов характеристик определяет составной тип данных, в который входят все типы, которые могут понадобиться при указании типа значения характеристики. Если пользователю станет недостаточно этих типов данных (например, он захочет вести учет в разрезе городов Контрагентов, а справочника "Города" в конфигурации нет), он сможет воспользоваться неким вспомогательным справочником, который разработчик создаст заблаговременно и укажет в качестве свойства Плана видов характеристик - "Дополнительные значения характеристик". Этот справочник должен быть подчинённым плану видов характеристик. Таким образом, если затем пользователь пожелает создать характеристики "Страна" и "Город", он будет задавать их значения в том же самом справочнике дополнительных характеристик, но они не будут "смешиваться" друг с другом при выборе.
2. Создать в конфигурации новый справочник "ЗначенияСвойствКонтрагентов". В качестве владельца справочника назначить План видов характеристик "СвойстваКонтрагентов".
3. Свойство "Тип значения характеристик" Плана видов характеристик "СвойстваКонтрагентов" задать как "СправочникСсылка.ЗначенияСвойствКонтрагентов" (мы рассматриваем простейший случай, у нас составной тип будет состоять только из одного типа). Свойство "Дополнительные значения характеристик" задать так же: как "ЗначенияСвойствКонтрагентов".
4. Создать в конфигурации новый непериодический регистр сведений "ЗначенияСвойствКонтрагентов" с независимым режимом записи. Измерения: "Контрагент" (СправочникСсылка.Контрагенты), "Свойство" (ПланВидовХарактеристикСсылка.СвойстваКонтрагентов). Ресурс - "Значение" (Характеристика.СвойстваКонтрагентов).
5. На форме элемента справочника "Контрагенты" разместить табличное поле с типом значения "РегистрСведенийСписок.ЗначенияСвойствКонтрагентов". Колонку "Контрагент" в табличном поле можно убрать, т.к. значения всё равно надо фильтровать по текущему контрагенту (т.е. контрагент во всех строках будет всегда одним и тем же - текущим контрагентом, чья форма сейчас открыта).
6. В обработчике события "При открытии" формы элемента справочника "Контрагенты" необходимо задать фильтр по текущему контрагенту:
<ИмяТабличногоПоля>.Отбор.Контрагент.Использование = Истина;
<ИмяТабличногоПоля>.Отбор.Контрагент.Значение = Ссылка;
7. В обработчике события "При начале редактирования" <ИмяТабличногоПоля>ПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование) табличного поля, расположенного на форме элемента справочника "Контрагенты", необходимо заполнить поле "Контрагент", т.к. мы убрали его видимую колонку:
Если НоваяСтрока Тогда
Элемент.ТекущиеДанные.Контрагент = Ссылка;
КонецЕсли;
8. В обработчике события "Перед началом добавления" <ИмяТабличногоПоля>ПередНачаломДобавления(Элемент, Отказ, Копирование) табличного поля, расположенного на форме элемента справочника "Контрагенты", необходимо проверить, записан ли текущий Контрагент, чтобы предотвратить исключительную ситуацию при записи данных в регистр сведений:
Если ЭтотОбъект.ЭтоНовый() Тогда
Предупреждение("Для редактирования свойств Контрагент должен быть записан!");
Отказ = Истина;
КонецЕсли;
Предложения в русском языке начинаются с большой буквы и заканчиваются точкой.
В названии ветки всегда должен быть указан язык программирования или среда исполнения скрипта, если это возможно.