Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save kuntashov/d4e2b33c2a472a369f9f7530385307dd to your computer and use it in GitHub Desktop.
Save kuntashov/d4e2b33c2a472a369f9f7530385307dd to your computer and use it in GitHub Desktop.
ВложенноеЗначениеСвойстваСтруктуры
// Возвращает значение структуры, вложенной в другую структуру по составному ключу,
// формируемому как строка из ключей структур разного уровня, разделенных точками.
// Глубина вложенности никак не ограничена.
//
// Параметры
// Структура - Структура - Структура, в которой производится поиск значения
// СоставнойКлюч - Строка - Составной ключ в формате "Ключ.Подключ1.Подключ2",
// по которому будет производиться поиск значения
// ЗначениеПоУмолчанию - Произвольный - Возвращаемое значение, в случае, если какой либо
// из элементов составного ключа отсутствует в Структуре.
//
// Возвращаемое значение:
// Произвольный - Найденное значение, либо значение по умолчанию.
//
Функция ВложенноеЗначениеСвойстваСтруктуры(Структура, СоставнойКлюч, ЗначениеПоУмолчанию = Неопределено) Экспорт
Перем Значение;
Если ТипЗнч(СоставнойКлюч) = Тип("Строка") Тогда
КомпонентыКлюча = СтрРазделить(СоставнойКлюч, ".", Ложь);
Иначе
КомпонентыКлюча = СоставнойКлюч;
КонецЕсли;
Если КомпонентыКлюча.Количество() = 0 Тогда
Возврат ЗначениеПоУмолчанию;
КонецЕсли;
Ключ = КомпонентыКлюча[0];
Если Не Структура.Свойство(Ключ, Значение) Тогда
Возврат ЗначениеПоУмолчанию;
КонецЕсли;
Если КомпонентыКлюча.Количество() = 1 Тогда
Возврат Значение;
КонецЕсли;
КомпонентыКлюча.Удалить(0);
Возврат ВложенноеЗначениеСвойстваСтруктуры(Значение, КомпонентыКлюча, ЗначениеПоУмолчанию);
КонецФункции
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment