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

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 (сравнение)

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

 

INFOSTART TOOLKIT

Самый продвинутый набор инструментов для управляемых форм 1С 8.3: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Подписки на события и др.


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

См. также

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

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

1800 руб.

21.11.2024    6328    33    23    

35

БСП (Библиотека стандартных подсистем) Обновление 1С Программист 1C:ERP Бесплатно (free)

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

29.04.2025    1255    krasnoshchekovpavel    6    

14

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

Описание способа создания глобального обработчика оповещений (событие формы), не привязанного к какой-то конкретной форме.

01.04.2025    1027    krasnoshchekovpavel    0    

9

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

Как создать внешнюю печатную форму для конфигураций на базе БСП с желанной всеми разработчиками фишкой - автоматическим открытием обработки в конфигураторе с остановкой отладчика внутри процедуры Печать() при выполнении интерактивной команды печати.

24.03.2025    1600    GeraltSnow    6    

30

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

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

10.02.2025    5180    John_d    24    

53

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

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

27.12.2024    5596    PROSTO-1C    16    

50

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

Синтакс-помощник БСП - справочник по Библиотеке Стандартных Подсистем, профессиональный инструмент разработчика с интуитивно понятным интерфейсом. Читайте в статье как использовать все возможности справочника и сделать работу с БСП более комфортной и эффективной.

11.12.2024    5196    gorenski    0    

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


Новички тоже это читают. Помогло.
kurokiplus; +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Гб!
AndrewVVS; kurokiplus; happymansev; user989861; user597231_DNorov; VladC#; ivnik; eleka; 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; +39 Ответить
20. vvh74 18.11.21 07:58 Сейчас в теме
(8) А до этого можно было записать +79059991234 в *.txt и никаких тебе реквизитов! И весил файл с тысячью клиентов 100 килобайт!
kurokiplus; +1 Ответить
30. fatman78 21 19.12.22 19:07 Сейчас в теме
(20) А до этого можно было записать телефон +79059991234 в блокнотик и никаких тебе компьютеров! Весил блокнотик с тысячью клиентов несколько сотен грамм!
kurokiplus; Yakud3a; prog1c_vl; ixijixi; user1646593; +5 Ответить
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 2013 10.04.23 14:12 Сейчас в теме
(10)
УправлениеКонтактнойИнформацией.КонтактнаяИнформацияОбъектов(КонтактныеЛица, ТипКонтактнойИнформации, ВидКонтактнойИнформации, Дата)
user989861; 0x00; +2 Ответить
11. user1035416 23.06.21 14:11 Сейчас в теме
В 1С в сети ищу примеры того что мне нужно и ни разу не видел повторений. Это хорошо или плохо?
12. quazare 3925 23.06.21 14:16 Сейчас в теме
(10) Будет еще отдельная статья по контактной информации
ivnik; pyrkin_vanya; +2 Ответить
13. user1035416 23.06.21 15:55 Сейчас в теме
(12) На 1С перешли недавно с другой устаревшей программы (не буду называть), так там в объектной модели есть готовые свойства и методы доставания практически любых нужных данных для документов и отчетов. А тут целый веер способов доставания. В частности интересует вопрос разделения функций и взаимодействие клиента и сервера. Это отдельная грустная песня. Например: можно ли из функции, выполняемой на сервере вернуть клиенту коллекцию или массив данных? Передать туда-сюда ссылку на объект точно нельзя.
19. HAMAZ 8 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 1922 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. Поручик 4676 27.12.21 12:57 Сейчас в теме
(18) Зачем опытным. В модуль глянуть никак было?
// Параметры:
//  СсылкаИлиОбъект - ОпределяемыйТип.ВладелецКонтактнойИнформации
//                  - СправочникОбъект
//                  - ДокументОбъект - ссылка или объект-владелец контактной информации (организация,
//                                      контрагент, партнер и т.д.).
Функция КонтактнаяИнформацияОбъекта(СсылкаИлиОбъект, ВидИлиТипКонтактнойИнформации = Неопределено, Дата = Неопределено, ТолькоПредставление = Истина) Экспорт
22. baracuda 2 05.01.22 10:11 Сейчас в теме
(21)
СсылкаИлиОбъект - ОпределяемыйТип.ВладелецКонтактнойИнформации


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

СсылкаНаОбъект.ПолучитьОбъект()
24. ogursoft 13.01.22 11:18 Сейчас в теме
А не подскажете, как запросом получить доб. телефон?
37. Xershi 1541 18.08.24 09:14 Сейчас в теме
(24) он зашит в структуре. Сейчас написал обработку. Запросом получаем данные, затем построчно их раскладываем, код смотри в форме ввода телефона. Далее обрабатываю ошибки и после пакую всё обратно в формат телефона. Там 3 варианта хранения телефона, поэтому запросом 100% не получится сразу.
Хотя можешь ильдаровичу написать, может придумает.
25. quazare 3925 13.01.22 16:07 Сейчас в теме
(24) сразу - не подскажу - поиграйтесь с запросом с учетом типа и вида контактной информации
26. SGordon1 10.02.22 16:45 Сейчас в теме
А где посмотреть как когда значениеполей перезаполняется при записи объектов ( партнеры) ? Информация перенесен, до записи на форме нет, После перезаписи объекта все презаполняется...
27. vadim1011985 103 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 1541 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 2013 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(ТелефонСтруктура, Перечисления.ТипыКонтактнойИнформации.Телефон);
39. VladC# 65 20.12.24 07:55 Сейчас в теме
Отличная шпаргалка, спасибо большое, примеры супер.
kurokiplus; +1 Ответить
40. GusevSI 26.02.25 10:10 Сейчас в теме
А как зачистить поле контактной информации, например, e-mail?

Пробую так, но не срабатывает:

КонтактнаяИнформацияОбъекта = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияОбъекта(Пользователь.Ссылка,,, Ложь);                
                
            Для Каждого Контакт Из КонтактнаяИнформацияОбъекта Цикл
                
                ИндексСтроки = КонтактнаяИнформацияОбъекта.Индекс(Контакт);
                
                Если СокрЛП(Контакт.Вид) = "Email" Тогда    
                     // удалим запись с e-mail для очистки электронного адреса пользователя
                     КонтактнаяИнформацияОбъекта.Удалить(ИндексСтроки);
                КонецЕсли;  
            КонецЦикла;
            
            // запишем измененную (без e-mail) контактную информацию пользователя 
УправлениеКонтактнойИнформацией.УстановитьКонтактнуюИнформациюОбъекта(Пользователь.Ссылка, КонтактнаяИнформацияОбъекта, Истина);
 Скрыть
Показать
41. saigrinn 06.05.25 09:04 Сейчас в теме
Кошмар и ужас нагромождения XML строк. Зачем так было усложнять все? Вместо пары строк теперь нагромождения из модулей процедур и функций... Вот как теперь программно засунуть эту КИ? Строка в таблице есть, она полностью идентична строке из другого объекта только значение почты разное, но эта падла на форме не отображается. Что ей надо вообще неизвестно. Консолью проверил все значения поле верные, виды, типы и т.д, но у одного физ лица отображается, а у другого нет... Может еще где-то кусками данные хранятся в регистрах?
Записал БСП функциями и ничего.

Почта = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияВJSON("admin@mail.ru",Справочники.ВидыКонтактнойИнформации.EMailФизическиеЛица);
		УправлениеКонтактнойИнформацией.ЗаписатьКонтактнуюИнформацию(ФизЛицо,Почта,Справочники.ВидыКонтактнойИнформации.EMailФизическиеЛица,Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты);
Оставьте свое сообщение