Публикации

БСП
Разработки

Найдено результатов: 115


Обмен данными XDTO (пример)

Обмен данными XDTO (пример)
Dmitry Zhurbenko 28 4

&НаКлиенте
Процедура Выгрузить(Команда)
	
	Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение);
	Диалог.Заголовок = "Выберите файл для выгрузки";
	Диалог.Фильтр = "xml |*.xml|";	
	Если Диалог.Выбрать() Тогда
		Сообщить(Диалог.ПолноеИмяФайла);
		
	Иначе
		Возврат;
	КонецЕсли;
	
	
	
	ВыгрузкаXML=ПолучитьXMLФайл(ЭтаФорма.УникальныйИдентификатор);
	
	Описание=Новый ОписаниеПередаваемогоФайла(Диалог.ПолноеИмяФайла,ВыгрузкаXML);
	МассивОписаний=Новый Массив;
	МассивОписаний.Добавить(Описание);
	ПолучитьФайлы(МассивОписаний,,,Ложь);
КонецПроцедуры  



&НаСервереБезКонтекста
Функция ПолучитьXMLФайл(ГУИДФормы)
	
	ИмяТемпФайла = ПолучитьИмяВременногоФайла("xml");                                                
	Данные = Новый ЗаписьXML;
	Данные.ОткрытьФайл(ИмяТемпФайла);
	Данные.ЗаписатьОбъявлениеXML();
	Данные.ЗаписатьНачалоЭлемента("Данные");
	
	Фабрика = СоздатьФабрикуXDTO("D:\Приемник.xsd");
	
	РаботникиОбъектТип= Фабрика.Тип("http://v8.1c.ru/8.1/data/enterprise/current-config","CatalogObject.Работники");
	
		
	
	Запрос = Новый Запрос;
	Запрос.Текст = 
	"ВЫБРАТЬ
	|	Сотрудники.Ссылка РаботникСсылка,
	|	Сотрудники.ПометкаУдаления DeletionMark,
	|	Сотрудники.Родитель РодительСсылка,
	|	Сотрудники.ЭтоГруппа IsFolder,
	|	Сотрудники.Код Code,
	|	Сотрудники.Наименование Description,
	|	Сотрудники.ДатаРождения ДеньРождения,
	|	Сотрудники.ПричинаУвольнения ПричинаУвольнения
	|ИЗ
	|	Справочник.Сотрудники КАК Сотрудники";
	
	Результат = Запрос.Выполнить();
	
	ВыборкаДетальныеЗаписи = Результат.Выбрать();
	
	Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
		РаботникиОбъект = Фабрика.Создать(РаботникиОбъектТип);		
		РаботникиОбъект.Ref = ВыборкаДетальныеЗаписи.РаботникСсылка.УникальныйИдентификатор();
		РаботникиОбъект.Parent = ВыборкаДетальныеЗаписи.РодительСсылка.УникальныйИдентификатор();

		Если ВыборкаДетальныеЗаписи.IsFolder Тогда
			ЗаполнитьЗначенияСвойств(РаботникиОбъект,ВыборкаДетальныеЗаписи,,"ДеньРождения,ПричинаУвольнения");
		Иначе
			ЗаполнитьЗначенияСвойств(РаботникиОбъект,ВыборкаДетальныеЗаписи);
			РаботникиОбъект.Автомобиль = Неопределено;
			РаботникиОбъект.Должность = новый УникальныйИдентификатор("00000000-0000-0000-0000-000000000000");
            РаботникиОбъект.Комментарий = "Импорт из исходной базы";
			РаботникиОбъект.Организация = новый УникальныйИдентификатор("00000000-0000-0000-0000-000000000000");
		КонецЕсли; 
		
		Фабрика.ЗаписатьXML(Данные,РаботникиОбъект);
	КонецЦикла;
	
		
	
	Данные.ЗаписатьКонецЭлемента();
	Данные.Закрыть();
	
	Двоичное=Новый ДвоичныеДанные(ИмяТемпФайла);
	Адрес=ПоместитьВоВременноеХранилище(Двоичное,ГУИДФормы);
	Возврат Адрес;
КонецФункции

&НаКлиенте
Процедура Загрузить(Команда)
	
	Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
	Диалог.Заголовок = "Выберите файл для загрузки";
	Диалог.Фильтр = "xml |*.xml|"; // картинки
	
	Если Диалог.Выбрать() Тогда
		Сообщить(Диалог.ПолноеИмяФайла);
		
	Иначе
		Возврат;
	КонецЕсли;
	
	ДвоичныеДанные = Новый ДвоичныеДанные(Диалог.ПолноеИмяФайла);
	ГуидФормы = Этаформа.УникальныйИдентификатор;
	Адрес = ПоместитьВоВременноеХранилище(ДвоичныеДанные,ГуидФормы);
	
	ЗагрузитьНаСервере(Адрес);
	
КонецПроцедуры


&НаСервереБезКонтекста
Процедура ЗагрузитьНаСервере(Адрес)
	
	ТемпФайл = ПолучитьИмяВременногоФайла("xml");
	ДвоичныеДанные = ПолучитьИзВременногоХранилища(Адрес);
	ДвоичныеДанные.Записать(ТемпФайл);
	Данные = Новый ЧтениеXML;
	Данные.ОткрытьФайл(ТемпФайл);
	Данные.Прочитать();
	Данные.Прочитать();
	
	Пока СериализаторXDTO.ВозможностьЧтенияXML(Данные) Цикл
		РаботникОбъект = СериализаторXDTO.ПрочитатьXML(Данные);
		РаботникОбъект.ОбменДанными.Загрузка=Истина;
		РаботникОбъект.Записать();
	КонецЦикла; 
	
	Данные.Закрыть();
	
КонецПроцедуры 

ПредставлениеТипаXDTO

Возвращает XML представление типа XDTO.
ОбщийМодуль.РаботаВМоделиСервиса
Автор: 1С
// Возвращает XML представление типа XDTO.
//
// Параметры:
//  ТипXDTO - ТипОбъектаXDTO, ТипЗначенияXDTO - тип XDTO для которого требуется получить.
//   XML представление.
//
// Возвращаемое значение:
//  Строка - XML представление типа XDTO.
//
Функция ПредставлениеТипаXDTO(ТипXDTO) Экспорт
	
	Возврат СериализаторXDTO.XMLСтрока(Новый РасширенноеИмяXML(ТипXDTO.URIПространстваИмен, ТипXDTO.Имя))
	
КонецФункции

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

ОбъектXDTOИзСтрокиXML

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

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

ОбъектXDTOВСтруктуру

Выполняет преобразование объекта XDTO в структуру с данными.
ОбщийМодуль.ОбменДаннымиXDTOСервер
Автор: 1С
// Выполняет преобразование объекта XDTO в структуру с данными.
//
// Параметры:
//  ОбъектXDTO - ОбъектXDTO - Значение, которое необходимо преобразовать.
//
// Возвращаемое значение:
//  Структура - Структура, имитирующая объект XDTO.
//    Ключи структуры соответствуют свойствам объекта XDTO.
//    Значения соответствуют значениям свойств объекта XDTO.
//
Функция ОбъектXDTOВСтруктуру(ОбъектXDTO) Экспорт
	
	Приемник = Новый Структура;
	
	Для Каждого Свойство Из ОбъектXDTO.Свойства() Цикл
		
		КонвертацияСвойстваXDTOВЭлементСтруктуры(ОбъектXDTO, Свойство, Приемник);
		
	КонецЦикла;
	
	Если Приемник.Свойство("КлючевыеСвойства")
		И Приемник.КлючевыеСвойства.Свойство("Ссылка") Тогда
		Приемник.Вставить("Ссылка", Приемник.КлючевыеСвойства.Ссылка);
	КонецЕсли;
	
	Возврат Приемник;
КонецФункции

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

ТипСообщение

Возвращает XDTO тип - сообщение.
ОбщийМодуль.СообщенияВМоделиСервиса
Автор: 1С
// Возвращает XDTO тип - сообщение.
//
// Возвращаемое значение:
//  ТипОбъектаXDTO - тип сообщения.
//
Функция ТипСообщение() Экспорт
	
	Возврат СообщенияВМоделиСервисаПовтИсп.ТипСообщение();
	
КонецФункции

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

ТипСообщение

Возвращает XDTO тип - сообщение.
ОбщийМодуль.СообщенияВМоделиСервисаПовтИсп
Автор: 1С
// Возвращает XDTO тип - сообщение.
//
// Возвращаемое значение:
//  ТипОбъектаXDTO - тип сообщения.
//
Функция ТипСообщение() Экспорт
	
	Возврат ФабрикаXDTO.Тип(ПакетСообщения(), "Message");
	
КонецФункции

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

ОбъектXDTOВСтрокуXML

Возвращает XML-представление XDTO-объекта.
ОбщийМодуль.ОбщегоНазначения
Автор: 1С
// Возвращает XML-представление XDTO-объекта.
//
// Параметры:
//  ОбъектXDTO - ОбъектXDTO  - объект, для которого требуется сформировать XML-представление.
//  Фабрика    - ФабрикаXDTO - фабрика, с использованием которой требуется формировать XML-представление.
//                             Если параметр не указан - будет использоваться глобальная фабрика XDTO.
//
// Возвращаемое значение: 
//   Строка - XML-представление XDTO-объекта.
//
Функция ОбъектXDTOВСтрокуXML(Знач ОбъектXDTO, Знач Фабрика = Неопределено) Экспорт
	
	ОбъектXDTO.Проверить();
	
	Если Фабрика = Неопределено Тогда
		Фабрика = ФабрикаXDTO;
	КонецЕсли;
	
	Запись = Новый ЗаписьXML();
	Запись.УстановитьСтроку();
	Фабрика.ЗаписатьXML(Запись, ОбъектXDTO, , , , НазначениеТипаXML.Явное);
	
	Возврат Запись.Закрыть();
	
КонецФункции

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

ДесериализацияТелефона

Преобразует строку в XDTO контактную информацию телефона.
ОбщийМодуль.УправлениеКонтактнойИнформациейСлужебный
Автор: 1С
// Преобразует строку в XDTO контактную информацию телефона.
//
//      ЗначенияПолей - Строка - сериализованная информация, значения полей.
//      Представление - Строка - представление старший-младший, используется для попытки разбора, если ЗначенияПолей
//                               пусто.
//      ОжидаемыйТип  - ПеречислениеСсылка.ТипыКонтактнойИнформации - необязательный тип для контроля.
//
//  Возвращаемое значение:
//      ОбъектXDTO  - контактной информации.
//
Функция ДесериализацияТелефона(ЗначенияПолей, Представление = "", ОжидаемыйТип = Неопределено) Экспорт
	Возврат ДесериализацияТелефонаФакса(ЗначенияПолей, Представление, ОжидаемыйТип);
КонецФункции

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

ДесериализацияФакса

Преобразует строку в XDTO контактную информацию Факса.
ОбщийМодуль.УправлениеКонтактнойИнформациейСлужебный
Автор: 1С
// Преобразует строку в XDTO контактную информацию Факса.
//
//      ЗначенияПолей - Строка - сериализованная информация, значения полей.
//      Представление - Строка - представление старший-младший, используется для попытки разбора, если ЗначенияПолей
//                               пусто.
//      ОжидаемыйТип  - ПеречислениеСсылка.ТипыКонтактнойИнформации - необязательный тип для контроля.
//
//  Возвращаемое значение:
//      ОбъектXDTO  - контактной информации.
//
Функция ДесериализацияФакса(ЗначенияПолей, Представление = "", ОжидаемыйТип = Неопределено) Экспорт
	Возврат ДесериализацияТелефонаФакса(ЗначенияПолей, Представление, ОжидаемыйТип);
КонецФункции

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

КонтактнаяИнформацияXDTOВXML

Преобразует контактную информацию XDTO в XML.
ОбщийМодуль.УправлениеКонтактнойИнформациейСлужебный
Автор: 1С
// Преобразует контактную информацию XDTO в XML.
//
//  Параметры:
//      ОбъектXDTOИнформации - ОбъектXDTO - контактная информация.
//
// Возвращаемое значение:
//      Строка - результат преобразования в формате XML.
//
Функция КонтактнаяИнформацияXDTOВXML(ОбъектXDTOИнформации) Экспорт
	
	Запись = Новый ЗаписьXML;
	Запись.УстановитьСтроку(Новый ПараметрыЗаписиXML(, , Ложь, Ложь, ""));
	
	Если ОбъектXDTOИнформации <> Неопределено Тогда
		ФабрикаXDTO.ЗаписатьXML(Запись, ОбъектXDTOИнформации);
	КонецЕсли;
	
	Результат = СтрЗаменить(Запись.Закрыть(), Символы.ПС, "&#10;");
	Результат = СтрЗаменить(Результат, "<ВнутригРайон/>", "");// Совместимость с КЛАДР
	
	Если Метаданные.ОбщиеМодули.Найти("РаботаСАдресами") <> Неопределено Тогда
		МодульРаботаСАдресами = ОбщегоНазначения.ОбщийМодуль("РаботаСАдресами");
		Результат = МодульРаботаСАдресами.ПередЗаписьюXDTOКонтактнаяИнформация(Результат);
	КонецЕсли;
	
	Возврат Результат;
	
КонецФункции

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

КонтактнаяИнформацияПоПредставлению

Разбирает представление КИ и возвращает XDTO.
ОбщийМодуль.УправлениеКонтактнойИнформациейСлужебный
Автор: 1С
// Разбирает представление КИ и возвращает XDTO.
//
//  Параметры:
//      Текст        - Строка  - XML
//      ОжидаемыйВид - СправочникСсылка.ВидыКонтактнойИнформации, ПеречислениеСсылка.ТипыКонтактнойИнформации, Структура.
//
// Возвращаемое значение:
//      Строк - контактная информация.
//
Функция КонтактнаяИнформацияПоПредставлению(Представление, ОжидаемыйВид, РазбиватьНаПоля = Ложь) Экспорт
	
	ОжидаемыйТип = УправлениеКонтактнойИнформациейСлужебныйПовтИсп.ТипВидаКонтактнойИнформации(ОжидаемыйВид);
	
	Если ОжидаемыйТип = Перечисления.ТипыКонтактнойИнформации.Адрес Тогда
		
		Возврат СформироватьАдресПоПредставлению(Представление, РазбиватьНаПоля);
		
	ИначеЕсли ОжидаемыйТип = Перечисления.ТипыКонтактнойИнформации.Телефон
		ИЛИ ОжидаемыйТип = Перечисления.ТипыКонтактнойИнформации.Факс Тогда
			Возврат ДесериализацияТелефонаФаксаВJSON("", Представление, ОжидаемыйТип);
		
	Иначе
		
		КонтактнойИнформации = УправлениеКонтактнойИнформациейКлиентСервер.ОписаниеНовойКонтактнойИнформации(ОжидаемыйТип);
		КонтактнойИнформации.Value = Представление;
		Возврат КонтактнойИнформации;
		
	КонецЕсли;
	
КонецФункции

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

ТранслироватьВВерсию

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

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

КонтактнаяИнформацияXDTOПоПредставлению

Разбирает представление КИ и возвращает XDTO.
ОбщийМодуль.УправлениеКонтактнойИнформациейСлужебный
Автор: 1С
// Разбирает представление КИ и возвращает XDTO.
//
//  Параметры:
//      Текст        - Строка  - XML
//      ОжидаемыйВид - СправочникСсылка.ВидыКонтактнойИнформации, ПеречислениеСсылка.ТипыКонтактнойИнформации, Структура.
//
// Возвращаемое значение:
//      ОбъектXDTO - контактная информация.
//
Функция КонтактнаяИнформацияXDTOПоПредставлению(Текст, ОжидаемыйВид) Экспорт
	
	ОжидаемыйТип = УправлениеКонтактнойИнформациейСлужебныйПовтИсп.ТипВидаКонтактнойИнформации(ОжидаемыйВид);
	
	Если ОжидаемыйТип = Перечисления.ТипыКонтактнойИнформации.Адрес Тогда
		Возврат АдресXMLВXDTO("", Текст, ОжидаемыйТип);
		
	ИначеЕсли ОжидаемыйТип = Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты Тогда
		Возврат ДесериализацияПрочейКонтактнойИнформации("", Текст, ОжидаемыйТип);
		
	ИначеЕсли ОжидаемыйТип = Перечисления.ТипыКонтактнойИнформации.ВебСтраница Тогда
		Возврат ДесериализацияПрочейКонтактнойИнформации("", Текст, ОжидаемыйТип);
		
	ИначеЕсли ОжидаемыйТип = Перечисления.ТипыКонтактнойИнформации.Телефон Тогда
		Возврат ДесериализацияТелефона("", Текст, ОжидаемыйТип);
		
	ИначеЕсли ОжидаемыйТип = Перечисления.ТипыКонтактнойИнформации.Факс Тогда
		Возврат ДесериализацияФакса("", Текст, ОжидаемыйТип);
		
	ИначеЕсли ОжидаемыйТип = Перечисления.ТипыКонтактнойИнформации.Skype Тогда
		Возврат ДесериализацияПрочейКонтактнойИнформации("", Текст, ОжидаемыйТип);
		
	ИначеЕсли ОжидаемыйТип = Перечисления.ТипыКонтактнойИнформации.Другое Тогда
		Возврат ДесериализацияПрочейКонтактнойИнформации("", Текст, ОжидаемыйТип);
		
	КонецЕсли;
	
	Возврат Неопределено;
КонецФункции

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

АдресXMLВXDTO

