Добавление, изменение контактной информации контрагента

1. applesound 1 04.09.20 18:56 Сейчас в теме
УТ 11.1
Добрый день.
Тем много, обсуждений ещё больше, но никак в море материала не найду подходящее решение.
Заполняю контактную информацию из стороннего источника. На форму документа вывел кнопочку: Заполнить реквизиты по ИНН
В ответ получаю структуру ТЗ2 с данными контрагента.
После нажатия кнопочки "Заполнить реквизиты по ИНН", проверяю контрагента запросом, информация по юр адресу изменилась - вроде все ОК, но на форме в режиме пользователя вижу не изменившиеся значения. После Записи карточки контрагента в запросе снова вижу предыдущий юр.адрес.
Возможно причина в следующем: реквизиты объекта на сервере меняю, но не трогаю реквизиты формы. После записи контрагента реквизиты формы снова записываются в реквизиты объекта.
Как это победить никак не придумаю.
ТЗ2 прикрепил в файл
////////////////////////////////////////////////////////////­///////////////////////////////////////////////////
Контрагенты Форма Элемента
&НаСервере
Процедура КнопкаЗаполнитьРеквизитыПоИНННаСервере()

ТЗ2 = //Получаю выше таблицу значений с адресами;
	Если ЭтоЮрЛицо Тогда
	Объект.Наименование = ТЗ2.Наименование;
	Объект.НаименованиеПолное = ТЗ2.НаименованиеПолное;
	Объект.КПП = ТЗ2.КПП;
	ЗаполнитьЮридическийАдресНаСервере(ТЗ2.ЮридическийАдрес);
	
	//Обработаем ЮрАдресаКонтрагента на форме
	СтруктураДляПоиска  = Новый Структура("Вид",Справочники.ВидыКонтактнойИнформации.ЮрАдресКонтрагента);
	ТабКонтактнаяИнформация = Объект.КонтактнаяИнформация;
	//Получаем список строк соответсвтвующих отбору, и перебором удаляем. 
	МассивСтрок = ТабКонтактнаяИнформация.НайтиСтроки(СтруктураДляПоиска);
	Для каждого Строка Из МассивСтрок Цикл
	ТабКонтактнаяИнформация.Удалить(Строка);
	КонецЦикла;
Иначе
	Объект.Наименование = ТЗ2.Наименование;
	Объект.НаименованиеПолное = ТЗ2.НаименованиеПолное;
	КонецЕсли;
		
КонецПроцедуры



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

Контрагенты  Модуль объекта
Процедура ЗаполнитьЮридическийАдресВМодулеОБъекта(ЮрАдрес) Экспорт
	СтруктураДляПоиска  = Новый Структура("Вид",Справочники.ВидыКонтактнойИнформации.ЮрАдресКонтрагента);
	ТабКонтактнаяИнформация = ЭтотОбъект.КонтактнаяИнформация;
	//Получаем список строк соответсвтвующих отбору, и перебором удаляем. 
	МассивСтрок = ТабКонтактнаяИнформация.НайтиСтроки(СтруктураДляПоиска);
	Для каждого Строка Из МассивСтрок Цикл
		ТабКонтактнаяИнформация.Удалить(Строка);     
	КонецЦикла;		
	
	
	НоваяСтрока = ЭтотОбъект.КонтактнаяИнформация.Добавить();
	//Заполним реквизиты
	НоваяСтрока.Вид = Справочники.ВидыКонтактнойИнформации.ЮрАдресКонтрагента;
	Новаястрока.Тип = Перечисления.ТипыКонтактнойИнформации.Адрес;
	НоваяСтрока.Представление = ЮрАдрес.Представление; //Строковое представление адреса	
	ЭтотОбъект.Записать();
КонецПроцедуры
Показать
Прикрепленные файлы:
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
4. Xershi 1501 05.09.20 11:06 Сейчас в теме
(1) поменять представление было достаточно в УТ 10.
Сейчас представление это лишь удобная форма для программиста, адрес хранится в структуре, подымайте типовые модули записи адреса! Там все сложнее чем у вас.
2. starjevschik 04.09.20 19:33 Сейчас в теме
ну может на форму добавить что-нибудь вроде ОбновитьОтображениеДанных()?
3. VictorRGB2 14 04.09.20 19:50 Сейчас в теме
при открытой форме некоего справочника, когда изменения в него вносятся из другой формы лучше делать так
вариант 1 - после изменений из обработке вызывать ОповеститьОбИзменении(), но может не прокатить
вариант 2 - для внесения изменений из обработки вызвать Оповестить() а в форме справочника подключить событие ОбработкаОповещения(), где вызвать обновление реквизитов формы, этот вариант всегда 100% отрабатывает верно
applesound; +1 Ответить
5. applesound 1 07.09.20 11:53 Сейчас в теме
(3)
ОбработкаОповещения

Спасибо!!!
Завелось!!!
////////////////////////////////////////////////////////////­////////////////////////////////////////////////////////////­///////////////////
&НаКлиенте
Процедура КнопкаЗаполнитьРеквизитыПоИНН(Команда)
	КнопкаЗаполнитьРеквизитыПоИНННаСервере();
    Оповестить("ОбновитьНашуФорму",,ЭтаФорма); // Добавил вызов оповещения
КонецПроцедуры


////////////////////////////////////////////////////////////­////////////////////////////////////////////////////////////­///////////////////

&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
	
	Если ИмяСобытия = "ОбновитьНашуФорму" Тогда
		ЭтаФорма.Прочитать();
	КонецЕсли;
	
КонецПроцедуры

////////////////////////////////////////////////////////////­////////////////////////////////////////////////////////////­///////////////////

Визуально всё ОК, поле представление заполнилось.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот