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

1. Teut_Vlad 179 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 179 07.06.16 17:19 Сейчас в теме
(2) nni93, слишком сложно, пойду лучше уборщиком работать.
Valerianich; Kovzun; Алексей_mir2mb; vakham; mrChOP93; Mechanik21; starik-2005; PLAstic; +8 Ответить
4. Xershi 1474 07.06.16 17:22 Сейчас в теме
(3) darkmessiahan, отличное решение=))
Teut_Vlad; +1 Ответить
5. Teut_Vlad 179 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 1474 07.06.16 21:31 Сейчас в теме
(5) darkmessiahan, да возьми отладчик да пройдись когда руками заполняешь. Все станет понятно.
10. natarezn 14.10.16 15:15 Сейчас в теме
(5) darkmessiahan, что-то много кода
8. roman77 297 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 998 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 15 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) Похожая проблема была, в зависимости от настроек ведения партнеров и контрагентов не отображался телефон ( не стояла галка "Независимо вести партнеров и контрагентов").

Заполнил телефон у партнера, в контрагенте стал отображаться номер телефона ( в форме контрагента он брался из партнера)
Оставьте свое сообщение
Вакансии
1С аналитик
Москва
зарплата от 210 000 руб.
Полный день

Руководитель направления 1С
Москва
зарплата от 350 000 руб.
Полный день

1С Программист
Москва
зарплата от 180 000 руб.
Полный день

Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)