Добавить поле адреса в свой документ, используя БСП виды контактной информации

1. AntonFAKOFF 09.06.22 05:58 Сейчас в теме
Здравствуйте, подскажите пожалуйста. Требуется в свой документ добавить поле адреса с полным функционалом адресного классификатора из БСП. Тем много но какого то окончательного решения нет. В типовой конфигурации все виды контактной информации заблокированы и связанные объекты, и в ручную не добавляются. Как это обойти?
Неужели в 1С не предусмотрено заполнение адресов ни где кроме стандартных справочников? Я пока что не вижу решения, кроме как полностью дублировать подсистему адресного классификатора.
Есть какие то варианты чтобы просто добавить свой документ в вид контактной информации?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. Ivanov_OM 38 09.06.22 08:56 Сейчас в теме
(1) Поле с контактной информацией - это строка. Добавляешь строку в документ. Добавляешь кнопку для изменения и вызываешь команду заполнения контактной информации как в стандартных справочниках.
2. N0t_F0und 10 09.06.22 08:15 Сейчас в теме
Там же вроде обработка вызывается для заполнения и редактирования информации адреса (контактной информации), работающая с адресным классификатором, её и вызывайте из своего документа (РедактированиеКонтактнойИнформации)
4. AntonFAKOFF 10.06.22 12:19 Сейчас в теме
Да, но все в итоге в любом случае завязывается на справочник Виды Контактной Информации
Вот эти товарищи делают так Ссылка1
и здесь Ссылка2
Но их функционал основан на том что они добавляют свои элементы в справочник Виды Контактной Информации

Так у меня тоже работает в тестовой копии базы.

А если все эти справочники на "замке"?

Там же вроде обработка вызывается для заполнения

Да обработка есть. Но она запрещена для вызова вне функционала адресного классификатора.
Параметры.Вставить("ОткрытаПоСценарию", Истина);
Возврат ОткрытьФорму("Обработка.ВводКонтактнойИнформации.Форма", Параметры, Владелец,,,, Оповещение);

А если ее запускать обходными функциями, добавляя свои структуры со значениями, то в итоге при записи объекта идет его поиск в списке видов контактной информации.
И на этом месте у меня ступор.
5. FilippovRI 73 10.04.23 16:59 Сейчас в теме
Создадим новую внешнюю обработку
Добавим два реквизита: Представление и Адрес
На Форме обработки разместим Адрес с видом "Надпись" и поставим флаг "Гиперссылка"


&НаКлиенте
Процедура АдресНажатие(Элемент)
	
	ВидАдреса = ПредопределенноеЗначение("Справочник.ВидыКонтактнойИнформации.АдресПоПропискеФизическиеЛица");
	РедактироватьАдрес(Элемент, ВидАдреса);
	
КонецПроцедуры

&НаКлиенте
Процедура РедактироватьАдрес(Элемент, ВидАдреса)
	
	ОписаниеОповещения = Новый ОписаниеОповещения(
	"АдресНажатие_Завершение", 
	ЭтотОбъект, 
	Элемент);
	
	ПараметрыОткрытия = УправлениеКонтактнойИнформациейКлиент.ПараметрыФормыКонтактнойИнформации(ВидАдреса, ЭтотОбъект[Элемент.Имя]);
	ПараметрыОткрытия.Вставить("ТолькоПросмотр", Ложь);
	
	УправлениеКонтактнойИнформациейКлиент.ОткрытьФормуКонтактнойИнформации(ПараметрыОткрытия, , ОписаниеОповещения);
	
КонецПроцедуры


&НаКлиенте
Процедура АдресНажатие_Завершение(Результат, Элемент) Экспорт
	
	Если Результат = Неопределено Тогда
		Возврат;
	КонецЕсли;
	
	Адрес         = Результат.КонтактнаяИнформация;
	Представление = Результат.Представление;
	Элемент.Заголовок       = Представление;
	ЭтотОбъект[Элемент.Имя] = Результат.КонтактнаяИнформация;

     // Расскоменнтировать если нужно сохранять настройку
	 //Сохранить();
	
КонецПроцедуры
Показать

Ну и в случае если нам нужно где то сохранять и загружать адрес, задействуем обработчик ПриСозданииНаСервере и расскоментировать //Сохранить()

&НаСервере
Процедура Сохранить() 
	КлючОбъекта  = "ОбработкаВводаАдреса";
	КлючНастроек = "ВводАдреса";
	Настройки  = Новый Структура("Адрес,Представление", Адрес,Представление);
	ОбщегоНазначения.ХранилищеОбщихНастроекСохранить(КлючОбъекта, КлючНастроек, Настройки,,ИмяПользователя());
	
КонецПроцедуры  



&НаСервере
Процедура Восстановить() 
	СтруктураОбщихПараметров = Неопределено;
	СтруктураОбщихПараметров = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить("ОбработкаВводаАдреса", "ВводАдреса", , , ИмяПользователя());
	Если ТипЗнч(СтруктураОбщихПараметров) = Тип("Структура") Тогда
		Если СтруктураОбщихПараметров.Свойство("Адрес") Тогда 
			Адрес =  СтруктураОбщихПараметров.Адрес;
			
			Если СтруктураОбщихПараметров.Свойство("Представление") Тогда 
				Представление = СтруктураОбщихПараметров.Представление; 
				Элементы.Адрес.Заголовок = Представление;	
			КонецЕсли;
		КонецЕсли;
	КонецЕсли;
КонецПроцедуры


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	Восстановить();
КонецПроцедуры
Показать
user1804494; config; +2 Ответить
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот