Выбор склада в адрес доставки в электронную транспортную накладную БП3
Клиенту нужно копировать адрес доставки груза из склада, выбираемого пользователем в электронной транспортной накладной.
Я отладил ввод адреса в форме ЭТН, он попадает в процедуру ОбменСГИСЭПДКлиент.ВводАдреса_Завершение:
Процедура ВводАдреса_Завершение(Результат, ДополнительныеПараметры) Экспорт ТекущиеДанные = Неопределено; ДополнительныеПараметры.Свойство("ТекущиеДанные", ТекущиеДанные); Если Результат <> Неопределено Тогда ОбменСГИСЭПДКлиентПереопределяемый.ПриЗавершенииВводаАдреса(Результат, ДополнительныеПараметры); ОбменСГИСЭПДКлиентСервер.ЗаполнитьРеквизитыАдреса(ДополнительныеПараметры.Форма, Результат, ДополнительныеПараметры.ИмяЭлемента, ТекущиеДанные); ДополнительныеПараметры.Форма.Модифицированность = Истина; ВладелецАдреса = Неопределено; Если ДополнительныеПараметры.Свойство("ВладелецАдреса", ВладелецАдреса) Тогда СохранитьАдресДляПодбора(ВладелецАдреса, Результат); КонецЕсли; КонецЕсли; КонецПроцедуры
Тут нам интересен вызов ОбменСГИСЭПДКлиентСервер.ЗаполнитьРеквизитыАдреса. Поставим точку останова и посмотрим значения параметров.
Результат имеет вид контактной информации:

ДополнительныеПараметры.ИмяЭлемента = ПредставлениеТитулГрузоотправителяГрузополучательАдресДоставки
ТекущиеДанные = Неопределено
Я попробовал получить контактную информацию склада так:
КИ = УправлениеКонтактнойИнформациейБП.КонтактнаяИнформацияНаДату(Склад, ПредопределенноеЗначение("Справочник.ВидыКонтактнойИнформации.АдресСклада"));
В итоге получил контактную информацию в таком же виде, как ее возвращал редактор адресов:

Осталось только скопировать ее в поле ввода адреса места доставки груза.
Сделал кнопку «Склад» в форме:

При выборе склада он копируется из склада в адрес места доставки груза.
Проверил — после записи документа новый адрес появляется в печатной форме ЭТН.
Весь код расширения формы ЭлектроннаяТранспортнаяНакладная.ОсновнаяФорма выглядит так:
&НаСервере Процедура дЭТН_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка) Привязка = Элементы.ГруппаРеквизитаТитулГрузоотправителяГрузополучательАдресДоставки; ИмяКоманды = "дЭТН_Склад"; Команда = ЭтаФорма.Команды.Добавить(ИмяКоманды); Команда.Заголовок = "Склад"; Команда.Действие = ИмяКоманды; //Команда.Картинка = БиблиотекаКартинок.ИмяКартинки; Команда.Отображение = ОтображениеКнопки.КартинкаИТекст; КнопкаФормы = ЭтаФорма.Элементы.Вставить(ИмяКоманды, Тип("КнопкаФормы"), Привязка); КнопкаФормы.ИмяКоманды = ИмяКоманды; КонецПроцедуры &НаКлиенте Процедура дЭТН_Склад(Команда) Экспорт ПараметрыФормы = Новый Структура("РежимВыбора",Истина); ДП = Новый Структура(); ОбработкаВыбора = Новый ОписаниеОповещения("дЭТН_Склад_Выбор", ЭтотОбъект, ДП); ОткрытьФорму("Справочник.Склады.ФормаВыбора", ПараметрыФормы, ЭтотОбъект,,,,ОбработкаВыбора); КонецПроцедуры &НаКлиенте Процедура дЭТН_Склад_Выбор(Склад, ДП) Экспорт Если Склад = Неопределено Тогда ///Если ничего не выбрать - вернется пустое значение (Неопределено) Возврат; КонецЕсли; дЭТН_СкопироватьКонтактнуюИнформациюСклада(Склад); КонецПроцедуры Процедура дЭТН_СкопироватьКонтактнуюИнформациюСклада(Склад) Экспорт КИ = УправлениеКонтактнойИнформациейБП.КонтактнаяИнформацияНаДату(Склад, ПредопределенноеЗначение("Справочник.ВидыКонтактнойИнформации.АдресСклада")); ОбменСГИСЭПДКлиентСервер.ЗаполнитьРеквизитыАдреса(ЭтаФорма, КИ, "ПредставлениеТитулГрузоотправителяГрузополучательАдресДоставки", Неопределено); КонецПроцедуры
Среда: БП КОРП 3.0.203.24. Объем: 1 час
