Добавление, изменение контактной информации контрагента
УТ 11.1
Добрый день.
Тем много, обсуждений ещё больше, но никак в море материала не найду подходящее решение.
Заполняю контактную информацию из стороннего источника. На форму документа вывел кнопочку: Заполнить реквизиты по ИНН
В ответ получаю структуру ТЗ2 с данными контрагента.
После нажатия кнопочки "Заполнить реквизиты по ИНН", проверяю контрагента запросом, информация по юр адресу изменилась - вроде все ОК, но на форме в режиме пользователя вижу не изменившиеся значения. После Записи карточки контрагента в запросе снова вижу предыдущий юр.адрес.
Возможно причина в следующем: реквизиты объекта на сервере меняю, но не трогаю реквизиты формы. После записи контрагента реквизиты формы снова записываются в реквизиты объекта.
Как это победить никак не придумаю.
ТЗ2 прикрепил в файл
//////////////////////////////////////////////////////////// ///////////////////////////////////////////////////
Контрагенты Форма Элемента
Добрый день.
Тем много, обсуждений ещё больше, но никак в море материала не найду подходящее решение.
Заполняю контактную информацию из стороннего источника. На форму документа вывел кнопочку: Заполнить реквизиты по ИНН
В ответ получаю структуру ТЗ2 с данными контрагента.
После нажатия кнопочки "Заполнить реквизиты по ИНН", проверяю контрагента запросом, информация по юр адресу изменилась - вроде все ОК, но на форме в режиме пользователя вижу не изменившиеся значения. После Записи карточки контрагента в запросе снова вижу предыдущий юр.адрес.
Возможно причина в следующем: реквизиты объекта на сервере меняю, но не трогаю реквизиты формы. После записи контрагента реквизиты формы снова записываются в реквизиты объекта.
Как это победить никак не придумаю.
ТЗ2 прикрепил в файл
////////////////////////////////////////////////////////////
Контрагенты Форма Элемента
&НаСервере
Процедура КнопкаЗаполнитьРеквизитыПоИНННаСервере()
ТЗ2 = //Получаю выше таблицу значений с адресами;
Если ЭтоЮрЛицо Тогда
Объект.Наименование = ТЗ2.Наименование;
Объект.НаименованиеПолное = ТЗ2.НаименованиеПолное;
Объект.КПП = ТЗ2.КПП;
ЗаполнитьЮридическийАдресНаСервере(ТЗ2.ЮридическийАдрес);
//Обработаем ЮрАдресаКонтрагента на форме
СтруктураДляПоиска = Новый Структура("Вид",Справочники.ВидыКонтактнойИнформации.ЮрАдресКонтрагента);
ТабКонтактнаяИнформация = Объект.КонтактнаяИнформация;
//Получаем список строк соответсвтвующих отбору, и перебором удаляем.
МассивСтрок = ТабКонтактнаяИнформация.НайтиСтроки(СтруктураДляПоиска);
Для каждого Строка Из МассивСтрок Цикл
ТабКонтактнаяИнформация.Удалить(Строка);
КонецЦикла;
Иначе
Объект.Наименование = ТЗ2.Наименование;
Объект.НаименованиеПолное = ТЗ2.НаименованиеПолное;
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ЗаполнитьЮридическийАдресНаСервере(ЮрАдрес)
//Получаем объект документа из реквизита формы
СпрОбъект = РеквизитФормыВЗначение("Объект");
//Вызываем экспортную процедуру из модуля объекта
СпрОбъект.ЗаполнитьЮридическийАдресВМодулеОБъекта(ЮрАдрес);
//Возвращаем объект документа в реквизит формы
ЗначениеВРеквизитФормы(СпрОбъект, "Объект");
КонецФункции
//////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////
Контрагенты Модуль объекта
Процедура ЗаполнитьЮридическийАдресВМодулеОБъекта(ЮрАдрес) Экспорт
СтруктураДляПоиска = Новый Структура("Вид",Справочники.ВидыКонтактнойИнформации.ЮрАдресКонтрагента);
ТабКонтактнаяИнформация = ЭтотОбъект.КонтактнаяИнформация;
//Получаем список строк соответсвтвующих отбору, и перебором удаляем.
МассивСтрок = ТабКонтактнаяИнформация.НайтиСтроки(СтруктураДляПоиска);
Для каждого Строка Из МассивСтрок Цикл
ТабКонтактнаяИнформация.Удалить(Строка);
КонецЦикла;
НоваяСтрока = ЭтотОбъект.КонтактнаяИнформация.Добавить();
//Заполним реквизиты
НоваяСтрока.Вид = Справочники.ВидыКонтактнойИнформации.ЮрАдресКонтрагента;
Новаястрока.Тип = Перечисления.ТипыКонтактнойИнформации.Адрес;
НоваяСтрока.Представление = ЮрАдрес.Представление; //Строковое представление адреса
ЭтотОбъект.Записать();
КонецПроцедуры
ПоказатьПрикрепленные файлы:
![](/upload/forum/upload/577/57740287d94bced07273535043342b79.jpg)
По теме из базы знаний
- Конфигурация "Весовая ред. 3.0" для Платформы 8.3
- 1С:Хлебобулочное и кондитерское производство. Модуль для 1С:ERP и 1С:КА
- 1С:Управление строительной организацией. 1С:ERP Управление строительной организацией 2
- Выбор Адреса контрагента из Контактной информации. Пример работы с "Оповестить о выборе"
- Контактная информация в отчетах на основе Универсального отчета встроенными средствами
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
при открытой форме некоего справочника, когда изменения в него вносятся из другой формы лучше делать так
вариант 1 - после изменений из обработке вызывать ОповеститьОбИзменении(), но может не прокатить
вариант 2 - для внесения изменений из обработки вызвать Оповестить() а в форме справочника подключить событие ОбработкаОповещения(), где вызвать обновление реквизитов формы, этот вариант всегда 100% отрабатывает верно
вариант 1 - после изменений из обработке вызывать ОповеститьОбИзменении(), но может не прокатить
вариант 2 - для внесения изменений из обработки вызвать Оповестить() а в форме справочника подключить событие ОбработкаОповещения(), где вызвать обновление реквизитов формы, этот вариант всегда 100% отрабатывает верно
(3)
Спасибо!!!
Завелось!!!
//////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ///////////////////
//////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ///////////////////
//////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ///////////////////
Визуально всё ОК, поле представление заполнилось.
ОбработкаОповещения
Спасибо!!!
Завелось!!!
////////////////////////////////////////////////////////////
&НаКлиенте
Процедура КнопкаЗаполнитьРеквизитыПоИНН(Команда)
КнопкаЗаполнитьРеквизитыПоИНННаСервере();
Оповестить("ОбновитьНашуФорму",,ЭтаФорма); // Добавил вызов оповещения
КонецПроцедуры
////////////////////////////////////////////////////////////
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если ИмяСобытия = "ОбновитьНашуФорму" Тогда
ЭтаФорма.Прочитать();
КонецЕсли;
КонецПроцедуры
////////////////////////////////////////////////////////////
Визуально всё ОК, поле представление заполнилось.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот