Created
September 12, 2021 00:04
-
-
Save kuntashov/d4e2b33c2a472a369f9f7530385307dd to your computer and use it in GitHub Desktop.
ВложенноеЗначениеСвойстваСтруктуры
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Возвращает значение структуры, вложенной в другую структуру по составному ключу, | |
// формируемому как строка из ключей структур разного уровня, разделенных точками. | |
// Глубина вложенности никак не ограничена. | |
// | |
// Параметры | |
// Структура - Структура - Структура, в которой производится поиск значения | |
// СоставнойКлюч - Строка - Составной ключ в формате "Ключ.Подключ1.Подключ2", | |
// по которому будет производиться поиск значения | |
// ЗначениеПоУмолчанию - Произвольный - Возвращаемое значение, в случае, если какой либо | |
// из элементов составного ключа отсутствует в Структуре. | |
// | |
// Возвращаемое значение: | |
// Произвольный - Найденное значение, либо значение по умолчанию. | |
// | |
Функция ВложенноеЗначениеСвойстваСтруктуры(Структура, СоставнойКлюч, ЗначениеПоУмолчанию = Неопределено) Экспорт | |
Перем Значение; | |
Если ТипЗнч(СоставнойКлюч) = Тип("Строка") Тогда | |
КомпонентыКлюча = СтрРазделить(СоставнойКлюч, ".", Ложь); | |
Иначе | |
КомпонентыКлюча = СоставнойКлюч; | |
КонецЕсли; | |
Если КомпонентыКлюча.Количество() = 0 Тогда | |
Возврат ЗначениеПоУмолчанию; | |
КонецЕсли; | |
Ключ = КомпонентыКлюча[0]; | |
Если Не Структура.Свойство(Ключ, Значение) Тогда | |
Возврат ЗначениеПоУмолчанию; | |
КонецЕсли; | |
Если КомпонентыКлюча.Количество() = 1 Тогда | |
Возврат Значение; | |
КонецЕсли; | |
КомпонентыКлюча.Удалить(0); | |
Возврат ВложенноеЗначениеСвойстваСтруктуры(Значение, КомпонентыКлюча, ЗначениеПоУмолчанию); | |
КонецФункции |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment