БСП 3.1.13 Добавление контактной информации в свой справочник
Задача: Внедрить в свой справочник контактную информацию (Например Телефон и Адрес)
Решение: используем стандартный функционал БСП
- В переопределяемые типы ВладелецКонтактнойИнформации добавляем справочник, куда нужно добавить контактную информацию. Если Не казан составной тип — указываем.
- В справочник ВидыКонтактнойИнформации добавляем предопределенные значения: группа с указанием имени справочника и реквизиты. Например:
3. В справочник где хотим разместить контактную информацию, на форму добавляем группу «КонтактнаяИнформация»
4. В модуль формы справочника добавляем:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 |
&НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) //Стандартная подсистема Управление контактной информацией УправлениеКонтактнойИнформацией.ПриСозданииНаСервере(ЭтотОбъект, Объект, "ГруппаКонтактнаяИнформация", ПоложениеЗаголовкаЭлементаФормы.Лево); //Конец Стандартная подсистема Управление контактной информацией // инициализация !! выполняем 1 раз, далее коментируем! //КМ_Организации = Справочники.ВидыКонтактнойИнформации.СправочникЭЗС.ПолучитьОбъект(); //КМ_Организации.Используется = Истина; //ОбновлениеИнформационнойБазы.ЗаписатьДанные(КМ_Организации); //ПараметрыВида = УправлениеКонтактнойИнформацией.ПараметрыВидаКонтактнойИнформации(Перечисления.ТипыКонтактнойИнформации.Телефон); //ПараметрыВида.Вид = Справочники.ВидыКонтактнойИнформации.ТелефонЭЗС; //ПараметрыВида.МожноИзменятьСпособРедактирования = Истина; //ПараметрыВида.Порядок = 1; //УправлениеКонтактнойИнформацией.УстановитьСвойстваВидаКонтактнойИнформации(ПараметрыВида); // //ПараметрыВида = УправлениеКонтактнойИнформацией.ПараметрыВидаКонтактнойИнформации(Перечисления.ТипыКонтактнойИнформации.Адрес); //ПараметрыВида.Вид = Справочники.ВидыКонтактнойИнформации.АдресЭЗС; //ПараметрыВида.МожноИзменятьСпособРедактирования = Истина; //ПараметрыВида.Порядок = 2; //УправлениеКонтактнойИнформацией.УстановитьСвойстваВидаКонтактнойИнформации(ПараметрыВида); // конец инициализации! КонецПроцедуры &НаСервере Процедура ПриЧтенииНаСервере(ТекущийОбъект) Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.КонтактнаяИнформация") Тогда МодульУправлениеКонтактнойИнформацией = ОбщегоНазначения.ОбщийМодуль("УправлениеКонтактнойИнформацией"); МодульУправлениеКонтактнойИнформацией.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект); КонецЕсли; КонецПроцедуры &НаСервере Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты) Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.КонтактнаяИнформация") Тогда МодульУправлениеКонтактнойИнформацией = ОбщегоНазначения.ОбщийМодуль("УправлениеКонтактнойИнформацией"); МодульУправлениеКонтактнойИнформацией.ОбработкаПроверкиЗаполненияНаСервере(ЭтотОбъект, Объект, Отказ); КонецЕсли; КонецПроцедуры &НаСервере Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.КонтактнаяИнформация") Тогда МодульУправлениеКонтактнойИнформацией = ОбщегоНазначения.ОбщийМодуль("УправлениеКонтактнойИнформацией"); МодульУправлениеКонтактнойИнформацией.ПередЗаписьюНаСервере(ЭтотОбъект, ТекущийОбъект); КонецЕсли; КонецПроцедуры // СтандартныеПодсистемы.КонтактнаяИнформация &НаКлиенте Процедура Подключаемый_КонтактнаяИнформацияПриИзменении(Элемент) Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.КонтактнаяИнформация") Тогда МодульУправлениеКонтактнойИнформациейКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("УправлениеКонтактнойИнформациейКлиент"); МодульУправлениеКонтактнойИнформациейКлиент.НачатьИзменение(ЭтотОбъект, Элемент); КонецЕсли; КонецПроцедуры // Параметры: // Элемент - ПолеФормы // &НаКлиенте Процедура Подключаемый_КонтактнаяИнформацияНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.КонтактнаяИнформация") Тогда ПараметрыОткрытия = Новый Структура; Отбор = Новый Структура("ИмяРеквизита", Элемент.Имя); Строки = ЭтотОбъект.КонтактнаяИнформацияОписаниеДополнительныхРеквизитов.НайтиСтроки(Отбор); ДанныеСтроки = ?(Строки.Количество() = 0, Неопределено, Строки[0]); Если ДанныеСтроки <> Неопределено Тогда //ДобавитьСтрануВПараметрыОткрытия(ПараметрыОткрытия, ДанныеСтроки.Вид, Объект.СтранаРегистрации); КонецЕсли; МодульУправлениеКонтактнойИнформациейКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("УправлениеКонтактнойИнформациейКлиент"); МодульУправлениеКонтактнойИнформациейКлиент.НачатьВыбор(ЭтотОбъект, Элемент,, СтандартнаяОбработка, ПараметрыОткрытия); КонецЕсли; КонецПроцедуры &НаКлиенте Процедура Подключаемый_КонтактнаяИнформацияПриНажатии(Элемент, СтандартнаяОбработка) Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.КонтактнаяИнформация") Тогда МодульУправлениеКонтактнойИнформациейКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("УправлениеКонтактнойИнформациейКлиент"); МодульУправлениеКонтактнойИнформациейКлиент.НачатьВыбор(ЭтотОбъект, Элемент,, СтандартнаяОбработка); КонецЕсли; КонецПроцедуры // Параметры: // Элемент - ПолеФормы // СтандартнаяОбработка - Булево // &НаКлиенте Процедура Подключаемый_КонтактнаяИнформацияОчистка(Элемент, СтандартнаяОбработка) Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.КонтактнаяИнформация") Тогда МодульУправлениеКонтактнойИнформациейКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("УправлениеКонтактнойИнформациейКлиент"); МодульУправлениеКонтактнойИнформациейКлиент.НачатьОчистку(ЭтотОбъект, Элемент.Имя); КонецЕсли; КонецПроцедуры // Параметры: // Команда - КомандаФормы // &НаКлиенте Процедура Подключаемый_КонтактнаяИнформацияВыполнитьКоманду(Команда) Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.КонтактнаяИнформация") Тогда МодульУправлениеКонтактнойИнформациейКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("УправлениеКонтактнойИнформациейКлиент"); МодульУправлениеКонтактнойИнформациейКлиент.НачатьВыполнениеКоманды(ЭтотОбъект, Команда.Имя); КонецЕсли; КонецПроцедуры &НаКлиенте Процедура Подключаемый_КонтактнаяИнформацияАвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка) Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.КонтактнаяИнформация") Тогда МодульУправлениеКонтактнойИнформациейКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("УправлениеКонтактнойИнформациейКлиент"); МодульУправлениеКонтактнойИнформациейКлиент.АвтоПодборАдреса(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка); КонецЕсли; КонецПроцедуры // Параметры: // Элемент - ПолеФормы // &НаКлиенте Процедура Подключаемый_КонтактнаяИнформацияОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.КонтактнаяИнформация") Тогда МодульУправлениеКонтактнойИнформациейКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("УправлениеКонтактнойИнформациейКлиент"); МодульУправлениеКонтактнойИнформациейКлиент.ОбработкаВыбора(ЭтотОбъект, ВыбранноеЗначение, Элемент.Имя, СтандартнаяОбработка); КонецЕсли; КонецПроцедуры &НаКлиенте Процедура Подключаемый_КонтактнаяИнформацияОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка) Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.КонтактнаяИнформация") Тогда МодульУправлениеКонтактнойИнформациейКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("УправлениеКонтактнойИнформациейКлиент"); МодульУправлениеКонтактнойИнформациейКлиент.НачатьОбработкуНавигационнойСсылки(ЭтотОбъект, Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка); КонецЕсли; КонецПроцедуры &НаКлиенте Процедура Подключаемый_ПродолжитьОбновлениеКонтактнойИнформации(Результат, ДополнительныеПараметры) Экспорт ОбновитьКонтактнуюИнформацию(Результат); КонецПроцедуры &НаСервере Процедура ОбновитьКонтактнуюИнформацию(Результат) Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.КонтактнаяИнформация") Тогда МодульУправлениеКонтактнойИнформацией = ОбщегоНазначения.ОбщийМодуль("УправлениеКонтактнойИнформацией"); МодульУправлениеКонтактнойИнформацией.ОбновитьКонтактнуюИнформацию(ЭтотОбъект, Объект, Результат); КонецЕсли; КонецПроцедуры // Конец СтандартныеПодсистемы |
Внимание! Обращаю внимание что нужно на форме прописать событие «ПриСозданииНаСервере», а в самом событии закомментировать код, в котором написано, что выполнять 1 раз