Фиксированные данные. Фиксирует данные типов Структура, Соответствие, Массив с учетом вложенности.
// Фиксирует данные типов Структура, Соответствие, Массив с учетом вложенности.
//
// Параметры:
// Данные - Структура, Соответствие, Массив - коллекции, значения которых являются примитивными типами,
// хранилищем значения или не могут быть изменены. Поддерживаются типы значений:
// Булево, Строка, Число, Дата, Неопределено, УникальныйИдентификатор, Null, Тип,
// ХранилищеЗначения, ОбщийМодуль, ОбъектМетаданных, ТипЗначенияXDTO, ТипОбъектаXDTO,
// ЛюбаяСсылка.
//
// ВызыватьИсключение - Булево - начальное значение Истина. Когда установлено Ложь, тогда в случае наличия
// нефиксируемых данных исключение не будет вызвано, при этом данные будут
// зафиксированы на сколько возможно.
//
// Возвращаемое значение:
// ФиксированнаяСтруктура, ФиксированноеСоответствие, ФиксированныйМассив - фиксированные данные, аналогичные
// переданным в параметре Данные.
//
Функция ФиксированныеДанные(Данные, ВызыватьИсключение = Истина) Экспорт
Если ТипЗнч(Данные) = Тип("Массив") Тогда
Массив = Новый Массив;
Для каждого Значение Из Данные Цикл
Если ТипЗнч(Значение) = Тип("Структура")
ИЛИ ТипЗнч(Значение) = Тип("Соответствие")
ИЛИ ТипЗнч(Значение) = Тип("Массив") Тогда
Массив.Добавить(ФиксированныеДанные(Значение, ВызыватьИсключение));
Иначе
Если ВызыватьИсключение Тогда
ПроверкаФиксированностиДанных(Значение, Истина);
КонецЕсли;
Массив.Добавить(Значение);
КонецЕсли;
КонецЦикла;
Возврат Новый ФиксированныйМассив(Массив);
ИначеЕсли ТипЗнч(Данные) = Тип("Структура")
ИЛИ ТипЗнч(Данные) = Тип("Соответствие") Тогда
Если ТипЗнч(Данные) = Тип("Структура") Тогда
Коллекция = Новый Структура;
Иначе
Коллекция = Новый Соответствие;
КонецЕсли;
Для каждого КлючИЗначение Из Данные Цикл
Значение = КлючИЗначение.Значение;
Если ТипЗнч(Значение) = Тип("Структура")
ИЛИ ТипЗнч(Значение) = Тип("Соответствие")
ИЛИ ТипЗнч(Значение) = Тип("Массив") Тогда
Коллекция.Вставить(
КлючИЗначение.Ключ, ФиксированныеДанные(Значение, ВызыватьИсключение));
Иначе
Если ВызыватьИсключение Тогда
ПроверкаФиксированностиДанных(Значение, Истина);
КонецЕсли;
Коллекция.Вставить(КлючИЗначение.Ключ, Значение);
КонецЕсли;
КонецЦикла;
Если ТипЗнч(Данные) = Тип("Структура") Тогда
Возврат Новый ФиксированнаяСтруктура(Коллекция);
Иначе
Возврат Новый ФиксированноеСоответствие(Коллекция);
КонецЕсли;
ИначеЕсли ВызыватьИсключение Тогда
ПроверкаФиксированностиДанных(Данные);
КонецЕсли;
Возврат Данные;
КонецФункции
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////
УстановитьФиксированныеОтборы (БСП)
ЗначениеИзФиксированногоТипа (БСП)
ВставитьВФиксированноеСоответствие (БСП)
УдалитьИзФиксированногоСоответствия (БСП)
ПараметрыКлиентаНаСервере (БСП)
ПолучитьОбработчикиИнтерфейсовОтправляемыхСообщений (БСП)
ПолучитьОбработчикиИнтерфейсовПринимаемыхСообщений (БСП)
Установить отбор пользовательских настроек динамического списка