Программное изменение контактной информации

1. Teut_Vlad 182 07.06.16 15:42 Сейчас в теме
Добрый день
Интересует знания, как программно изменить контактную информацию в справочнике Контрагенты в Бухгалтерии предприятия 3.0?
Известно:
В отличии от 2.0 в 3.0 контактная информация храниться в табличной часть справочника(2.0 в регистрах сведений).
Проблема:
Программно очищаю табл часть справочника, после добавляю строки, однако при открытии карточки Контрагента виден только юридический адрес. Телефон факт адрес и эл почта не отображаются.

Для тренировки использовал обработку, см. вложение.

&НаСервере
Процедура ЗаполнитьКонтактнуюИнфомрацияНаСервере()
	Контрагент1 = Контрагент.ПолучитьОбъект();
	Контрагент1.КонтактнаяИнформация.Очистить();

	// Попытка	Стр = Контрагент1.КонтактнаяИнформация.Получить(0);
	
		  Стр1 = Контрагент1.КонтактнаяИнформация.Добавить();
			 

	Стр1.Тип = Перечисления.ТипыКонтактнойИнформации.Адрес;
	Стр1.Вид = Справочники.ВидыКонтактнойИнформации.ФактАдресКонтрагента;
	//Стр1.НомерТелефона = "Адрес 2";
	//Стр1.НомерТелефонаБезКодов = "Адрес 2 без кодов";
	Стр1.Представление =  "Адрес 2 Представление";
	Стр1.Страна = Справочники.СтраныМира.Россия;
	Стр1.Регион = "Москва г";
	 //Стр1.ЗначенияПолей = '<КонтактнаяИнформация xmlns="http://www.v8.1c.ru/ssl/contactinfo" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Представление="Москва г, Донская ул, дом № 67, корпус 1"><Комментарий/><Состав xsi:type="Адрес" Страна="РОССИЯ"><Состав xsi:type="АдресРФ"><СубъектРФ>Москва г</СубъектРФ><СвРайМО><Район/></СвРайМО><Город/><НаселПункт/­><Улица>Донская ул</Улица><ДопАдрЭл><Номер Тип="1050" Значение="1"/></ДопАдрЭл><ДопАдрЭл><Номер Тип="1010" Значение="67"/></ДопАдрЭл><ДопАдрЭл ТипАдрЭл="10100000" Значение=""/></Состав></Состав></КонтактнаяИнформация>';
	//Стр1.АдресЭП = " Адрес 2 АдресЭП";
	//Стр1.ДоменноеИмяСервера = " Адрес 2 ДоменноеИмяСервера";
	Стр1.ВидДляСписка = Справочники.ВидыКонтактнойИнформации.ФактАдресКонтрагента;

	  Стр = Контрагент1.КонтактнаяИнформация.Добавить();
	//КонецПопытки;		 
	
	Стр.Тип = Перечисления.ТипыКонтактнойИнформации.Адрес;
	Стр.Вид = Справочники.ВидыКонтактнойИнформации.ЮрАдресКонтрагента;
	Стр.Представление = "Юр Адрес";
	Стр.Страна = Справочники.СтраныМира.Россия;
	Стр.ВидДляСписка = Справочники.ВидыКонтактнойИнформации.ЮрАдресКонтрагента;
	Стр.Регион = "Москва г";
	
	Стр2 = Контрагент1.КонтактнаяИнформация.Добавить();
	Стр2.Тип = Перечисления.ТипыКонтактнойИнформации.Телефон;
	Стр2.Вид = Справочники.ВидыКонтактнойИнформации.ТелефонКонтрагента;
	Стр2.Представление = "8 8 8 8  ";
	Стр2.ВидДляСписка = Справочники.ВидыКонтактнойИнформации.ТелефонКонтрагента;
	
	Стр3 = Контрагент1.КонтактнаяИнформация.Добавить();
	Стр3.Тип = Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты;
	Стр3.Вид = Справочники.ВидыКонтактнойИнформации.ТелефонКонтрагента;
	Стр3.Представление = "8 8 8 8  ";
	Стр3.ВидДляСписка = Справочники.ВидыКонтактнойИнформации.ТелефонКонтрагента;
	//Стр2.Регион = "Москва г";
	////КонецЦикла;
	// Попытка	Стр1 = Контрагент1.КонтактнаяИнформация.Получить(1);
	//КонецЦикла;
	//Стр2 = Контрагент1.КонтактнаяИнформация.Вставить(3);
	//Стр2.Тип = Перечисления.ТипыКонтактнойИнформации.Телефон;
	//Стр2.Вид = Справочники.ВидыКонтактнойИнформации.ФактАдресКонтрагента;
	//Стр2.Представление = "телнеф";
	//Стр2.Страна = Справочники.СтраныМира.Россия;
	//Стр2.ВидДляСписка = Справочники.ВидыКонтактнойИнформации.ТелефонКонтрагента;
	
	
	Контрагент1.Записать();
	
КонецПроцедуры

&НаКлиенте
Процедура ЗаполнитьКонтактнуюИнфомрация(Команда)
	ЗаполнитьКонтактнуюИнфомрацияНаСервере();
КонецПроцедуры
Показать
vakham; Mechanik21; ko-marina100; natarezn; +4 Ответить
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
7. Voffffka 29 10.08.16 23:54 Сейчас в теме
(1) darkmessiahan, Есть такая процедура ПереносКИПриОбновленииС20(), в ней описано как заполнять табличные части.
http://infostart.ru/public/540817/
Если не разберетесь могу более подробно место указать)
scanner1980; +1 Ответить
9. natarezn 14.10.16 15:14 Сейчас в теме
(1) darkmessiahan, скачала ! буду смотреть
15. natarezn 14.10.16 16:53 Сейчас в теме
(1) darkmessiahan, страна проставилась сама
2. nni93 07.06.16 15:52 Сейчас в теме
заполнять нужно ЗначенияПолей в виде xml-схемы

http://forum.aeroion.ru/topic779.html
Teut_Vlad; +1 Ответить
3. Teut_Vlad 182 07.06.16 17:19 Сейчас в теме
(2) nni93, слишком сложно, пойду лучше уборщиком работать.
Valerianich; Kovzun; Алексей_mir2mb; vakham; mrChOP93; Mechanik21; starik-2005; PLAstic; +8 Ответить
4. Xershi 1483 07.06.16 17:22 Сейчас в теме
(3) darkmessiahan, отличное решение=))
Teut_Vlad; +1 Ответить
5. Teut_Vlad 182 07.06.16 18:07 Сейчас в теме
(2) nni93, не помогло чет, только юр адрес запонляется

Представление = ",446254,САМАРСКАЯ ОБЛ,БЕЗЕНЧУКСКИЙ Р-Н,,БЕЗЕНЧУК ПГТ,ТИМИРЯЗЕВА УЛ,26,,37";

ВидКИ = Справочники.ВидыКонтактнойИнформации.ЮрАдресКонтрагента; //для другого справочника подставить соответствующее значение
Пока Лев(Представление, 1) = "," Цикл Представление = Сред(Представление, 2); КонецЦикла;
МногострочныйТекст = СтрЗаменить(Представление, ",", Символы.ПС);
Представление = "";
Для А = 1 По СтрЧислоСтрок(МногострочныйТекст) Цикл 
    Подстрока = СокрЛП(СтрПолучитьСтроку(МногострочныйТекст, А));
    Если ЗначениеЗаполнено(Подстрока) Тогда Представление = Представление + Подстрока + ", "; КонецЕсли;
КонецЦикла; //Для А = 1 По
Представление = Лев(Представление, СтрДлина(Представление) - 2);
ОбъектXDTOКИ = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияВXML("", Представление, Перечисления.ТипыКонтактнойИнформации.Адрес);
УправлениеКонтактнойИнформацией.ЗаписатьКонтактнуюИнформацию(Контрагент1, ОбъектXDTOКИ, 
                ВидКИ, Перечисления.ТипыКонтактнойИнформации.Адрес);
				
				ВидКИ = Справочники.ВидыКонтактнойИнформации.ФактАдресКонтрагента; //для другого справочника подставить соответствующее значение
Пока Лев(Представление, 1) = "," Цикл Представление = Сред(Представление, 2); КонецЦикла;
МногострочныйТекст = СтрЗаменить(Представление, ",", Символы.ПС);
Представление = "";
Для А = 1 По СтрЧислоСтрок(МногострочныйТекст) Цикл 
    Подстрока = СокрЛП(СтрПолучитьСтроку(МногострочныйТекст, А));
    Если ЗначениеЗаполнено(Подстрока) Тогда Представление = Представление + Подстрока + ", "; КонецЕсли;
КонецЦикла; //Для А = 1 По
Представление = Лев(Представление, СтрДлина(Представление) - 2);
ОбъектXDTOКИ = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияВXML("", Представление, Перечисления.ТипыКонтактнойИнформации.Адрес);
УправлениеКонтактнойИнформацией.ЗаписатьКонтактнуюИнформацию(Контрагент1, ОбъектXDTOКИ, 
                ВидКИ, Перечисления.ТипыКонтактнойИнформации.Адрес);
				
				Представление = "8 800 455 55 55";
								ВидКИ = Справочники.ВидыКонтактнойИнформации.ТелефонКонтрагента; //для другого справочника подставить соответствующее значение
Пока Лев(Представление, 1) = "," Цикл Представление = Сред(Представление, 2); КонецЦикла;
МногострочныйТекст = СтрЗаменить(Представление, ",", Символы.ПС);
Представление = "";
Для А = 1 По СтрЧислоСтрок(МногострочныйТекст) Цикл 
    Подстрока = СокрЛП(СтрПолучитьСтроку(МногострочныйТекст, А));
    Если ЗначениеЗаполнено(Подстрока) Тогда Представление = Представление + Подстрока + ", "; КонецЕсли;
КонецЦикла; //Для А = 1 По
Представление = Лев(Представление, СтрДлина(Представление) - 2);
ОбъектXDTOКИ = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияВXML("", Представление, Перечисления.ТипыКонтактнойИнформации.Телефон);
УправлениеКонтактнойИнформацией.ЗаписатьКонтактнуюИнформацию(Контрагент1, ОбъектXDTOКИ, 
                ВидКИ, Перечисления.ТипыКонтактнойИнформации.Телефон);
	
	Контрагент1.Записать();
Показать
alyonchik; +1 Ответить
6. Xershi 1483 07.06.16 21:31 Сейчас в теме
(5) darkmessiahan, да возьми отладчик да пройдись когда руками заполняешь. Все станет понятно.
10. natarezn 14.10.16 15:15 Сейчас в теме
(5) darkmessiahan, что-то много кода
8. roman77 303 11.08.16 12:47 Сейчас в теме
Не надо изобретать велосипед. В самой конфигурации уже есть все необходимое.

смотри УправлениеКонтактнойИнформацией.ЗаполнитьКонтактнуюИнформациюОбъекта
12. natarezn 14.10.16 15:18 Сейчас в теме
11. natarezn 14.10.16 15:16 Сейчас в теме
КонтактнаяИнформация = Новый ТаблицаЗначений;
	КонтактнаяИнформация.Колонки.Добавить("Приемник");
	КонтактнаяИнформация.Колонки.Добавить("ВидКИ");
	КонтактнаяИнформация.Колонки.Добавить("СтруктураКИ");
	КонтактнаяИнформация.Колонки.Добавить("КлючСтроки");
Если ЭтоЮрЛицо Тогда
		
		Если РеквизитыКонтрагента.ЮридическийАдрес <> Неопределено Тогда
			СтрокаКИ = КонтактнаяИнформация.Добавить();
			СтрокаКИ.Приемник = КонтрагентОбъект;
			СтрокаКИ.ВидКИ = Справочники.ВидыКонтактнойИнформации.ЮрАдресКонтрагента;
			СтрокаКИ.СтруктураКИ = РеквизитыКонтрагента.ЮридическийАдрес.КонтактнаяИнформация;
			
			СтрокаКИ = КонтактнаяИнформация.Добавить();
			СтрокаКИ.Приемник = КонтрагентОбъект;
			СтрокаКИ.ВидКИ = Справочники.ВидыКонтактнойИнформации.ФактАдресКонтрагента;
			СтрокаКИ.СтруктураКИ = РеквизитыКонтрагента.ЮридическийАдрес.КонтактнаяИнформация;
			
			СтрокаКИ = КонтактнаяИнформация.Добавить();
			СтрокаКИ.Приемник = КонтрагентОбъект;
			СтрокаКИ.ВидКИ = Справочники.ВидыКонтактнойИнформации.ПочтовыйАдресКонтрагента;
			СтрокаКИ.СтруктураКИ = РеквизитыКонтрагента.ЮридическийАдрес.КонтактнаяИнформация;
		КонецЕсли;
		
		Если РеквизитыКонтрагента.Телефон <> Неопределено Тогда
			СтрокаКИ = КонтактнаяИнформация.Добавить();
			СтрокаКИ.Приемник = КонтрагентОбъект;
			СтрокаКИ.ВидКИ = Справочники.ВидыКонтактнойИнформации.ТелефонКонтрагента;
			СтрокаКИ.СтруктураКИ = РеквизитыКонтрагента.Телефон.КонтактнаяИнформация;
		КонецЕсли;
		
		Если КонтактнаяИнформация.Количество() > 0 Тогда
			УправлениеКонтактнойИнформацией.ЗаполнитьКонтактнуюИнформациюОбъектов(КонтактнаяИнформация);
		КонецЕсли;
конецесли;
Показать
13. natarezn 14.10.16 16:23 Сейчас в теме
такое работает, поправьте если что
Если сокрлп(ЮрАдрес) <> "" Тогда 
СтрокаКИ = об.КонтактнаяИнформация.Добавить(); 
//СтрокаКИ.Приемник = КонтрагентОбъект; 
СтрокаКИ.Вид = Справочники.ВидыКонтактнойИнформации.ЮрАдресКонтрагента; 
СтрокаКИ.ТИП = Перечисления.ТипыКонтактнойИнформации.Адрес;//РеквизитыКонтрагента.ЮридическийАдрес.КонтактнаяИнформация; 
СтрокаКИ.Представление =сокрлп(ЮрАдрес) ; 
об.Записать();
КонецЕсли; 
Если сокрлп(ФактАдрес) <> "" Тогда
СтрокаКИ = об.КонтактнаяИнформация.Добавить(); 
//СтрокаКИ.Приемник = КонтрагентОбъект; 
СтрокаКИ.ТИП = Перечисления.ТипыКонтактнойИнформации.Адрес; 
СтрокаКИ.Вид=Справочники.ВидыКонтактнойИнформации.ФактАдресКонтрагента;//РеквизитыКонтрагента.ЮридическийАдрес.КонтактнаяИнформация; 
СтрокаКИ.Представление =сокрлп(ФактАдрес) ; 
об.Записать();

Конецесли;
Если сокрлп(ЮрАдрес) <> "" Тогда
СтрокаКИ = об.КонтактнаяИнформация.Добавить(); 
//СтрокаКИ.Приемник = КонтрагентОбъект; 
СтрокаКИ.Вид = Справочники.ВидыКонтактнойИнформации.ПочтовыйАдресКонтрагента; 
СтрокаКИ.тип=Перечисления.ТипыКонтактнойИнформации.Адрес;//РеквизитыКонтрагента.ЮридическийАдрес.КонтактнаяИнформация; 
СтрокаКИ.Представление =сокрлп(ЮрАдрес) ; 
об.Записать();

КонецЕсли; 

Если сокрлп(Телефоны)<> "" Тогда 
СтрокаКИ = об.КонтактнаяИнформация.Добавить(); 
//СтрокаКИ.Приемник = КонтрагентОбъект; 
СтрокаКИ.Вид = Справочники.ВидыКонтактнойИнформации.ТелефонКонтрагента; 
СтрокаКИ.Тип=Перечисления.ТипыКонтактнойИнформации.Телефон;//РеквизитыКонтрагента.Телефон.КонтактнаяИнформация; 
СтрокаКИ.номерТелефона = сокрлп(Телефоны);
КонецЕсли; 

Если рез.КонтактнаяИнформация.Количество() > 0 Тогда 
//УправлениеКонтактнойИнформацией.ЗаполнитьКонтактнуюИнформациюОбъектов(СтрокаКИ,текущаядата());
КонецЕсли; 
об.Записать();
Показать
user1114234; +1 Ответить
14. natarezn 14.10.16 16:41 Сейчас в теме
все таки должно отработать СтрокаКИ.Представление =сокрлп(Телефоны) ; в последнем абзаце
16. a512 22.01.17 13:57 Сейчас в теме
(14) Да, работает. Спасибо, Наталья!

Если сокрлп(Телефон)<> "" Тогда
     	  СтрокаКИ = Спр.КонтактнаяИнформация.Добавить();
	  СтрокаКИ.Вид = Справочники.ВидыКонтактнойИнформации.ТелефонКонтрагента;
	  СтрокаКИ.Тип=Перечисления.ТипыКонтактнойИнформации.Телефон;
	  СтрокаКИ.Представление = сокрлп(Телефон);
	  Спр.Записать();
	КонецЕсли;
17. darkinitr0 34 18.05.17 23:16 Сейчас в теме
(16)

никогда не используйте выше указанный самописный код!

надо функции БСП для работы с КИ.
Пример:

ВидКИ = Справочники.ВидыКонтактнойИнформации.ТелефонМобильныйКонтактныеЛица;
ТипКИ = ВидКИ.Тип;
                
ОбъектXDTOКИ = УправлениеКонтактнойИнформациейСлужебный.КонтактнаяИнформацияXDTOПоПредставлению("+79154445533", ТипКИ);
ЗначенияПолей = УправлениеКонтактнойИнформациейСлужебный.КонтактнаяИнформацияXDTOВXML(ОбъектXDTOКИ);
УправлениеКонтактнойИнформацией.ЗаписатьКонтактнуюИнформацию(НовоеКЛ, ЗначенияПолей, ВидКИ, ТипКИ);


на вопрос "почему?" попытаюсь кратко описать свою проблему, что бы другие не наступали на мои грабли :)

сделал я для одного моего клиента загрузку контрагента и его КИ из XML файла в одну конфигурацию, написанную на БСП.
Всю КИ я заполнял сам - просто добавлял строку в ТЧ "КонтактнаяИнформация", заполнял представление.
Вроде было все норм. Открываешь контрагента - все отображается, все отлично.

Дальше начинаются какие то чудеса с очисткой КИ.
Т.е. контрагента загрузили и через некоторое время выясняется что у него КИ вся очищена (кроме почему то юр.адреса).
Включаю механизм логирования изменений в контрагенте (функционал БСП).
Вычисляем пользователя после которого КИ очищается. Пресуем его - не сознается. Говорит, что ничего не делал, ну поменял одну галку, но КИ не чистил. Мы в стопоре. Была КИ, пользователь записывает, КИ исчезает (кроме юр.адреса).
В результате многочисленных часов отладки, попыток выяснил: что если открыть такого контрагента и не переключаясь на вкладку с КИ - его записать, то все чиститься! Тут конечно фишка в том, что я до этого обычно на вкладку КИ переключался, а тогда при записи все сохраняется.

В целом проблема заключается, в том, что в ТЧ надо еще заполнить поле "ЗначениеПолей".

Так что делаю вывод: используйте ТИПОВОЙ функционал, если не хотите потом такие глюки ловить и убеждать клиента что это у него лыжи не катят )))
vladir; LordKim; yojeeg; Den_Zenit; mrChOP93; go_margaret; milov.aleksey; user1114234; ko-marina100; kolosof; GeraZ; Yava21Rus; Rokky78; Synoecium; shoy; Gendelf; YanTsys; lemz; Efimoff; headMade; andreykaq; evergrim; victor_goodwill; tyasytova; 98764321; HIVvich; +26 Ответить
18. HIVvich 19.05.17 14:21 Сейчас в теме
(17) Спасибо большое, а то я тоже это мучаю сейчас. У меня причем прикол такой, все отрабатывает, и по отладчику смотрю, что адрес вроде проходит (добавляю почтовый адрес), а в справочнике у контрагента он не появился, что за глюк..
maksa2005; +1 Ответить
20. Spektr 999 21.05.17 17:31 Сейчас в теме
(17) этим кодом телефон загрузил без проблем. А с адресом проблема. Загружает как адрес в свободной форме. как загрузить адрес по представлению?
22. Gendelf 09.07.18 00:07 Сейчас в теме
(20) вы как нибудь решили вопрос с заполнением адреса или емейл с помощью "ЗначениеПолей" ?
ko-marina100; +1 Ответить
21. ildary 21 09.10.17 16:08 Сейчас в теме
(17) спасибо за красивое решение задачи. Надо только уточнить, что процедура УправлениеКонтактнойИнформацией.ЗаписатьКонтактнуюИнформацию() всегда добавляет информацию и если мы не добавляем, а изменяем поле - надо предварительно позаботиться об удалении старой строки.
Алексей_mir2mb; milov.aleksey; +2 Ответить
23. shaykhelov 07.02.19 16:51 Сейчас в теме
(21) тогда лучше использовать процедуру УправлениеКонтактнойИнформацией.ДобавитьКонтактнуюИнформацию(СсылкаИлиОбъект, ЗначениеИлиПредставление, ВидКонтактнойИнформации, Дата = Неопределено, Замещать = Истина) с параметром замещения
Lllypuk; Anna97; andy23; Altez; milov.aleksey; +5 Ответить
24. join2us 18 28.03.19 00:00 Сейчас в теме
(17)
В целом проблема заключается, в том, что в ТЧ надо еще заполнить поле "ЗначениеПолей".


Ага, а в частности - в том, что-бы еще формировать корректный хмл для заполнения КИ, вместо простого заполнения Тип, Вида, Представления.

У клиента в УНФ 1.6 частенько "пропадала" КИ при записи Контров, благодаря Вашим наводкам слегка модифицировали типовой ф-л БСП в процедуре добавления КИ.

На скрине видно, почему не канает запись в КИ без ЗначенияПолей...
26. user623096_irinaadd 12.05.20 17:26 Сейчас в теме
(17)
идКИ = Справочники.ВидыКонтактнойИнформации.ТелефонМобильныйКонтактныеЛица;
Тип


Спасибо тебе добрый человек
Алексей_mir2mb; +1 Ответить
19. HIVvich 19.05.17 15:08 Сейчас в теме
Все разобралась, все работает.
25. quick 583 12.12.19 17:54 Сейчас в теме
Проклял все на свете пока разбирался с записью адреса.
Модуль УправлениеКонтактнойИнформацией выглядит как помойка функций, от вида которой одна боль.

        Набор = РегистрыСведений.КонтактнаяИнформация.СоздатьНаборЗаписей();
	УправлениеКонтактнойИнформацией.ПрочитатьКонтактнуюИнформацию(Набор, ЭлементыФормы.ТаблицаКонтрагенты.ТекущиеДанные.Контрагент);
	
	ВидКИ = Справочники.ВидыКонтактнойИнформации.ЮрАдресКонтрагента;
	ЗаписЮрАдрес = УправлениеКонтактнойИнформацией.ПолучитьЗаписьВНаборе(Набор, ВидКИ, ВидКИ.Тип);
	
	ВидКИ = Справочники.ВидыКонтактнойИнформации.ФактАдресКонтрагента;
	ЗаписФактАдрес = УправлениеКонтактнойИнформацией.ПолучитьЗаписьВНаборе(Набор, ВидКИ, ВидКИ.Тип);
	
	Адрес = ЭлементыФормы.ТаблицаКонтрагенты.ТекущиеДанные.Адрес;
	УправлениеКонтактнойИнформацией.ЗаполнитьПоляВЗаписиПоПредставлению(ЗаписЮрАдрес, Адрес);
	УправлениеКонтактнойИнформацией.ЗаполнитьПоляВЗаписиПоПредставлению(ЗаписФактАдрес, Адрес);
	//СтруктураАдреса = УправлениеКонтактнойИнформацией.ПолучитьСтруктуруАдресаИзСтроки(Адрес);
	//ПредставлениеАдреса = УправлениеКонтактнойИнформацией.ПолучитьПредставлениеАдресаПоСтруктуре(СтруктураАдреса);
	Если Вопрос("Записать?", РежимДиалогаВопрос.ДаНет) = КодВозвратаДиалога.Да Тогда
		Набор.Записать(Истина);
	КонецЕсли;
Показать
mdzen; Алексей_mir2mb; Shang; ko-marina100; +4 Ответить
27. milov.aleksey 398 10.06.20 12:54 Сейчас в теме
Тоже долго разбирался, пока не пришёл сюда! Спасибо всем, что вы есть.
Через БСП надо, конечно. Но написано сумбурно.
Например,
УправлениеКонтактнойИнформацией.ДобавитьКонтактнуюИнформацию(ФизическоеЛицоСсылка, ЗначенияПолей, ВидКИ, ТекущаяДата(), Истина);

Если передаешь ссылку, то обновляет КИ и перезаписывает Владельца(физика или контрагента). А если ФизлицоОбъект, то только обновляет КИ, а объект надо записывать самому. Работает!
 тзТелефоныФизлиц = Объект.тзФизическиеЛица_КИ_Формат.Выгрузить();
	ВидКИ = Объект.ВидТелефонаФизическогоЛица;
    ТипКИ = ВидКИ.Тип;     //ТипКИ =  Перечисления.ТипыКонтактнойИнформации.Телефон;
	Для каждого СтрокаФизика Из тзТелефоныФизлиц Цикл //по физикам
		Представление        = СтрокаФизика.Телефон;
		ФизическоеЛицоСсылка = СтрокаФизика.ФизическоеЛицо;
		Попытка
			//{БСП	
			ОбъектXDTOКИ = УправлениеКонтактнойИнформациейСлужебный.КонтактнаяИнформацияXDTOПоПредставлению(Представление, ТипКИ);
			ЗначенияПолей = УправлениеКонтактнойИнформациейСлужебный.КонтактнаяИнформацияXDTOВXML(ОбъектXDTOКИ); //необходима, чтобы не затиралась КИ при перезаписи
			// Добавляет контактную информацию к объекту по представлению или JSON.
			//
			// Параметры:
			//  СсылкаИлиОбъект - СправочникСсылка, ДокументСсылка, СправочникОбъект, ДокументОбъект - ссылка или объект владельца
			//                                            содержащего контактную информацию. Для ссылки после добавления контактной
			//                                            информации владелец будет записан. Если передан объект, то контактная
			//                                            информация будет добавлена без записи. Для сохранения изменений объект
			//                                            необходимо будет записать отдельно.
			//  ЗначениеИлиПредставление - Строка - представление, JSON или XML соответствующее XDTO-пакету КонтактнаяИнформация
			//                                      или Адрес.
			//  ВидКонтактнойИнформации  - СправочникСсылка.ВидыКонтактнойИнформации - Вид добавляемой контактной информации.
			//  Дата                     - Дата    - дата, с которой будет действовать запись контактной информации.
			//                                       Требуется для контактной информации, у которой хранится история изменений.
			//                                       Если значение не указано, то принимается текущая дата сеанса.
			//  Замещать                 - Булево - если Истина(по умолчанию), то будет заменена вся контактная информация по
			//                                      переданному виду контактной информации.
			//                                      Если Ложь, то запись будет добавлена. Если вид контактной информации не разрешает
			//                                      ввод нескольких значений, а контактная информация объекта уже содержит запись,
			//                                      то запись не будет добавлена.
			УправлениеКонтактнойИнформацией.ДобавитьКонтактнуюИнформацию(ФизическоеЛицоСсылка, ЗначенияПолей, ВидКИ, ТекущаяДата(), Истина);
			//}БСП
			Сообщить("Обновлен телефон "+Представление+" "+Строка(ФизическоеЛицоСсылка));
		Исключение 
			Сообщить("Не удалось обновить телефон "+Представление+" "+Строка(ФизическоеЛицоСсылка)+"!");
		КонецПопытки;
Показать
mnb-next; user1608224; Marka_; ko-marina100; +4 Ответить
28. Kitsunedie 19.04.22 15:33 Сейчас в теме
(27) Даже после таких манипуляций номер телефона не отображается в форме. Представление, значение полей, все заполнено. Код скатал 1 в 1 .
29. user1097143 26.01.23 17:18 Сейчас в теме
(28) Похожая проблема была, в зависимости от настроек ведения партнеров и контрагентов не отображался телефон ( не стояла галка "Независимо вести партнеров и контрагентов").

Заполнил телефон у партнера, в контрагенте стал отображаться номер телефона ( в форме контрагента он брался из партнера)
Оставьте свое сообщение

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