Как связать две формы одного справочника в поле ввода

Версия для печатиPDF-версия

Платформа 8.2
Создаю Справочник "Физические лица", есть на форме объект "Адрес".Кроме основной формы (Форма1), есть произвольная форма(Форма 2). Необходимо в "Форма1" в поле "Адрес" вызвать "форма2". Добавила для Объекта "Адрес" на "Форма1" Событие "Открытие".При отладке форма вызывается но как сделать чтобы после записи в поле "Адрес" вводились значения из "Форма 2".

1. Нужно в форме адреса в обработчике команды "Записать" добавить вызов метода Оповестить с указанием имени события и инициализацией возвращаемого параметра. Например, так:

&НаКлиенте
Процедура Записать(Команда)
	Оповестить("ЗаписьАдреса", Область + ", " + Район + ", " + Город + ", " + Улица + ", " + Дом);
КонецПроцедуры

2. В обработчике события Открытие поля Адрес основной формы добавить строку СтандартнаяОбработка = Ложь;.

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

3. Добавить в основной форме обработчик события ОбработкаОповещения:

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

Спасибо большое за помощь, не могли бы еще подсказать как исправить ошибку "Преобразование значения к типу Число не может быть выполнено". Я не понимаю почему ее выдает...

Такая ошибка возникает при попытке неявного преобразования типов.

Если вы полностью скопировали мой пример, то нужно в строке "Оповестить("ЗаписьАдреса", Область + ", " + Район + ", " + Город + ", " + Улица + ", " + Дом);" поставить двойные кавычки в начала передаваемого параметра либо вставлять в строку адреса значение Область.Наименование, чтобы сразу задать значению параметра тип Строка:

Оповестить("ЗаписьАдреса", "" + Область + ", " + Район + ", " + Город + ", " + Улица + ", " + Дом);

либо

Оповестить("ЗаписьАдреса", Область.Наименование + ", " + Район + ", " + Город + ", " + Улица + ", " + Дом);

PS. Я сразу не обратил внимания, что реквизит Область имеет тип СправочникСсылка.Субъекты.

Спасибо большое,все получилось...

Вроде все хорошо, но вот только заметила что не записываются введенные данные...поле "Адрес" остается пустым...Проверила все реквизиты все нормально...в чем может быть еще причина????

Поле "Адрес" остаётся пустым после того, как нажали "Записать" в форме выбора адреса?

Именно так...

Обработчик "ОбработкаОповещения" отрабатывает? Посмотрите отладчиком.

Скорее всего все дело в "Обработка оповещения",хотя при отладке все нормально...

а когда записываешь не записывает....

Вы хотите записать эти данные в элемент справочника Физ.лица?

Судя по скриншотам, на форму выведены реквизиты формы, а не элемента справочника. Поэтому эти данные никуда и не записываются. После закрытия формы данные просто уничтожаются.

Именно это я и хочу сделать...не понимаю как...
Я уже поняла что выведены реквизиты и поэтому не записывается....я окончательно запуталась в этом справочнике...

Нужно сначала добавить эти реквизиты в справочник. А потом уж вывести их на форму.

Это все понятно...Реквизиты все эти есть в справочнике,но я не могу их вывести на произвольную форму...Если я правильно поняла то в произвольной форме создаются реквизиты отдельно,или я чего-то не понимаю....?

А теперь поподробнее: какие реквизиты созданы в справочнике (Адрес, ДомАдрес и т.д. или Область, Город и т.д.)? Что вы хотите сохранять в базе?

Можете добавить скрин с реквизитами справочника?

После того как я переделывать стала,в справочнике все реквизиты...ФИО,Адрес,Телефон,Мобильный телефон,Домашний адрес, Место работы,Должность,+Область,Район,Город,Дом..

Мне нужно из второй формы (которую сначала я делала произвольную) чтобы записывались в поле Адрес эти реквизиты :Область,Город,Дом,Район...
Если я добовляю Произвольную форму,то немогу добавить эти реквизиты из справочника,приходится создавать в самой форме..если я создаю Форму элемента ,то мне выдает ошибку когда я прописываю в модуле:

Процедура Записать(Команда)
Оповестить("ЗаписьАдреса",""+Область+","+Район+","+Город+","+Улица+","+Дом);
КонецПроцедуры
Пишет что Процедура или функция с указанным именем уже определена (Записать).
 

Возможно такое решение:

Форму оставляете произвольной. В метод Оповестить вторым параметром передаёте структуру со значениями полей (Новый Структура("Область, Район, Город, Улица, Дом", Область, Район, Город, Улица, Дом)). 

В ОбработкеОповещения обрабатываете полученную структуру: Объект.Область = Параметр.Область и т.д. Формируете значение поля Адрес: Адрес = "" + Объект.Область + ", " + Объект.Район + ", " + Объект.Город + ", " + Объект.Улица + ", " + Объект.Дом;.

Как-то так.

Ничего не получается, не записывается...Придется наверное как-то подругому мне оформить этот справочник...

Что именно не получается? В каком месте теряются данные?

Просто не записываются в поле Адрес данные...Адрес остается пустым...
Пробовала создать другую форму,тоже ничего..

Отладчиком смотрели?

смотрела...все хорошо.....а все равно не записывает...Спасибо за помощь,я хоть поняла как это все должно выглядеть,возможно просто я что-то напутала...Переделаю справочник по другому,может потом и разберусь с этим....

Как это - "все хорошо.....а все равно не записывает"? Что ж в этом хорошего?

Когда всё-таки возникает проблема: не заполняется поле Адрес на форме элемента справочника после заполнения формы адреса или данные из поля Адрес не записываются в базу данных? Вроде тут не так много мест, где может быть ошибка.

Отладчик не помогает мне в нахождении ошибки,там все нормально.....Не заполняется поле Адрес,точнее заполняется но когда сохраняешь справочник и закрываешь,то поле остается пустым...

Ну вот, уже что-то. У вас поле Адрес связано с реквизитами справочника?

Поле Адрес у меня связано с формой (которая произвольная)...и к нему прописано событие только Открытие....ну и обработка оповещения к основной форме...Реквизиты справочника я не могу вытащить на произвольную форму,могу создать только в ней самой...и как я поняла это реквизиты самой формы,а чтобы записывалось нужны реквизиты справочника...

В форме элемента справочника в ОбработкеОповещения нужно присвоить данные адреса реквизитам объекта. Что-то вроде этого: Объект.Адрес = Параметр.Адрес (Параметр - это значение возвращаемое произвольной формой).

Спасибо огромное за помощь,все получилось....Нужно было в обработке оповещения написать Объект.Адрес=Параметр.
Спасибо)

Пожалуйста) Обращайтесь ещё.