Помогите разобраться пожалуйста. Делаю самописную конфигурацию У меня есть справочник Организации, являющийся владельцем справочника Адреса. Мне нужно, чтобы при создании адреса из формы владельца, в реквизите Владелец, подчиненного справочника, появлялась ссылка на справочник владелец. А после заполнения формы подчиненного справочника, в справочнике Организации в реквизите Юридический адрес появлялся созданный адрес. Я сделал процедуру обработчик в форме Владельца, но она не возвращает во Владелец созданный адрес

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

Как теперь вернуть созданный адрес? И еще, есть ли смысл вводить в справочник адреса реквизит со значением Перечисления.ВидыАдресов.(Юридический, Фактический, Почтовый и т.д.)
---
Всем спасибо за участие. Задачу решил переделав сделав РегистрСведений.Адреса

```1c
    &НаКлиенте
    Процедура ЗаписатьАдрес(Команда)
    ОткрытьФормуМодально("РегистрСведений.Адреса.Форма.ФормаЗаписи");
    Объект.ЮридическийАдрес = ПолучитьНовыйАдрес();
    КонецПроцедуры

    &НаСервере
    Функция ПолучитьНовыйАдрес()

    ЭтотОбъект.Записать();

    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | АдресаСрезПоследних.Организация КАК Организация,
    | АдресаСрезПоследних.ВидАдреса КАК ВидАдреса,
    | АдресаСрезПоследних.Индекс КАК Индекс,
    | АдресаСрезПоследних.Страна КАК Страна,
    | АдресаСрезПоследних.Область КАК Область,
    | АдресаСрезПоследних.НаселенныйПункт КАК НаселенныйПункт,
    | АдресаСрезПоследних.Улица КАК Улица,
    | АдресаСрезПоследних.Дом КАК Дом,
    | АдресаСрезПоследних.Корпус КАК Корпус,
    | АдресаСрезПоследних.Квартира КАК Квартира
    |ИЗ
    | РегистрСведений.Адреса.СрезПоследних(
    | &Дата,
    | Организация = &Организация
    | И ВидАдреса = &ВидАдреса) КАК АдресаСрезПоследних";

    Запрос.УстановитьПараметр("ВидАдреса", Перечисления.ВидыАдресов.Юридический);
    Запрос.УстановитьПараметр("Дата", ТекущаяДата());
    Запрос.УстановитьПараметр("Организация", Объект.Ссылка);

    РезультатЗапроса = Запрос.Выполнить();

    ВДЗ = РезультатЗапроса.Выбрать();

    ВДЗ.Следующий();
    Адрес =" + ВДЗ.Индекс + " " + ВДЗ.Страна + " " + ВДЗ.Область + " г." + ВДЗ.НаселенныйПункт + " ул."
    + " дом" + ВДЗ.Дом + ?(НЕ ВДЗ.Корпус = "," корп." + ВДЗ.Корпус, ") + ?(НЕ ВДЗ.Квартира = ", " кв." + ВДЗ.Квартира, ");

    Возврат Адрес;
    КонецФункции
```
---
справочнике Организации в реквизите Юридический адрес - уточните назначение реквизита Юридический адрес, если адреса хранятся в подчиненном справочнике, а значит адресов может быть несколько...

Может использовать регистр сведений для адресов?
---
У автора очень сумбурный вопрос... и по ходу если он просто учится, то пусть пытается и так и так , и в справочнике и в регистре.
В процессе возможно придет понимание, что регистры проще...
---
реквизит со значением Перечисления.ВидыАдресов - это не помешает
---
Не пытайтесь притянуть за уши стандартные конфигурации. Не факт , что там ЛУЧШИЙ механизм...
И не цсложняйте..
Автор - учится с нуля как я понял!
---
Поясните вашу логику -
Для чего вы используете вот эту стройчку ЭтаФорма.Записать(); ?

И вообще смысл вашей Процедуры совершенно не понятен!

Что она делает? Очевидно что она вообще ничего не делает...
---
Идет создание новой организации. Она еще не записана и поэтому ссылки на нее не существует, значит я не могу ее передать в подчиненный справочник Адреса. А после этой строчки, я могу записать в форме создания нового адреса ссылку на владельца этого адреса, что и делается в следующей строчке. Мне нужно, чтобы после заполнения нового адреса его значение было передано назад владельцу
---
В форме НИЧЕГО не записывается! (в смысле данных объекта)
Все действия по созданию, сохранению делаются не на клиенте, а на сервере!

Посмотрите что делает процедура ЭтаФорма.Записать();

 Обоснуйте причину использование подчиненного справочника Адреса, вместо обычно используемого в подобных ситуациях Регистра сведений ?

И настойчиво рекомендую сначала все же изучить основы программирования Управляемых Форм.
Успехов!
---
Я понимаю, что запись данных идет на сервере а не на клиенте.
После строчки
ЭтаФорма.Записать();
У меня появляется ссылка на вновь созданную организацию, которую я потом могу выбрать в реквизите Владелец в справочнике адреса.
По поводу записи адресов в периодический регистр сведений, я думаю что это наверно будет более правильный вариант и я наверное остановлюсь на нем. Но меня уже из принципа интересует как можно решить эту задачу на справочнике. Я действительно начинающий программист и только учусь поэтому мне интересно сделать это решение разными способами.
---
Если вы понимаете, то покажите где вы записываете на сервере свои данные?
У вас
&НаКлиенте
Процедура

все делает только на вашем клиенте и до данных на сервере ничего не доходит...

"У меня появляется ссылка на вновь созданную организацию, " ничего у вас не появляется.

Еще раз убеждаю вас откройте ЛЮБУЮ книгу по программированию УФ
---
(14) Если вы понимаете, то покажите где вы записываете на сервере свои данные?
У вас
&НаКлиенте
Процедура

все делает только на вашем клиенте и до данных на сервере ничего не доходит...

"У меня появляется ссылка на вновь созданную организацию, " ничего у вас не появляется.

Еще раз убеждаю вас откройте ЛЮБУЮ книгу по программированию УФ

Я конечно займусь по плотнее УФ вот только поясните мне пожалуйста. При создании организации, пока она еще не записана на нее нет ссылки, я правильно понимаю? Если я из еще не созданной организации пытаюсь создать для нее адрес в подчиненном справочнике Адреса как мне записать в реквизите Владелец этого справочника ссылку на Владельца. Можно конечно перед созданием адреса нажать на кнопочку записать и тогда объект будет записан и ссылка появится.
После кода
 ЭтаФорма .Записать()
Ссылка появляется тоже и я могу ее записать в реквизит подчиненного справочника. Я не совсем понимаю как это работает но это так
---
Обоснуйте причину использование подчиненного справочника Адреса, вместо обычно используемого в подобных ситуациях Регистра сведений ?

Подскажите пожалуйста, а у РегистраСведений Адреса понятно что Организация и ВидАдреса (и нужно ли вообще такое измерение???) это измерения, а вот сами данные адреса Индекс, страна, область и т.д могут быть ресурсами, или тоже лучше измерениями?
---
достаточно Организация и ВидАдреса для измерений
ресурсами остальное
---
Если вы ранее программировали обычные формы, то ваши навыки и ту логику придется отбросить...
В УФ все строится по другому.
Вы оперировать должны не формами , а объектами.
То что отображается на формах вторично. Кроме того формы отображаются на клиентах, а данные хранятся и изменяются на сервере.

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

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

&НаКлиенте
Процедура ПослеЗакрытияФормы(Результат, ДополнительныеРеквизиты) Экспорт

КонецПроцедуры
---
Экспортных процедур на клиенте не бывает...
---
Экспортных процедур на клиенте не бывает...

Вот тут я с Вами не соглашусь даже несмотря на мой маленький опыт))

