СтруктураЗначенийПолей (БСП)

Автор: 1С
ОбщийМодуль.УправлениеКонтактнойИнформациейСлужебный
БСП

Структура значений полей. Преобразует строку полей вида ключ = значение в структуру.

//  Преобразует строку полей вида ключ = значение в структуру.
//
//  Параметры:
//      СтрокаПолей             - Строка - строка полей с данными в виде ключ = значение.
//      ВидКонтактнойИнформации - СправочникСсылка.ВидыКонтактнойИнформации - для определения состава незаполненных
//                                                                            полей.
//
//  Возвращаемое значение:
//      Структура - значения полей.
//
Функция СтруктураЗначенийПолей(СтрокаПолей, ВидКонтактнойИнформации = Неопределено) Экспорт
	
	Если ВидКонтактнойИнформации = ПредопределенноеЗначение("Перечисление.ТипыКонтактнойИнформации.Адрес") Тогда
		Результат = УправлениеКонтактнойИнформациейКлиентСервер.СтруктураПолейАдреса();
	ИначеЕсли ВидКонтактнойИнформации = ПредопределенноеЗначение("Перечисление.ТипыКонтактнойИнформации.Телефон") Тогда
		Результат = УправлениеКонтактнойИнформациейКлиентСервер.СтруктураПолейТелефона();
	Иначе
		Результат = Новый Структура;
	КонецЕсли;
	
	ПоследнийЭлемент = Неопределено;
	
	Для Итерация = 1 По СтрЧислоСтрок(СтрокаПолей) Цикл
		ПолученнаяСтрока = СтрПолучитьСтроку(СтрокаПолей, Итерация);
		Если СтрНачинаетсяС(ПолученнаяСтрока, Символы.Таб) Тогда
			Если Результат.Количество() > 0 Тогда
				Результат.Вставить(ПоследнийЭлемент, Результат[ПоследнийЭлемент] + Символы.ПС + Сред(ПолученнаяСтрока, 2));
			КонецЕсли;
		Иначе
			ПозицияСимвола = СтрНайти(ПолученнаяСтрока, "=");
			Если ПозицияСимвола <> 0 Тогда
				НазваниеПоля = Лев(ПолученнаяСтрока, ПозицияСимвола - 1);
				ЗначениеПоля = Сред(ПолученнаяСтрока, ПозицияСимвола + 1);
				Если НазваниеПоля = "Регион" Или НазваниеПоля = "Район" Или НазваниеПоля = "Город" 
					Или НазваниеПоля = "НаселенныйПункт" Или НазваниеПоля = "Улица" Тогда
					Если СтрНайти(СтрокаПолей, НазваниеПоля + "Сокращение") = 0 Тогда
						Результат.Вставить(НазваниеПоля + "Сокращение", АдресноеСокращение(ЗначениеПоля));
					КонецЕсли;
				КонецЕсли;
				Результат.Вставить(НазваниеПоля, ЗначениеПоля);
				ПоследнийЭлемент = НазваниеПоля;
			КонецЕсли;
		КонецЕсли;
	КонецЦикла;
	
	Возврат Результат;
КонецФункции

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

Рекомендации

Похожие публикации

Значение полей в расшифровке СКД

СтруктураПолейАдреса (БСП)

СтруктураПолейТелефона (БСП)

ДополнитьСтруктуру (БСП)

ПустыеЗначенияОпорныхПолей (БСП)

ПоляАдреса (БСП)

ПолеФайла (БСП)

Проверка заполненности полей объекта и возврат статуса + незаполненных полей

Возвращает сумму значений в поле [ИмяПоля] всех элементов коллекции

TurboConf ИР адаптер 1.75