Преобразует строку в XDTO контактную информацию адреса.
ОбщийМодуль.УправлениеКонтактнойИнформациейСлужебный
Автор: 1С
// Преобразует строку в XDTO контактную информацию адреса.
//
//  Параметры:
//      ЗначенияПолей - Строка - сериализованная информация, значения полей.
//      Представление - Строка - представление старший-младший, используется для попытки разбора, если ЗначенияПолей
//                               пусто.
//      ОжидаемыйТип  - ПеречислениеСсылка.ТипыКонтактнойИнформации - необязательный тип для контроля.
//
//  Возвращаемое значение:
//      ОбъектXDTO  - контактной информации.
//
Функция АдресXMLВXDTO(Знач ЗначенияПолей, Знач Представление = "", Знач ОжидаемыйТип = Неопределено) Экспорт
	
	Если Метаданные.Обработки.Найти("РасширенныйВводКонтактнойИнформации") <> Неопределено Тогда
		Возврат Обработки["РасширенныйВводКонтактнойИнформации"].АдресXMLВXDTO(ЗначенияПолей, Представление, ОжидаемыйТип);
	КонецЕсли;
	
	// Пустой объект с представлением.
	ПространствоИмен = ПространствоИмен();
	Результат = ФабрикаXDTO.Создать(ФабрикаXDTO.Тип(ПространствоИмен, "КонтактнаяИнформация"));
	Результат.Состав = ФабрикаXDTO.Создать(ФабрикаXDTO.Тип(ПространствоИмен, "Адрес"));
	Результат.Состав.Состав = Представление;
	Результат.Представление = Представление;
	Возврат Результат;
	
КонецФункции

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

КонтактнаяИнформацияИзXML

Преобразует XML в объект XDTO контактной информации.
ОбщийМодуль.УправлениеКонтактнойИнформациейСлужебный
Автор: 1С
// Преобразует XML в объект XDTO контактной информации.
//
//  Параметры:
//      Текст            - Строка - строка XML контактной информации.
//      ОжидаемыйВид     - СправочникСсылка.ВидыКонтактнойИнформации, ПеречислениеСсылка.ТипыКонтактнойИнформации, Структура
//      РезультатПреобразования - Структура - если задана, то в свойства записываются сведения:
//        * ТекстОшибки - Строка - описание ошибок чтения. При этом возвращаемое значение функции будет 
//                                 корректного типа, но не заполнен.
//
// Возвращаемое значение:
//      ОбъектXDTO - контактная информация, соответствующая XDTO-пакету КонтактнаяИнформация.
//   
Функция КонтактнаяИнформацияИзXML(Знач Текст, Знач ОжидаемыйВид = Неопределено, РезультатПреобразования = Неопределено, Знач Представление = "") Экспорт
	
	ОжидаемыйТип = УправлениеКонтактнойИнформациейСлужебныйПовтИсп.ТипВидаКонтактнойИнформации(ОжидаемыйВид);
	
	Если РезультатПреобразования = Неопределено Или ТипЗнч(РезультатПреобразования) <> Тип("Структура") Тогда
		РезультатПреобразования = Новый Структура;
	КонецЕсли;
	РезультатПреобразования.Вставить("СведенияИсправлены", Ложь);
	
	ПеречислениеАдрес                 = Перечисления.ТипыКонтактнойИнформации.Адрес;
	ПеречислениеАдресЭлектроннойПочты = Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты;
	ПеречислениеSkype                 = Перечисления.ТипыКонтактнойИнформации.Skype;
	ПеречислениеВебСтраница           = Перечисления.ТипыКонтактнойИнформации.ВебСтраница;
	ПеречислениеТелефон               = Перечисления.ТипыКонтактнойИнформации.Телефон;
	ПеречислениеФакс                  = Перечисления.ТипыКонтактнойИнформации.Факс;
	ПеречислениеДругое                = Перечисления.ТипыКонтактнойИнформации.Другое;
	
	ПространствоИмен = ПространствоИмен();
	
	Если УправлениеКонтактнойИнформациейКлиентСервер.ЭтоКонтактнаяИнформацияВXML(Текст) Тогда
		ЧтениеXML = Новый ЧтениеXML;
		
		Если Метаданные.ОбщиеМодули.Найти("РаботаСАдресами") <> Неопределено Тогда
			МодульРаботаСАдресами = ОбщегоНазначения.ОбщийМодуль("РаботаСАдресами");
			Текст = МодульРаботаСАдресами.ПередЧтениемXDTOКонтактнаяИнформация(Текст);
		КонецЕсли;
		
		ЧтениеXML.УстановитьСтроку(Текст);
		
		ТекстОшибки = Неопределено;
		
		НеобходимоВосстановитьКонтактнуюИнформацию = Ложь;
		
		Попытка
			Результат = ФабрикаXDTO.ПрочитатьXML(ЧтениеXML, ФабрикаXDTO.Тип(ПространствоИмен, "КонтактнаяИнформация"));
			
			Если ОжидаемыйТип = Перечисления.ТипыКонтактнойИнформации.Адрес И КонтактнаяИнформацияXDTOПустая(Результат) Тогда
				НеобходимоВосстановитьКонтактнуюИнформацию = Истина;
			КонецЕсли;
			
		Исключение
			
			НеобходимоВосстановитьКонтактнуюИнформацию = Истина;
			
		КонецПопытки;
		
		Если НеобходимоВосстановитьКонтактнуюИнформацию Тогда
			ОписаниеПричиныОшибки = НСтр("ru='Сведения контактной информации были восстановлены после сбоя.'");
			Если ЗначениеЗаполнено(Представление) Тогда
				Результат = КонтактнаяИнформацияXDTOПоПредставлению(Представление, ОжидаемыйВид);
				Если СтрСравнить(Результат.Представление, Представление) <> 0  Тогда
					ТекстОшибки = ОписаниеПричиныОшибки;
					РезультатПреобразования.Вставить("ТекстОшибки", ТекстОшибки);
				КонецЕсли;
				
			КонецЕсли;
			
			// Некорректный формат XML
			ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрации(),
				УровеньЖурналаРегистрации.Предупреждение, , Текст, ОписаниеПричиныОшибки + Символы.ПС
					+ ИнформацияОбОшибке().Описание);
				
			РезультатПреобразования.Вставить("СведенияИсправлены", Истина);
		КонецЕсли;
		
		Если ТекстОшибки = Неопределено И ОжидаемыйТип <> Неопределено Тогда
			
			Если Результат = Неопределено Тогда
				ТекстОшибки = СтрЗаменить(НСтр("ru='Сведения контактной информации %ОжидаемыйВид% были повреждены или некорректно заполнены.'"),
					"%ОжидаемыйВид%", Строка(ОжидаемыйВид));
			Иначе
				// Контролируем соответствие типов.
				НайденТип = ?(Результат.Состав = Неопределено, Неопределено, Результат.Состав.Тип());
				
				ШаблонСообщения = СтрЗаменить(НСтр("ru='Сведения %1 контактной информации %ОжидаемыйВид% были повреждены или некорректно заполнены.'"),
					"%ОжидаемыйВид%", Строка(ОжидаемыйВид));
				Если ОжидаемыйТип = ПеречислениеАдрес И НайденТип <> ФабрикаXDTO.Тип(ПространствоИмен, "Адрес") Тогда
					ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонСообщения, НСтр("ru='об адресе'"));
				ИначеЕсли ОжидаемыйТип = ПеречислениеАдресЭлектроннойПочты И НайденТип <> ФабрикаXDTO.Тип(ПространствоИмен, "ЭлектроннаяПочта") Тогда
					ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонСообщения, НСтр("ru='электронной почты'"));
				ИначеЕсли ОжидаемыйТип = ПеречислениеВебСтраница И НайденТип <> ФабрикаXDTO.Тип(ПространствоИмен, "ВебСайт") Тогда
					ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонСообщения, НСтр("ru='веб-страницы'"));
				ИначеЕсли ОжидаемыйТип = ПеречислениеТелефон И НайденТип <> ФабрикаXDTO.Тип(ПространствоИмен, "НомерТелефона") Тогда
					ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонСообщения, НСтр("ru='о номере телефона'"));
				ИначеЕсли ОжидаемыйТип = ПеречислениеФакс И НайденТип <> ФабрикаXDTO.Тип(ПространствоИмен, "НомерФакса") Тогда
					ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонСообщения, НСтр("ru='о номере факса'"));
				ИначеЕсли ОжидаемыйТип = ПеречислениеSkype И НайденТип <> ФабрикаXDTO.Тип(ПространствоИмен, "Skype") Тогда
					ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонСообщения, НСтр("ru='о логине Skype'"));
				ИначеЕсли ОжидаемыйТип = ПеречислениеДругое И НайденТип <> ФабрикаXDTO.Тип(ПространствоИмен, "Прочее") Тогда
					ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонСообщения, НСтр("ru='о дополнительной'"));
				КонецЕсли;
			КонецЕсли;
		КонецЕсли;
		
		Если ТекстОшибки = Неопределено Тогда
			// Успешно прочитано
			Возврат Результат;
		КонецЕсли;
		
		РезультатПреобразования.Вставить("ТекстОшибки", ТекстОшибки);
		
		// Будет возвращен пустой объект.
		Текст = "";
	КонецЕсли;
	
	Если ТипЗнч(Текст) = Тип("СписокЗначений") Тогда
		Представление = "";
		ЭтоНовый = Текст.Количество() = 0;
	ИначеЕсли ПустаяСтрока(Представление) Тогда
		Представление = Строка(Текст);
		ЭтоНовый = ПустаяСтрока(Текст);
	Иначе
		ЭтоНовый = Ложь;
	КонецЕсли;
	
	Результат = ФабрикаXDTO.Создать(ФабрикаXDTO.Тип(ПространствоИмен, "КонтактнаяИнформация"));
	
	// Разбор
	Если ОжидаемыйТип = ПеречислениеАдрес Тогда
		Если ЭтоНовый Тогда
			Результат.Состав = ФабрикаXDTO.Создать(ФабрикаXDTO.Тип(ПространствоИмен, "Адрес"));
		Иначе
			Результат = АдресXMLВXDTO(Текст, Представление, ОжидаемыйТип);
		КонецЕсли;
		
	ИначеЕсли ОжидаемыйТип = ПеречислениеТелефон Тогда
		Если ЭтоНовый Тогда
			Результат.Состав = ФабрикаXDTO.Создать(ФабрикаXDTO.Тип(ПространствоИмен, "НомерТелефона"));
		Иначе
			Результат = ДесериализацияТелефона(Текст, Представление, ОжидаемыйТип)
		КонецЕсли;
		
	ИначеЕсли ОжидаемыйТип = ПеречислениеФакс Тогда
		Если ЭтоНовый Тогда
			Результат.Состав = ФабрикаXDTO.Создать(ФабрикаXDTO.Тип(ПространствоИмен, "НомерФакса"));
		Иначе
			Результат = ДесериализацияФакса(Текст, Представление, ОжидаемыйТип)
		КонецЕсли;
		
	ИначеЕсли ОжидаемыйТип = ПеречислениеАдресЭлектроннойПочты Тогда
		Если ЭтоНовый Тогда
			Результат.Состав = ФабрикаXDTO.Создать(ФабрикаXDTO.Тип(ПространствоИмен, "ЭлектроннаяПочта"));
		Иначе
			Результат = ДесериализацияПрочейКонтактнойИнформации(Текст, Представление, ОжидаемыйТип)
		КонецЕсли;
	ИначеЕсли ОжидаемыйТип = ПеречислениеSkype Тогда
		Если ЭтоНовый Тогда
			Результат.Состав = ФабрикаXDTO.Создать(ФабрикаXDTO.Тип(ПространствоИмен, "Skype"));
		Иначе
			Результат = ДесериализацияПрочейКонтактнойИнформации(Текст, Представление, ОжидаемыйТип)
		КонецЕсли;
	ИначеЕсли ОжидаемыйТип = ПеречислениеВебСтраница Тогда
		Если ЭтоНовый Тогда
			Результат.Состав = ФабрикаXDTO.Создать(ФабрикаXDTO.Тип(ПространствоИмен, "ВебСайт"));
		Иначе
			Результат = ДесериализацияПрочейКонтактнойИнформации(Текст, Представление, ОжидаемыйТип)
		КонецЕсли;
		
	ИначеЕсли ОжидаемыйТип = ПеречислениеДругое Тогда
		Если ЭтоНовый Тогда
			Результат.Состав = ФабрикаXDTO.Создать(ФабрикаXDTO.Тип(ПространствоИмен, "Прочее"));
		Иначе
			Результат = ДесериализацияПрочейКонтактнойИнформации(Текст, Представление, ОжидаемыйТип)
		КонецЕсли;
		
	Иначе
		ТекстОшибки = НСтр("ru = 'Сведения о виде контактной информации %1 были повреждены или некорректно заполнены,
								|т.к. обязательное поле тип не заполнено.'");
		ТекстОшибки =  СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстОшибки, ?(ЗначениеЗаполнено(ОжидаемыйВид), """" + ОжидаемыйВид.Наименование + """", ""));
		РезультатПреобразования.Вставить("ТекстОшибки", ТекстОшибки);
	КонецЕсли;
	
	Возврат Результат;
	
КонецФункции

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

GET-запрос к HTTP-серверу

GET-запрос к HTTP-серверу
stawen 53 3 1
Заголовки=Новый Соответствие();
Заголовки.Вставить("Content-Type","application/xml");
Заголовки.Вставить("Accept","application/xml");

Запрос=Новый HTTPЗапрос();
Запрос.АдресРесурса="clients/list";
Запрос.Заголовки=Заголовки;

Соединение=Новый HTTPСоединение("api.yourserver.ru");//таким образом полный URL запроса http://api.yourserver.ru/clients/list
Ответ=Соединение.Получить(Запрос);
КодСостояния=Ответ.КодСостояния;
СтрокаОтвета=Ответ.ПолучитьТелоКакСтроку();	

Если КодСостояния=200 тогда
	ЧтениеXML=Новый ЧтениеXML;
	ЧтениеXML.УстановитьСтроку(СтрокаОтвета);
	Попытка
		КонтрагентыСписокXDTO=ФабрикаXDTO.ПрочитатьXML(ЧтениеXML,ФабрикаXDTO.Тип("http://api.yourserver.ru/xdto","ClientList"));
	Исключение
		Сообщить(СформироватьСообщениеОбОшибке(ИнформацияОбОшибке()));
		Предупреждение("Сервер прислал плохие данные!");
		Возврат;
	КонецПопытки;
	//обработка объекта XDTO	
Иначе
	//обработка ошибочных кодов
КонецЕсли;

POST-запрос к HTTP-серверу

POST-запрос к HTTP-серверу
stawen 53 3 1
ЗаписьXML=Новый ЗаписьXML(); 
ЗаписьXML.УстановитьСтроку("UTF-8");
ЗаписьXML.ЗаписатьОбъявлениеXML();
Фабрика.ЗаписатьXML(ЗаписьXML, КонтрагентXDTO);//объект XDTO создан и заполнен ранее 

Заголовки=Новый Соответствие();
Заголовки.Вставить("Content-Type","application/xml");
Заголовки.Вставить("Accept","application/xml");

Запрос=Новый HTTPЗапрос();
Запрос.АдресРесурса="clients/add";
Запрос.Заголовки=Заголовки;
Запрос.УстановитьТелоИзСтроки(ЗаписьXML.Закрыть());

Соединение=Новый HTTPСоединение("api.yourserver.ru");//таким образом полный URL запроса http://api.yourserver.ru/clients/add
Ответ=Соединение.ОтправитьДляОбработки(Запрос);
КодСостояния=Ответ.КодСостояния;
СтрокаОтвета=Ответ.ПолучитьТелоКакСтроку();
Если КодСостояния=201 тогда
	ЧтениеXML=Новый ЧтениеXML;
	ЧтениеXML.УстановитьСтроку(СтрокаОтвета);
	Попытка
		СтатусРаботыXDTO=Фабрика.ПрочитатьXML(ЧтениеXML,ФабрикаXDTO.Тип("http://api.yourserver.ru/xdto","Status"));
	Исключение
		Сообщить(СформироватьСообщениеОбОшибке(ИнформацияОбОшибке()));
		Предупреждение("Сервер прислал плохие данные!");
		Возврат;
	КонецПопытки;
	//обработка объекта XDTO
Иначе
	//обработка ошибочных кодов
КонецЕсли;

Чтение файла XML в объект XDTO

Чтение файла XML в объект XDTO
acsent 82 15
ЧтениеXML = Новый ЧтениеXML;
ЧтениеXML.ОткрытьФайл(ИмяФайла);
	
ОбъектXDTO = ФабрикаXDTO.ПрочитатьXML(ЧтениеXML);
	
ЧтениеXML.Закрыть();
	

Пакет

Возвращает URI пространства имен XDTO-пакета, который используется для описания разрешений
ОбщийМодуль.РаботаВБезопасномРежимеСлужебный
Автор: 1С
// Возвращает URI пространства имен XDTO-пакета, который используется для описания разрешений
// в профилях безопасности.
//
// Возвращаемое значение: Строка, URI пространства имен XDTO-пакета.
//
Функция Пакет() Экспорт
	
	Возврат Метаданные.ПакетыXDTO.ApplicationPermissions_1_0_0_2.ПространствоИмен;
	
КонецФункции

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

СоответствиеВидовКИXDTOВидамКИПользователя

Возвращает соответствие видов контактной информации XDTO видам.
ОбщийМодуль.РаботаВМоделиСервиса
Автор: 1С
// Возвращает соответствие видов контактной информации XDTO видам.
// КИ пользователя.
//
// Возвращаемое значение:
//  Соответствие - соответствие видов КИ.
//
Функция СоответствиеВидовКИXDTOВидамКИПользователя() Экспорт
	
	Возврат РаботаВМоделиСервисаПовтИсп.СоответствиеВидовКИXDTOВидамКИПользователя();
	
КонецФункции

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////