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

