Выбор склада в адрес доставки в электронную транспортную накладную БП3

Клиенту нужно копировать адрес доставки груза из склада, выбираемого пользователем в электронной транспортной накладной.

Я отладил ввод адреса в форме ЭТН, он попадает в процедуру ОбменСГИСЭПДКлиент.ВводАдреса_Завершение:

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

Тут нам интересен вызов ОбменСГИСЭПДКлиентСервер.ЗаполнитьРеквизитыАдреса. Поставим точку останова и посмотрим значения параметров.

Результат имеет вид контактной информации:

ДополнительныеПараметры.ИмяЭлемента = ПредставлениеТитулГрузоотправителяГрузополучательАдресДоставки

ТекущиеДанные = Неопределено

Я попробовал получить контактную информацию склада так:

КИ = УправлениеКонтактнойИнформациейБП.КонтактнаяИнформацияНаДату(Склад, ПредопределенноеЗначение("Справочник.ВидыКонтактнойИнформации.АдресСклада"));

В итоге получил контактную информацию в таком же виде, как ее возвращал редактор адресов:

Осталось только скопировать ее в поле ввода адреса места доставки груза.

Сделал кнопку «Склад» в форме:

При выборе склада он копируется из склада в адрес места доставки груза.

Проверил — после записи документа новый адрес появляется в печатной форме ЭТН.

Весь код расширения формы ЭлектроннаяТранспортнаяНакладная.ОсновнаяФорма выглядит так:


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


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

&НаКлиенте
Процедура дЭТН_Склад_Выбор(Склад, ДП) Экспорт   
	
    Если Склад = Неопределено Тогда  ///Если ничего не выбрать - вернется пустое значение (Неопределено)
        Возврат;
	КонецЕсли;
	
	дЭТН_СкопироватьКонтактнуюИнформациюСклада(Склад);

КонецПроцедуры


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

Среда: БП КОРП 3.0.203.24. Объем: 1 час

image_pdfimage_print

fixin

Программирую на 1С с 1999 года. В 1С просто Гений. В 2020 году ушел из офиса на вольные хлеба фриланса. Принимаю заказы.

Вам может также понравиться...

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *