Как программно изменить E-Mail сотрудника в ЗУП 3.1?

1. frkbvfnjh 787 23.03.23 12:49 Сейчас в теме
Всем доброго времени! Подскажите как правильно изменить или установить E-Mail сотрудника в ЗУП 3.1 программно? Знаю что просто присвоить строку нельзя, нужно вроде как через метод УправлениеКонтактнойИнформацией.ОписаниеНовойКонтактнойИнформации() заполнить данные, но вот как правильно потом записать эти данные в табличную часть контактной информации? Какие методы правильно использовать? Вроде как в полях Значение и ЗначенияПолей должны быть данные то ли в формате JSON, то ли XML, но как из преобразовать правильно к этому формату?
По теме из базы знаний
Ответы
Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. Zevzm 23.03.23 13:54 Сейчас в теме
(1)Попробуйте найти использование процедуры УправлениеКонтактнойИнформациейСлужебный.УстановитьКонтактнуюИнформациюОбъектаДляСсылки(СсылкаИлиОбъект, КонтактнаяИнформация, ОбъектМетаданных, Замещать);
и посмотреть в отладке, что там в контактной информации при записи ФЛ.
3. talib 24.03.23 04:58 Сейчас в теме
ФизЛицо = Справочники.ФизическиеЛица.НайтиПоНаименованию(Выборка.Наименование);
ТЗ = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияОбъекта(ФизЛицо, , ТекущаяДата(), Ложь);
НайденнаяСтрока = ТЗ.Найти(Справочники.ВидыКонтактнойИнформации.НайтиПоНаименованию("Рабочая почта"), "Вид");
Если НайденнаяСтрока = Неопределено Тогда
	Иначе
	НайденнаяСтрокаПочта = НайденнаяСтрока.Представление;
КонецЕсли;

ВидКИ = Справочники.ВидыКонтактнойИнформации.НайтиПоНаименованию("Рабочая почта");	
ТипКИ = Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты;
ПредставлениеПочта        = Почта;
Если НайденнаяСтрокаПочта <> ПредставлениеПочта Тогда
	Попытка
		ОбъектXDTOКИ = УправлениеКонтактнойИнформациейЛокализация.КонтактнаяИнформацияXDTOПоПредставлению(ПредставлениеПочта, ТипКИ);
		ЗначенияПолей = УправлениеКонтактнойИнформациейЛокализация.КонтактнаяИнформацияXDTOВXML(ОбъектXDTOКИ); //необходима, чтобы не затиралась КИ при перезаписи				
		УправлениеКонтактнойИнформацией.ДобавитьКонтактнуюИнформацию(ФизЛицо, ЗначенияПолей, ВидКИ, ТекущаяДата(), Истина);
					ЗарегистрироватьИзменения(ФизЛицо)
	Исключение 
	КонецПопытки;
КонецЕсли;
Показать
4. frkbvfnjh 787 24.03.23 08:33 Сейчас в теме
(3) Ого, круто, спасибо! А метод ЗарегистрироватьИзменения(ФизЛицо), я так понимаю, вызывается что бы на объект на регистрацию поставить, если обмен настроен?
5. talib 24.03.23 12:51 Сейчас в теме
(4) Прошу прощения, выдернул из обработки импорта данных из AD.
Да, дальше идет регистрация.
Сама процедура ЗарегистрироватьИзменения в вашем случае не нужна.

Процедура ЗарегистрироватьИзменения(ФизЛицоСсылка)
	
	СсылкаНаУзел = ПланыОбмена.МиграцияПриложений.НайтиПоКоду("ДО"); 
	
	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	Сотрудники.Ссылка КАК Ссылка
		|ИЗ
		|	Справочник.Сотрудники КАК Сотрудники
		|ГДЕ
		|	Сотрудники.ФизическоеЛицо = &ФизическоеЛицо";
	
	Запрос.УстановитьПараметр("ФизическоеЛицо", ФизЛицоСсылка);
	
	РезультатЗапроса = Запрос.Выполнить();
	Выборка = РезультатЗапроса.Выбрать();
	
	Пока Выборка.Следующий() Цикл
		ПланыОбмена.ЗарегистрироватьИзменения(СсылкаНаУзел, Выборка.Ссылка); 		
	КонецЦикла;
	
КонецПроцедуры
Показать
6. Vladimir-R 167 24.03.23 17:44 Сейчас в теме
	
ЕмайлХМЛ = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияВXML(СтрокаТаблицы.АдресЭП,СтрокаТаблицы.АдресЭП,Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты);
ЕмайлJSON = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияВJSON(ЕмайлХМЛ);
УправлениеКонтактнойИнформацией.ДобавитьКонтактнуюИнформацию(СтрокаТаблицы.ссылка, ЕмайлJSON, Справочники.ВидыКонтактнойИнформации.EMailФизическиеЛица, ТекущаяДата(), Истина);
Оставьте свое сообщение

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