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

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

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

 

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

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

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

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

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

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

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

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

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

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

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

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

 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

 

 

Добрый день. Есть так же вопрос по поле ввода, можете посказать!?УПП1.3. Есть обработка групповой рассылки актов сверки по контрагентам. Фиксируются данные в электронном письме в реквизите "СтатусПисьма" (тип ПеречислениеСсылка.СтатусыПисем)

У документа Электронное письмо, есть реквизит ПредметКонтакта с составным типом Строка, ДокументСсылка.АктСверкиВзаиморасчетов. 

Есть документ актсверкивзаиморасчетов с реквизитом ЭлектрПис (тип ДокументСсылка.ЭлектронноеПисьмо).

В ФормеСписка акта сверки добавляю колонку связанную с реквизитом документа ЭлектрПис. Как мне заполнить данную колонку (полеввода), чтобы в ней,если по данному акту была отправка показывался в колонке этот документ(ссылка на электронное письмо).

ФормаСписка обычная или управляемая?

Обычная. Есть вот такой запрос, но мне кажется он неверный.

Запрос = Новый Запрос;
Запрос.Текст = 
"ВЫБРАТЬ
| ЭлектронноеПисьмо.Ссылка КАК Ссылка1
|ИЗ
| Документ.АктСверкиВзаиморасчетов КАК АктСверкиВзаиморасчетов
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЭлектронноеПисьмо КАК ЭлектронноеПисьмо
| ПО АктСверкиВзаиморасчетов.ЭлектрПис = ЭлектронноеПисьмо.ПредметКонтакта.ЭлектрПис.Ссылка";
 
РезультатЗапроса = Запрос.Выполнить();
 
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
 
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
 
ЭлементыФормы.ДокументСписок.Значение = Запрос.Выполнить().Выгрузить();
КонецЦикла;
 

Если у вас ссылка на ЭлектронноеПисьмо является реквизитом документа Акт сверки, то никакие дополнительные действия не нужны.

Выделяете табличное поле на форме списка, нажимаете на кнопку "Размещение данных" в панели инструментов, устанавливаете флажок у нужного реквизита в списке. Будет добавлена колонка, автоматически связанная с данными выбранного реквизита.

Тоесть никаких дополнительных запросов писать не нужно оно само все свяжет и будет выводить нужную информацию!?

Не получается. Если письмо отправленно то в полеввода списка документов в колонку должна вставляться ссылка на электронное письмо, но ничего не происходит. Нужно как-то объснить программе, что если документ записан заполнять эту колонку, но как, я сообразить не могу((Попробовала несколько разных сопсобов, но ни один не сработал(((

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

При отправке письма соответствующий реквизит в документе Акт сверки заполняется?