Работаем с контактной информацией в конфигурациях на БСП

22.03.22

Разработка - БСП (Библиотека стандартных подсистем)

В статье приведены базовые работы с контактной информацией в конфигурациях, включающих в себя БСП.

 

Введение

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

Итак, перехожу к разделу получения контактной информации объектов с помощью БСП:

 

Получение контактной информации объектов

Чтобы получить полную контактную информацию контрагента, организации, партнера можно воспользоваться функцией:

КонтактнаяИнформацияОбъекта(СсылкаИлиОбъект, ВидКонтактнойИнформации = Неопределено, Дата = Неопределено, ТолькоПредставление = Истина) Экспорт

Пример использования:

&НаСервере
Процедура ПолучитьНаСервере(ВыбСсылка)
	
	// Возвращаем таблицу значений (параметр ложь) с полной контактной информации объекта (контрагент, организация...)
	КонтИнформация = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияОбъекта(ВыбСсылка,"",ТекущаяДата(),Ложь);
	
КонецПроцедуры

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

В следующем примере вернем фактический адрес контрагента строкой:

&НаСервере
Процедура ПолучитьНаСервере(ВыбСсылка)
	
	// Возвращаем строку (параметр истина) с фактическим адресом объекта (контрагент, организация...)
	КонтИнформация = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияОбъекта(ВыбСсылка,Справочники.ВидыКонтактнойИнформации.ФактАдресКонтрагента,ТекущаяДата(),Истина);
	
КонецПроцедуры

Так же существует схожая функция, производящая получение контактной информации для нескольких ссылок или объектов одновременно:

Функция КонтактнаяИнформацияОбъектов(СсылкиИлиОбъекты, Знач ТипыКонтактнойИнформации = Неопределено, Знач ВидыКонтактнойИнформации = Неопределено, Дата = Неопределено) Экспорт

 

В данной функции ТипыКонтактнойИнформации и ВидыКонтактнойИнформации - массивы, содержащие необходимые типы и виды контактной информации. Функция возвращает таблицу значений по "фильтру" входящих параметров.

Пример использования такой:

&НаСервере
Процедура ПолучитьНаСервере()
	
 МассивСсылок = Новый Массив;
 МассивСсылок.Добавить(Справочники.Контрагенты.НайтиПоРеквизиту("ИНН","0461111101"));
 МассивСсылок.Добавить(Справочники.Контрагенты.НайтиПоРеквизиту("ИНН","0012123456"));
 
 МассивВидов = Новый Массив;
 МассивВидов.Добавить(Справочники.ВидыКонтактнойИнформации.ФактАдресКонтрагента);
 МассивВидов.Добавить(Справочники.ВидыКонтактнойИнформации.ЮрАдресКонтрагента);
 
 МассивТипов = Новый Массив;
 МассивТипов.Добавить(Перечисления.ТипыКонтактнойИнформации.Адрес);
 
 КонтИнформация = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияОбъектов(МассивСсылок,МассивТипов,МассивВидов,ТекущаяДата());
	
КонецПроцедуры

Вышеперечисленные функции можно использовать в связке с "индивидуальными" функциями конфигураций по получению информации об организации и контрагентах. Частично об "индивидуальных" функциях я изложил материал вот здесь.

Теперь, давайте посмотрим немного глубже в результаты вышеуказанных функций. Строка возвращаемой таблицы значений выглядит вот так:

Рис.1. Строка таблицы значений контактной информации.

 

Обратим внимание на колонку Значение - это строка в формате json, выглядит она вот так:

Рис.2. Формат json в колонке Значение.

 

Сейчас, я хочу преобразовать эту json-строку в структуру для дальнейшего использования. Сделаю это стандартными методами БСП, воспользуюсь функцией:

Функция СтрокуJSONВСтруктуру(Значение) Экспорт

Доработанный код будет выглядеть вот так:

&НаСервере
Процедура ПолучитьНаСервере()
	
 МассивСсылок = Новый Массив;
 МассивСсылок.Добавить(Справочники.Контрагенты.НайтиПоРеквизиту("ИНН","0461111101"));
 МассивСсылок.Добавить(Справочники.Контрагенты.НайтиПоРеквизиту("ИНН","0012123456"));
 
 МассивВидов = Новый Массив;
 МассивВидов.Добавить(Справочники.ВидыКонтактнойИнформации.ФактАдресКонтрагента);
 МассивВидов.Добавить(Справочники.ВидыКонтактнойИнформации.ЮрАдресКонтрагента);
 
 МассивТипов = Новый Массив;
 МассивТипов.Добавить(Перечисления.ТипыКонтактнойИнформации.Адрес);
 
 КонтИнформация = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияОбъектов(МассивСсылок,МассивТипов,МассивВидов,ТекущаяДата());
 
 //Передаем строку json
 ААА = УправлениеКонтактнойИнформациейСлужебный.СтрокуJSONВСтруктуру(КонтИнформация[0].Значение);
 
КонецПроцедуры

Переменная ААА - содержит структуру по входящей строке json. Выглядит это вот так:

Рис.3. Преобразованная  json в структуру.

 

Здесь, я ничего не придумываю, использую только типовые функции и процедуры БСП и получаю требуемую контактную информацию "по полям" в удобном виде.

Пожалуй, с базовыми вариантами получения контактной информации мы разобрались - можем смело применять. Теперь, перейдем к разделу преобразование контактной информации объектов в разные форматы.

 

Преобразование контактной информации объектов

В данном разделе рассмотрим несколько полезных функций, позволяющих стандартно конвертировать контактную информацию в разные форматы - xml, json.

Сначала рассмотрим функцию, которая позволяет получить контактную информацию в формате xml

Функция КонтактнаяИнформацияВXML(Знач ЗначенияПолей, Знач Представление = "", Знач ОжидаемыйВид = Неопределено) Экспорт

В качестве входящего параметра ЗначенияПолей, я обычно передаю структуру по заполненным ключам. Представление я не заполняю, а в качестве ожидаемого вида - перечисление с типом контактной информации.

Рассмотрим пример работы с данной функцией, предварительно доработав предыдущий пример:

&НаСервере
Процедура ПолучитьНаСервере()
	
 МассивСсылок = Новый Массив;
 МассивСсылок.Добавить(Справочники.Контрагенты.НайтиПоРеквизиту("ИНН","0461111101"));
 МассивСсылок.Добавить(Справочники.Контрагенты.НайтиПоРеквизиту("ИНН","0012123456"));
 
 МассивВидов = Новый Массив;
 МассивВидов.Добавить(Справочники.ВидыКонтактнойИнформации.ФактАдресКонтрагента);
 МассивВидов.Добавить(Справочники.ВидыКонтактнойИнформации.ЮрАдресКонтрагента);
 
 МассивТипов = Новый Массив;
 МассивТипов.Добавить(Перечисления.ТипыКонтактнойИнформации.Адрес);
 
 
 КонтИнформация = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияОбъектов(МассивСсылок,МассивТипов,МассивВидов,ТекущаяДата());
  
 АдресСтруктура = Новый Структура;
    
 АдресСтруктура.Вставить("Представление",  КонтИнформация[0].Представление);
 АдресСтруктура.Вставить("Город",  "Москва");
 АдресСтруктура.Вставить("Улица",  "Арбатская пл");
 
 //119019, Москва г, Москва, Арбатская пл, дом № 1, корпус 2

 ККК = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияВXML(АдресСтруктура,КонтИнформация[0].Представление, Перечисления.ТипыКонтактнойИнформации.Адрес);
				 
КонецПроцедуры

В качестве результата в переменную ККК возвращается XML-структура, согласно схемы пакетов КонтактнаяИнформация или Адрес.

Рис.4. Преобразованная структура в XML-строку.

 

Еще один пример с телефоном:

&НаСервере
Процедура ПолучитьНаСервере()
	
 	ТелефонСтруктура = Новый Структура;
 
	ТелефонСтруктура.Вставить("Представление",  "+7 (123) 456-78-90");
	ТелефонСтруктура.Вставить("Комментарий",  "тестовый номер");
	ТелефонСтруктура.Вставить("КодСтраны",     "7");
	ТелефонСтруктура.Вставить("КодГорода",     "123");
	ТелефонСтруктура.Вставить("НомерТелефона", "456-78-90");
			
	ТелефонXML 	=  УправлениеКонтактнойИнформацией.КонтактнаяИнформацияВXML(ТелефонСтруктура,"", Перечисления.ТипыКонтактнойИнформации.Телефон);
				 
 КонецПроцедуры

В переменную ТелефонXML возвращается XML строка вот такого содержания:

Рис.5. XML-строка с типом "Номер телефона".

 

Преобразование структуры "телефона" идет по такой типовой схеме:

Преобразователь.ЗагрузитьТаблицуСтилейXSLИзСтроки("
		|<xsl:stylesheet version=""1.0"" xmlns:xsl=""http://www.w3.org/1999/XSL/Transform""
		|  xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance""
		|  xmlns:tns=""http://v8.1c.ru/8.1/data/core""
		|  xmlns=""http://www.v8.1c.ru/ssl/contactinfo"" 
		|>
		|<xsl:output method=""xml"" omit-xml-declaration=""yes"" indent=""yes"" encoding=""utf-8""/>
		|  <xsl:template match=""/"">
		|
		|    <xsl:element name=""КонтактнаяИнформация"">
		|
		|      <xsl:attribute name=""Представление"">
		|        <xsl:value-of select=""tns:Structure/tns:Property[@name='Представление']/tns:Value/text()""/>
		|      </xsl:attribute> 
		|      <xsl:element name=""Комментарий"">
		|        <xsl:value-of select=""tns:Structure/tns:Property[@name='Комментарий']/tns:Value/text()""/>
		|      </xsl:element>
		|      <xsl:element name=""Состав"">
		|        <xsl:attribute name=""xsi:type"">" + ИмяXDTOТипа + "</xsl:attribute>
		|
		|        <xsl:attribute name=""КодСтраны"">
		|          <xsl:value-of select=""tns:Structure/tns:Property[@name='КодСтраны']/tns:Value/text()""/>
		|        </xsl:attribute> 
		|        <xsl:attribute name=""КодГорода"">
		|          <xsl:value-of select=""tns:Structure/tns:Property[@name='КодГорода']/tns:Value/text()""/>
		|        </xsl:attribute> 
		|        <xsl:attribute name=""Номер"">
		|          <xsl:value-of select=""tns:Structure/tns:Property[@name='НомерТелефона']/tns:Value/text()""/>
		|        </xsl:attribute> 
		|        <xsl:attribute name=""Добавочный"">
		|          <xsl:value-of select=""tns:Structure/tns:Property[@name='Добавочный']/tns:Value/text()""/>
		|        </xsl:attribute> 
		|
		|      </xsl:element>
		|    </xsl:element>
		|
		|  </xsl:template>
		|</xsl:stylesheet>
		|");

Теперь, преобразуем полученную строку XML в строку JSON, доработаем код процедуры:

&НаСервере
Процедура ПолучитьНаСервере()
	
 	ТелефонСтруктура = Новый Структура;
 
	ТелефонСтруктура.Вставить("Представление",  "+7 (123) 456-78-90");
	ТелефонСтруктура.Вставить("Комментарий",  "тестовый номер");
		
	ТелефонСтруктура.Вставить("КодСтраны",     "7");
	ТелефонСтруктура.Вставить("КодГорода",     "123");
	ТелефонСтруктура.Вставить("НомерТелефона", "456-78-90");
			
	ТелефонXML 	=  УправлениеКонтактнойИнформацией.КонтактнаяИнформацияВXML(ТелефонСтруктура,"", Перечисления.ТипыКонтактнойИнформации.Телефон);
	
	ТелефонJSON = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияВJSON(ТелефонXML);
				 
КонецПроцедуры

Полученный ТелефонJSON  такой:

Рис.6. JSON-строка с типом "Номер телефона".

 

Его так же можно преобразовать в структуру с помощью вышеуказанной функции

Функция СтрокуJSONВСтруктуру(Значение) Экспорт

Так, базовые вещи с преобразованием контактной информации я описал. Теперь, переходим к разделу записи контактной информации объектов.

 

Запись контактной информации объектов

В данном разделе я рассмотрю базовую процедуру добавления контактной информации по ссылке

Процедура ДобавитьКонтактнуюИнформацию(СсылкаИлиОбъект, ЗначениеИлиПредставление, ВидКонтактнойИнформации, Дата = Неопределено, Замещать = Истина) Экспорт

Доработаем наш пример:

&НаСервере
Процедура ПолучитьНаСервере(ВыбСсылка)
	 
 	ТелефонСтруктура = Новый Структура;
 
	ТелефонСтруктура.Вставить("Представление",  "+7 (123) 456-78-95");
	ТелефонСтруктура.Вставить("Комментарий",  "тестовый номер 2");
		
	ТелефонСтруктура.Вставить("КодСтраны",     "7");
	ТелефонСтруктура.Вставить("КодГорода",     "123");
	ТелефонСтруктура.Вставить("НомерТелефона", "456-78-95");
			
	ТелефонXML 	=  УправлениеКонтактнойИнформацией.КонтактнаяИнформацияВXML(ТелефонСтруктура,"", Перечисления.ТипыКонтактнойИнформации.Телефон);
	
	ТелефонJSON = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияВJSON(ТелефонXML);

	УправлениеКонтактнойИнформацией.ДобавитьКонтактнуюИнформацию(ВыбСсылка, ТелефонJSON, Справочники.ВидыКонтактнойИнформации.ТелефонКонтрагента, ТекущаяДата(), Ложь);
				 
КонецПроцедуры

Данным кодом мы добавляем нужный нам телефон (Истина - замещает, Ложь - добавляет второй телефон). ТелефонJSON - ранее сформированная нами строка-json. Выглядит это вот так:

Рис.7. Результат добавления "Номера телефона" в карточку контрагента с помощью возможностей БСП.

 

В данном примере номер телефона "красиво разложен" по полям. Хорошо, переходим к заключению.

 

Заключение

В данной статье, я постарался обозначить основные правила и методы работы с контактной информацией в рамках библиотеки стандартных подсистем конфигурации. Я описал чтение, преобразование и запись контактной информации объектов.

Надеюсь, что данная информация будем вам полезна, применение данных стандартных методов позволит вам экономить ваше время на разработку ваших решений.

Примеры данной статьи я реализовывал на Платформе 1с 8.3.17.1549, конфигурации Розница 2.3.5 с включенной БСП 3.1.2.457.

Если вам интересен мой практический подход и информация, которую вы сможете реально использовать, если у вас есть желание, чтобы данный комплекс статей наполнялся практическими материалы для программистов - я не откажусь от поддержки как данной статьи, так и всего комплекса статей в целом.

Так же вы можете подписаться на мой телеграмм канал https://t.me/quazareline

 

Всем спасибо за прочтение, до новых встреч!

 

Предыдущие материалы

Так же, я прошу посмотреть мои предыдущие статьи, посвященные базовым возможностям типовых конфигураций:

Типовые методы конфигурации "Зарплата и управление персоналом", которые пригодятся каждому ЗУП программисту и не только

Полезные встроенные функции для работы с печатными формами и не только на УТ 11.4 и БП 3.0 (сравнение)

Возможности работы со строками при помощи БСП, которые должен знать каждый программист

 

чтение получение запись контактная информация БСП

См. также

БСП (Библиотека стандартных подсистем) Программист Платформа 1С v8.3 Бесплатно (free)

В статье описан алгоритм для включения документа или справочника в систему БСП. Будет полезно программистам 1С, начинающим работать с БСП.

24.10.2024    1078    PROSTO-1C    0    

12

БСП (Библиотека стандартных подсистем) Работа с интерфейсом Программист Платформа 1С v8.3 Бесплатно (free)

В материале описан универсальный механизм работы с добавленными элементами на общую форму «ФормаОтчета». Думаю, облегчит работу многим разработчикам.

08.10.2024    977    PROSTO-1C    4    

10

БСП (Библиотека стандартных подсистем) Программист Стажер Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

В статье рассмотрим пошаговую инструкцию создания дополнительного отчета с фоновым формированием результата.

04.10.2024    1827    MadRave    11    

23

БСП (Библиотека стандартных подсистем) Программист Стажер Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Пример отслеживания прогресса фонового выполнения дополнительной обработки с использованием программного интерфейса длительных операций БСП.

10.09.2024    1815    MadRave    1    

17

БСП (Библиотека стандартных подсистем) Программист Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

А что, если долгожданная реализация Паузы в 1С смутно напоминает старую, проверенную? А?!

06.09.2024    1253    n_mezentsev    10    

8

БСП (Библиотека стандартных подсистем) Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Добавим дополнительные свойства в новый документ средствами БСП

02.09.2024    4103    John_d    10    

52

БСП (Библиотека стандартных подсистем) Программист Платформа 1С v8.3 Бесплатно (free)

Всё больше организаций выбирает для серверов под 1С операционные системы Linux. Одним из отличий систем Windows и Linux является отсутствие COM объектов, которые зачастую использовались для формирования печатных форм офисных документов (Word). Конечно, можно выполнять печать и на клиенте, но есть риск импортозамещения. В работе у меня случались проблемы с зависанием процесса Word, поэтому я не люблю его использовать.

29.07.2024    5353    PROSTO-1C    12    

52
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. a.gorbachev 16.09.20 17:01 Сейчас в теме
Не понятно для кого данная статья была вообще написана?
Статья выглядит так, будто новичок зашел в общий модуль "УправлениеКонтактнойИнформацией", скопировал описание функций и процедур программного интерфейса и протестировал их.
Мне кажется программисту достаточно указать общий модуль, далее там и так всё понятно, описание функций очень подробное.
Таким же успехом можно написать статью "Работаем с дополнительными реквизитами и свойствами", открыть общий модуль "УправлениеСвойствами" и радоваться чтением доп. свойства объекта одной строчкой.
Stannis777; stall; ixijixi; redtram; bocharovki; crosby; baracuda; Xershi; +8 8 Ответить
15. Xershi 1555 15.07.21 22:57 Сейчас в теме
(1) зашел, посмотрел. Мусор.
Нужно было на клиенте заполнить КИ на форме.
Как итог просто посмотрел как это делает кнопка заполнить по ИНН и сделал также.
user5300; +1 Ответить
2. Fominro 19.09.20 07:23 Сейчас в теме
Зато структурировано и подойдет в качестве "шпаргалки".
user1982459; igrned; grig_nv; Progerok; Korolev; Waleinfo; p_kuzmichev; Dozkni; rpgshnik; +9 Ответить
3. klaus38 16.10.20 22:24 Сейчас в теме
4. quazare 3800 17.10.20 10:45 Сейчас в теме
(3) спасибо, так же можете ознакомиться с другими возможностями БСП, которые я описываю в своих публикациях
5. rule6 24.11.20 10:49 Сейчас в теме
(1)
там и так всё понятно


Новички тоже это читают. Помогло.
6. vacony 30.12.20 21:48 Сейчас в теме
При добавлении своего вида контактной информации (например рост ) - строка поиска

КонтИнформация = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияОбъекта(ВыбСсылка,Справочники.ВидыКонтактнойИнформации.МОЙВИДИНФОРМАЦИИ_РОСТ,ТекущаяДата(),Истина);


разве будет работать ? )
7. vacony 30.12.20 21:59 Сейчас в теме
Отвечу сам - Справочники.ВидыКонтактнойИнформации.НАйтиПоНаименованию("МОЙВИДИНФОРМАЦИИ_РОСТ")
8. demetrius2003 06.01.21 16:02 Сейчас в теме
Господи! В сердце щемит от ностальгии! Ребята! А помните как в 7.7 можно было просто записать +79059991234 в реквизит и оно работало! Никаких XML файлов внутри реквизитов! Никаких лишних телодвижений! И никаких баз по 15Гб!
d.zhukov; user1037537; armeec; user1982459; user2044357; baranchikov; slige; Miket78; aka Любитель XML; darshi; alexstav; allexx; imarok; nico2; user622095_admin; user1646593; pisarevEV; tdml; ixijixi; Yury1001; grig_nv; shu_vol; p_kuzmichev; gucci76; Tolpinski; Svasily; user1526087; Kaval88; RBS; Поручик; quazare; +31 Ответить
20. vvh74 18.11.21 07:58 Сейчас в теме
(8) А до этого можно было записать +79059991234 в *.txt и никаких тебе реквизитов! И весил файл с тысячью клиентов 100 килобайт!
30. fatman78 20 19.12.22 19:07 Сейчас в теме
(20) А до этого можно было записать телефон +79059991234 в блокнотик и никаких тебе компьютеров! Весил блокнотик с тысячью клиентов несколько сотен грамм!
Yakud3a; prog1c_vl; ixijixi; user1646593; +4 Ответить
9. opus70 74 18.02.21 10:41 Сейчас в теме
(8) совершенно верно абсолютно не нужная тяжелая и не поворотливая зараза
а потом еще говорят ваша 1с работает медленно конечно будет медленно если куда не посмотри все сделанно для того чтоб дать работу программистам а не людям кто пользуется программой
baranchikov; pisarevEV; Svasily; user1035416; yaroslav_29; RBS; Nik_Vit; +7 Ответить
10. user1035416 23.06.21 14:03 Сейчас в теме
Спасибо от чайников! А не дополните ли все это доставанием контактных лиц контрагента, плз.
31. ixijixi 1913 10.04.23 14:12 Сейчас в теме
(10)
УправлениеКонтактнойИнформацией.КонтактнаяИнформацияОбъектов(КонтактныеЛица, ТипКонтактнойИнформации, ВидКонтактнойИнформации, Дата)
11. user1035416 23.06.21 14:11 Сейчас в теме
В 1С в сети ищу примеры того что мне нужно и ни разу не видел повторений. Это хорошо или плохо?
12. quazare 3800 23.06.21 14:16 Сейчас в теме
(10) Будет еще отдельная статья по контактной информации
pyrkin_vanya; +1 Ответить
13. user1035416 23.06.21 15:55 Сейчас в теме
(12) На 1С перешли недавно с другой устаревшей программы (не буду называть), так там в объектной модели есть готовые свойства и методы доставания практически любых нужных данных для документов и отчетов. А тут целый веер способов доставания. В частности интересует вопрос разделения функций и взаимодействие клиента и сервера. Это отдельная грустная песня. Например: можно ли из функции, выполняемой на сервере вернуть клиенту коллекцию или массив данных? Передать туда-сюда ссылку на объект точно нельзя.
19. HAMAZ 7 26.10.21 09:19 Сейчас в теме
(13)
Передать туда-сюда ссылку на объект точно нельзя
как это нельзя? ссылка вполне себе передается, объект нельзя
14. Bodrechkom 05.07.21 15:37 Сейчас в теме
Делаю так ничего не работает, не подскажете пожалуйста почему ? 1с Документооборот 8 ПРОФ, редакция 2.1 (2.1.22.8)

//вид контактной информации (адрес партнера, адрес контрагента, телефон партнера и т.д.)
			 ВидКИ = Справочники.ВидыКонтактнойИнформации.ЮридическийАдресКонтрагента;
			 //тип контактной информации (Адрес, Телефон, ЭлектроннаяПочта)
			 ТипКИ = ВидКИ.Тип;
			 
			 //получение объекта XDTO по представлению контактной информации
			 ОбъектXDTOКИ = УправлениеКонтактнойИнформациейСлужебный.КонтактнаяИнформацияXDTOПоПредставлению("" + стр.Значение, ТипКИ);
			 ЗначенияПолей =
			 //преобразование объекта XDTO в xml
			 УправлениеКонтактнойИнформациейСлужебный.КонтактнаяИнформацияXDTOВXML(ОбъектXDTOКИ);
			 //запись контактной информации в табличную часть объекта
			 //ПартнерОбъект - тип СправочникОбъект.ИмяСправочника
			 УправлениеКонтактнойИнформацией.ЗаписатьКонтактнуюИнформацию(Объект, ЗначенияПолей, ВидКИ, ТипКИ);
Показать
16. echo77 1906 24.08.21 14:23 Сейчас в теме
(0) Дополните статью, пожалуйста - обратное преобразование из строки XML в структуру
17. baracuda 2 08.10.21 19:46 Сейчас в теме
Странно у меня почему то не работает

Телефон = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияОбъекта(Пациент,Справочники.ВидыКонтактнойИнформации.ТелефонПациента,,Истина);
18. baracuda 2 08.10.21 19:52 Сейчас в теме
(17) опытным путем выяснил, что первым параметром передавать нужно не ссылку на объект, а сам объект.


Пациент =  СсылкаПрием.Пациент.ПолучитьОбъект();
	Телефон = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияОбъекта(Пациент, Справочники.ВидыКонтактнойИнформации.ТелефонПациента, ,Истина);
21. Поручик 4692 27.12.21 12:57 Сейчас в теме
(18) Зачем опытным. В модуль глянуть никак было?
// Параметры:
//  СсылкаИлиОбъект - ОпределяемыйТип.ВладелецКонтактнойИнформации
//                  - СправочникОбъект
//                  - ДокументОбъект - ссылка или объект-владелец контактной информации (организация,
//                                      контрагент, партнер и т.д.).
Функция КонтактнаяИнформацияОбъекта(СсылкаИлиОбъект, ВидИлиТипКонтактнойИнформации = Неопределено, Дата = Неопределено, ТолькоПредставление = Истина) Экспорт
22. baracuda 2 05.01.22 10:11 Сейчас в теме
(21)
СсылкаИлиОбъект - ОпределяемыйТип.ВладелецКонтактнойИнформации


Вас не смущает имя Параметра СсылкаИлиОбъект?
23. quazare 3800 05.01.22 11:32 Сейчас в теме
(22) очевидно имеется ввиду типа такого

СсылкаНаОбъект.ПолучитьОбъект()
24. ogursoft 13.01.22 11:18 Сейчас в теме
А не подскажете, как запросом получить доб. телефон?
37. Xershi 1555 18.08.24 09:14 Сейчас в теме
(24) он зашит в структуре. Сейчас написал обработку. Запросом получаем данные, затем построчно их раскладываем, код смотри в форме ввода телефона. Далее обрабатываю ошибки и после пакую всё обратно в формат телефона. Там 3 варианта хранения телефона, поэтому запросом 100% не получится сразу.
Хотя можешь ильдаровичу написать, может придумает.
25. quazare 3800 13.01.22 16:07 Сейчас в теме
(24) сразу - не подскажу - поиграйтесь с запросом с учетом типа и вида контактной информации
26. SGordon1 10.02.22 16:45 Сейчас в теме
А где посмотреть как когда значениеполей перезаполняется при записи объектов ( партнеры) ? Информация перенесен, до записи на форме нет, После перезаписи объекта все презаполняется...
27. vadim1011985 101 16.03.22 22:20 Сейчас в теме
Была задача изменить тип Адреса с Административно-территориального деления на Муниципальное. Вручную не комильфо так как много объектов в результате родился следующий вариант.



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

УправлениеКонтактнойИнформациейСлужебный.ДобавитьКонтактнуюИнформацию(ИзменяемыйОбъект,КонтактнаяИнформацияJSON,ВидКИ,Неопределено,Истина); // записываем измененную КИ в объект

 
Показать
Alex_vk; user1228978; wowik; user1804494; +4 Ответить
28. taasha25 13 10.11.22 19:24 Сейчас в теме
Здравствуйте!
А как найти Контактное лицо по Адресу электронной почты, может кто-то подскажет?
38. Xershi 1555 18.08.24 09:15 Сейчас в теме
(28) универсальный отчёт в помощь.
29. xKIA 22.11.22 20:06 Сейчас в теме
Не очень понятна логика заполнения JSON телефон, на мой взгляд должно быть:
value +7 (916) 123 45-67
areaCode 7
countryCode 916
number 1234567
То есть, знаки форматирования, только в представлении, а в разбивке на части только значащая информация. У вас же number: 123-45-67, почему тогда areaCode не +7, а countryCode (916) ?
Аналогично, в XML. Как всегда, в 1С не знают что делают и зачем.
32. ixijixi 1913 10.04.23 14:14 Сейчас в теме
Есть туториал по программному добавлению своего вида контактной информации?
Dajjedra; 0x00; +2 Ответить
33. user1815318 24.08.23 15:37 Сейчас в теме
(32) желательно к своему справочнику, добавленному в типовую расширением
34. bashhhh 26 17.07.24 17:34 Сейчас в теме
(0) Структура адреса или телефона также через БСП нужно инициализировать:

АдресСтруктура  = УправлениеКонтактнойИнформациейКлиентСервер.СтруктураПолейАдреса();
ТелефонСтруктура  = УправлениеКонтактнойИнформациейКлиентСервер.СтруктураПолейТелефона();
35. fdrvliv 31.07.24 17:23 Сейчас в теме
Формирует такое
ТелефонXML =
<КонтактнаяИнформация xmlns="http://www.v8.1c.ru/ssl/contactinfo" Представление="+7 (123) 456-78-95">
  <Комментарий>тестовый номер 2</Комментарий>
  <Состав xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="НомерТелефона" КодСтраны="7" КодГорода="123" Номер="456-78-95" Добавочный=""/>
</КонтактнаяИнформация>

А
ТелефонJSON =
{
"value": "",
"comment": "",
"type": "Телефон",
"countryCode": "",
"areaCode": "",
"number": "",
"extNumber": ""
}
Показать
36. fdrvliv 31.07.24 19:33 Сейчас в теме
(35) С моей БСП проще так
ТелефонJSON = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияВJSON(ТелефонСтруктура, Перечисления.ТипыКонтактнойИнформации.Телефон);
Оставьте свое сообщение