При разработке новых конфигураций разработчик не всегда вовремя понимает, какие элементы и в каких справочниках следует сделать предопределенными. По крайней мере у меня это стандартно происходит со справочником "СтатьиДоходовРасходов" и с некоторыми другими. Так, например, недавно для конфигурации "Интернет-магазин" ввел справочник "Страны". Пользователи его заполнили, и стали юзать... но потом возникла потребность привязать некоторые алгоритмы расчета доставки, комиссии оплаты, способов доставки и проч. к конкретным странам. Что делает в этой ситуации большинство программистов?
1. Обвинить заказчика "почему Вы мне об этом раньше не сказали"
2. Покусать себе локти "почему я сам не додумался, что так будет"
3. Использовать старый "семерочный" способ определения элемента справочника... что-то типа "Если Спр.Код = "007" Тогда...."
Есть конечно вариант добавить-таки предопределенные элементы, а потом групповой обработкой переписать все ссылки на новые элементы....
Я поступаю иначе. Понимая, что эта ситуация типична, будет повторяться в будущем и уйти от нее НЕВОЗМОЖНО, я в каждой своей конфигурации создаю служебный справочник "ПреодпеределенныеЭлементыСправочников" с единственным реквизитом "СправочникЯкорь" (Тип - СправочникСсылка). Когда мне понадобилось при расчете стоимости доставки выделить страну "Украина", я добавил в мой справочник предопределенный элемент "СтранаУкраина" и указал в нем ссылку на соответствующий элемент справочника "Страны", а в алгоритме расчета доставки использовал конструкцию
"Если Заказ.Страна = Справочники.ПредопределенныеЭлементыСправочников.СтранаУкраина.СправочникЯкорь Тогда..."
В этот же справочник я могу поместить ссылки на любые другие элементы любых других справочников. Например, могу создать элемент "СтатьяАмортизацияЗданийСооружений" или "ВалютаДоллар" или "КонтрагентЛюбовницаШефа"... правда, в последнем случае будет очень больно, если в этом месте программа даст сбой и выведет пользователю сообщение с соответствующим текстом из программного модуля...