Структура значений полей. Преобразует строку полей вида ключ = значение в структуру.
// Преобразует строку полей вида ключ = значение в структуру.
//
// Параметры:
// СтрокаПолей - Строка - строка полей с данными в виде ключ = значение.
// ВидКонтактнойИнформации - СправочникСсылка.ВидыКонтактнойИнформации - для определения состава незаполненных
// полей.
//
// Возвращаемое значение:
// Структура - значения полей.
//
Функция СтруктураЗначенийПолей(СтрокаПолей, ВидКонтактнойИнформации = Неопределено) Экспорт
Если ВидКонтактнойИнформации = ПредопределенноеЗначение("Перечисление.ТипыКонтактнойИнформации.Адрес") Тогда
Результат = УправлениеКонтактнойИнформациейКлиентСервер.СтруктураПолейАдреса();
ИначеЕсли ВидКонтактнойИнформации = ПредопределенноеЗначение("Перечисление.ТипыКонтактнойИнформации.Телефон") Тогда
Результат = УправлениеКонтактнойИнформациейКлиентСервер.СтруктураПолейТелефона();
Иначе
Результат = Новый Структура;
КонецЕсли;
ПоследнийЭлемент = Неопределено;
Для Итерация = 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
///////////////////////////////////////////////////////////////////////////////////////////////////////
Значение полей в расшифровке СКД
ПустыеЗначенияОпорныхПолей (БСП)
Проверка заполненности полей объекта и возврат статуса + незаполненных полей
Возвращает сумму значений в поле [ИмяПоля] всех элементов коллекции