Вот пример экспортной процедуры на Клиенте при Асинхронных вызовах

НаКлиенте
Процедура ВыбратьПодразделение(Команда)
    ОткрытьФорму("Справочник.ПодразделенияОрганизаций.Форма.ФормаВыбораКФОснПодр",,ЭтаФорма,,,,
        Новый ОписаниеОповещения("ВыбратьПодразделениеНаКлиенте ",ЭтотОбъект),РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры

&НаКлиенте
Процедура ВыбратьПодразделениеНаКлиенте(Результат,ДополнительныеРеквизиты) Экспорт
    Если Результат=Неопределено Тогда
        Возврат;
    КонецЕсли;
    Подразделение=Результат;
    //...
КонецПроцедуры
---
Принципиального запрета нету. Тут вы правы!
Но смысл экспортной процедуры на клиенте очень трудно.
Ведь можно и по воробьям стрелять из пушек, можно стричь газон обычными ножницами, можно выращивать кедры на балконе...
Но это неэффективно однако.

Ведь в программировании нет однозначно единственного решения для более-менее сложных задач.
Всегда решений много.

Ваши попытки решения вами описанной задачи , пока не приблизились к истине даже на пушечный выстрел, уж извините.
---
Я понимаю, и поэтому ищу правильный путь и спрашиваю совета у более опытных и продвинутых в этом вопросе людей
---
Процедура ПослеЗакрытияФормы(Результат, ДополнительныеРеквизиты) Экспорт
так у Вас вряд ли в процедуру вообще зайдет, потому что параметрами должны быть РезультатЗакрытия и ДополнительныеПараметры. Почему-то, если они называются иначе, 1С игнорирует эту процедуру) И если прописать с такими параметрами процедуру, то в результат закрытия у Вас, скорее всего, попадёт как раз созданный элемент справочника) Попробуйте ради интереса и расширения кругозора, если задачу уже решили:D
---
Спасибо, я уже знаю что ничего не зашло с такими названиями параметров. ))) А задачу я решил другим способом, использовав регистр сведений, что конечно более правильно чем справочник)))
---
Хотя если я не распознал ПЯТНИЧНУЮ тему , простите уж... ;-))
Был искренен!
---
(15) Хотя если я не распознал ПЯТНИЧНУЮ тему , простите уж... ;-))
Был искренен!
Я тоже искренен, но вот знаний у меня маловато, я пробую программировать совсем недавно и опыта в этой сфере очень мало.
---
Но вы уже смело оперируете понятиями "Асинхронные вызовы"
Это как-то настораживает!
ПЯТНИЦУ никто не отменял... )))
---
Вы возьмите книгу

Радченко М.Г., Хрусталева Е.Ю.
1С: Предприятие 8.3. Практическое пособие разработчика

Читайте и учитесь не с потолка...
---
Вы знаете у меня все как то странно в этом отношении))) Я сам написал больше двадцати обработок к типовым в некоторых из них используются Асинхронные вызовы, о которых я прочел в том числе здесь на форуме. Я недавно сам сдал Спеца по платформе правда на трояк, но все же сдал))) Радченко у меня лежит на столе, и не просто лежит, я пару раз прошел ее сквозной пример, но наверное нужно еще раз повторить, это было давненько. Но у меня все равно очень мало опыта и большие пробелы в знаниях((( Потому как до последнего времени это было хобби а сейчас я решил сделать это профессией)))
---
Вот теперь я 100% уверен ПЯТНИЦА!!!!!!!!!! ))))))))))))))))))))
На Спеца сдать в качестве ХОББИ - а программировать учусь ... ))))))))))))))))
---
Вот теперь я 100% уверен ПЯТНИЦА!!!!!!!!!! ))))))))))))))))))))
Надо было мне в другой день спросить)))) Я ведь серьезно спрашивал
---
Ну объясните , как можно было решать задачи из Спеца, не представляя разницы выполнения процедур &НаКлиенте и &НаСервере ???
---
Либо вы представляете, но как то странно , своеобразно, неработоспособно...
---
Я более менее представляю как работает &НаКлиенте и &НаСервере. Но наверное есть пробелы))). А по спецу там все просто. Есть форум Чистова там очень много полезного материала. Всего на Спеца 15 билетов по 3 основных задачи Оперативный Учет Бух Учет и Расчеты плюс Бизнес Процессы или Управляемые формы, в разных билетах по разному. Я проработал материал выбрал для себя 15 решений, которые посчитал правильными. Перед этом я получил Профа по Платформе и посетил курсы Белоусова по подготовке к Спецу, поэтому мог уже понимать о чем идет речь))) Эти 15 решений я переделал по требованиям 1 С к сдаче экзамена, а потом тупо прогнал их раз 5 на это у меня ушло почти полгода, так как занимался я учебойв свободное от основной работы время. Когда есть правильное решение, самой большой проблемой было время, даже многие опытные программисты на этом сыпятся, потому как решить то они решат, и возможно даже согласно стандартам к сдаче экзамена, но вот время жесткая штука))) Я для себя понял, что на экзамене нужно просто тупо знать все правильные ответы, а не решать билет по ходу. И все равно уложился с трудом Расчетную задачу я даже не успел проверить и не сделал начисление штрафы за прогулы, которые были дополнительной фишечкой 5 билета и их не было в моих решениях. Поэтому и трояк. Я уже дома решил задачу со штрафами и даже выложил это у Чистова на форуме, чтобы люди пользовались.
---
Всем спасибо за участие. Задачу решил переделав сделав РегистрСведений.Адреса

```1c
    &НаКлиенте
    Процедура ЗаписатьАдрес(Команда)
    ОткрытьФормуМодально("РегистрСведений.Адреса.Форма.ФормаЗаписи");
    Объект.ЮридическийАдрес = ПолучитьНовыйАдрес();
    КонецПроцедуры

    &НаСервере
    Функция ПолучитьНовыйАдрес()

    ЭтотОбъект.Записать();

    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | АдресаСрезПоследних.Организация КАК Организация,
    | АдресаСрезПоследних.ВидАдреса КАК ВидАдреса,
    | АдресаСрезПоследних.Индекс КАК Индекс,
    | АдресаСрезПоследних.Страна КАК Страна,
    | АдресаСрезПоследних.Область КАК Область,
    | АдресаСрезПоследних.НаселенныйПункт КАК НаселенныйПункт,
    | АдресаСрезПоследних.Улица КАК Улица,
    | АдресаСрезПоследних.Дом КАК Дом,
    | АдресаСрезПоследних.Корпус КАК Корпус,
    | АдресаСрезПоследних.Квартира КАК Квартира
    |ИЗ
    | РегистрСведений.Адреса.СрезПоследних(
    | &Дата,
    | Организация = &Организация
    | И ВидАдреса = &ВидАдреса) КАК АдресаСрезПоследних";

    Запрос.УстановитьПараметр("ВидАдреса", Перечисления.ВидыАдресов.Юридический);
    Запрос.УстановитьПараметр("Дата", ТекущаяДата());
    Запрос.УстановитьПараметр("Организация", Объект.Ссылка);

    РезультатЗапроса = Запрос.Выполнить();

    ВДЗ = РезультатЗапроса.Выбрать();

    ВДЗ.Следующий();
    Адрес =" + ВДЗ.Индекс + " " + ВДЗ.Страна + " " + ВДЗ.Область + " г." + ВДЗ.НаселенныйПункт + " ул."
    + " дом" + ВДЗ.Дом + ?(НЕ ВДЗ.Корпус = "," корп." + ВДЗ.Корпус, ") + ?(НЕ ВДЗ.Квартира = ", " кв." + ВДЗ.Квартира, ");

    Возврат Адрес;
    КонецФункции
```