Книга знаний

Рекламное место пустует
1С:Предприятие / v8 / Приемы программирования / Коллекции значений

v8: Копирование коллекций в 1С 80

О том, как правильно копировать коллекции значений в 1С 80Автор статьи: Гений 1С
Последняя редакция №1 от 26.02.06
URL: http://kb.mista.ru/article.php?id=111

Ключевые слова: коллекция,копирование


Очень часто требуется копия коллекции 1С - структуры, таблицы, соответствия.
Такие структуры могут содержать ссылки на другие структуры, поэтому нужно при копировании копировать и вложенные объекты.
Рассмотренная здесь функция работает не со всеми объектами, предлагаю ее усовершенствовать всем желающим.

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


Для ленивых (и если нужно сделать на скорую руку) могу порекомендовать такой вариант копирования:
Копия=ЗначениеИзСтрокиВнутр(ЗначениеВСтрокуВнутр(Объект)) - на ваш страх и риск.

Этот код еще не доделан, для таблицы значений тоже нужно рассматривать вопросы, когда в ячейке хранится коллекция.

Закладка

Описание | Рубрикатор | Поиск | ТелепатБот | Захваченные статьи | Установки | Форум
© Станислав Митичкин (Волшебник), 2005-2021 | Mista.ru

Яндекс.Метрика