Отражение значения реквизита справочника в документе в ПолеВвода

Версия для печатиPDF-версия
Здравствуйте.
Не нашел в поискавиках как реализовать задумку.
 
Необходимо в заказе покупателя отразить реквизит из справочника контрагента.
В контрагенте создается реквизит, например, ХарактеристикаКотрагента.
Необходимо в ФормеДокумента заказа покупателя в ПолеВвода Характеристика1 автоматически вывести значение реквизита ХарактеристикаКотрагента справочника Контрагенты.
(естественно по текущему контрагенту)

Подскажите, пожалуйста, как грамотно это сделать?

 

Просто выводить значение реквизита или с возможностью изменения его в форме документа (с соответствующим изменением в справочнике Контрагенты)?

В идеале и менять, но, хотябы, выводить...

1. Добавляете на форму документа новое поле ввода (допустим, ХарактеристикаКонтрагента) с соответствующим типом данных (как у реквизита в справочнике Контрагенты).

2. Создаёте в модуле формы документа процедуру для вывода характеристики контрагента:

Процедура ВывестиХарактеристикуКонтрагента()
	ХарактеристикаКонтрагента = Контрагент.ХарактеристикаКонтрагента ;
КонецПроцедуры

3. Добавляете вызов этой процедуры в процедуры ПриОткрытии() и КонтрагентПриИзменении().

4. Для изменения реквизита контрагента из формы документа создаёте обработчик события ПриИзменении у добавленного поля ввода с таким кодом:

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

Но я бы не советовал изменять реквизиты одного объекта из формы другого объекта.

Огромное спасибо.

Все прекрасно заработало.

И запись тоже.

 

Лишь два вопроса:

1.  Чем чревата запись в справочник из формы документа?

2.  Подскажите, как оформлять текст на этом форуме при выводе кода?

Чтобы код выглядел как в модуле 1С.

Все замечательно работает.
Хотя заметил.
Если открыть Форму Элемента Контрагента из формы Заказа покупателя, изменить значения  ХарактеристикаКонтрагента (записать) и вернуться в заказ покупателя, то коммент отсутствует...
И появляется лишь после повторного открытия Документа.
Возможно ли, обновлять отдельно взятые элементы?
Вопрос не обязательной, скорее для общего развития.
Хотя и создание более интерактивной формы - тоже интересно.
 

1. Могут возникать ошибки при записи элемента справочника, если была открыта форма этого элемента.

2. Про выделение кода можно посмотреть здесь.

Нужно использовать оповещения.

1. В форме элемента справочника в процедуру ПослеЗаписи нужно добавить строку:

	Оповестить("ИзменениеКонтрагента",, Ссылка);

2. В форме документа нужно добавить обработчик события ОбработкаОповещения с таким кодом:

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

Все отлично работает.

Огромное спасибо.