v8: Копирование коллекций в 1С 80 Ключевые слова: коллекция,копирование
Очень часто требуется копия коллекции 1С - структуры, таблицы, соответствия.
Такие структуры могут содержать ссылки на другие структуры, поэтому нужно при копировании копировать и вложенные объекты.
Рассмотренная здесь функция работает не со всеми объектами, предлагаю ее усовершенствовать всем желающим.
Функция УниКопироватьОбъект1С(Объект)
Если ТипЗнч(Объект)=Тип("Структура") Тогда
Рез=Новый Структура();
Для Каждого Эл Из Объект Цикл
Рез.Вставить(Эл.Ключ, УниКопироватьОбъект1С(Эл.Значение));
КонецЦикла;
ИначеЕсли ТипЗнч(Объект)=Тип("ТаблицаЗначений") Тогда
Возврат Объект.Копировать();
ИначеЕсли ТипЗнч(Объект)=Тип("СписокЗначений") Тогда
Рез=Новый СписокЗначений();
Для Каждого Эл Из Объект Цикл
Рез.Добавить(УниКопироватьОбъект1С(Эл.Значение), Эл.Представление);
КонецЦикла;
Иначе
Возврат Объект;
КонецЕсли;
КонецФункции
Для ленивых (и если нужно сделать на скорую руку) могу порекомендовать такой вариант копирования:
Копия=ЗначениеИзСтрокиВнутр(ЗначениеВСтрокуВнутр(Объект)) - на ваш страх и риск.
Этот код еще не доделан, для таблицы значений тоже нужно рассматривать вопросы, когда в ячейке хранится коллекция.
|