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

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 Конфигурации 1cv8 Абонемент ($m)

Пример шаблона для многопоточного выполнения фонового задания на основе БСП. Шаблоны сделаны для процедуры и функции.

2 стартмани

03.05.2024    1095    17    Hitcher    3    

11

БСП (Библиотека стандартных подсистем) Адаптация типовых решений Программист Платформа 1С v8.3 1С:ERP Управление предприятием 2 Бесплатно (free)

Понадобилось в подменю "Создать на основании" добавить свою команду, которая открывает обработку. В процессе доработок появилась проблема двух подменю "Создать на основании". В статье о том, как решились проблемы.

01.03.2024    3018    dimanich70    8    

15

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

Небольшая шпаргалка по функциям БСП касательно адреса. Так скажем, еще один способ помимо https://infostart.ru/1c/articles/1060970/

12.02.2024    1031    FilippovRI    0    

17

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

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

07.02.2024    3189    YA_418728146    11    

51

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

В этой статье расскажем об архитектуре, использовании и особенностях реализации подсистемы «Свойства» из инструментария разработчика «1С:Библиотека стандартных подсистем» (1С: БСП).

19.01.2024    9727    PROSTO-1C    5    

48
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. a.gorbachev 16.09.20 17:01 Сейчас в теме
Не понятно для кого данная статья была вообще написана?
Статья выглядит так, будто новичок зашел в общий модуль "УправлениеКонтактнойИнформацией", скопировал описание функций и процедур программного интерфейса и протестировал их.
Мне кажется программисту достаточно указать общий модуль, далее там и так всё понятно, описание функций очень подробное.
Таким же успехом можно написать статью "Работаем с дополнительными реквизитами и свойствами", открыть общий модуль "УправлениеСвойствами" и радоваться чтением доп. свойства объекта одной строчкой.
stall; ixijixi; redtram; bocharovki; crosby; baracuda; Xershi; +7 8 Ответить
15. Xershi 1500 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 3713 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Гб!
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; +26 Ответить
20. vvh74 18.11.21 07:58 Сейчас в теме
(8) А до этого можно было записать +79059991234 в *.txt и никаких тебе реквизитов! И весил файл с тысячью клиентов 100 килобайт!
30. fatman78 17 19.12.22 19:07 Сейчас в теме
(20) А до этого можно было записать телефон +79059991234 в блокнотик и никаких тебе компьютеров! Весил блокнотик с тысячью клиентов несколько сотен грамм!
prog1c_vl; ixijixi; user1646593; +3 Ответить
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 1828 10.04.23 14:12 Сейчас в теме
(10)
УправлениеКонтактнойИнформацией.КонтактнаяИнформацияОбъектов(КонтактныеЛица, ТипКонтактнойИнформации, ВидКонтактнойИнформации, Дата)
11. user1035416 23.06.21 14:11 Сейчас в теме
В 1С в сети ищу примеры того что мне нужно и ни разу не видел повторений. Это хорошо или плохо?
12. quazare 3713 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 1861 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. Поручик 4683 27.12.21 12:57 Сейчас в теме
(18) Зачем опытным. В модуль глянуть никак было?
// Параметры:
//  СсылкаИлиОбъект - ОпределяемыйТип.ВладелецКонтактнойИнформации
//                  - СправочникОбъект
//                  - ДокументОбъект - ссылка или объект-владелец контактной информации (организация,
//                                      контрагент, партнер и т.д.).
Функция КонтактнаяИнформацияОбъекта(СсылкаИлиОбъект, ВидИлиТипКонтактнойИнформации = Неопределено, Дата = Неопределено, ТолькоПредставление = Истина) Экспорт
22. baracuda 2 05.01.22 10:11 Сейчас в теме
(21)
СсылкаИлиОбъект - ОпределяемыйТип.ВладелецКонтактнойИнформации


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

СсылкаНаОбъект.ПолучитьОбъект()
24. ogursoft 13.01.22 11:18 Сейчас в теме
А не подскажете, как запросом получить доб. телефон?
25. quazare 3713 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,ВидКИ,Неопределено,Истина); // записываем измененную КИ в объект

 
Показать
user1228978; wowik; user1804494; +3 Ответить
28. taasha25 13 10.11.22 19:24 Сейчас в теме
Здравствуйте!
А как найти Контактное лицо по Адресу электронной почты, может кто-то подскажет?
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 1828 10.04.23 14:14 Сейчас в теме
Есть туториал по программному добавлению своего вида контактной информации?
33. user1815318 24.08.23 15:37 Сейчас в теме
(32) желательно к своему справочнику, добавленному в типовую расширением
Оставьте свое сообщение