Копирование структуры в 1С

В этой небольшой статье рассмотрим как можно получить копию созданной структуры.

Предположим имеем следующую структуру:

СозданнаяСтруктура = Новый Структура;
СозданнаяСтруктура.Вставить("Ключ1", "ЗначениеКлюча1");
СозданнаяСтруктура.Вставить("Ключ2", "ЗначениеКлюча2");

Для копирования структуры в 1С 8 нельзя просто взять и написать такое: КопияСтруктуры = СозданнаяСтруктура. Вместо копии структуры мы просто получаем еще одну переменную КопияСтруктуры, которая указывает на тот же самый набор данных что и переменная СозданнаяСтруктура.
В этом случае поможет следующий цикл:

КопияСтруктуры = Новый Структура;
Для Каждого ЭлементСтруктуры Из СозданнаяСтруктура Цикл
  КопияСтруктуры.Вставить(ЭлементСтруктуры.Ключ, ЭлементСтруктуры.Значение);
КонецЦикла;

5 комментариев

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

  2. НовСтруктура2=ЗначениеИзСтрокиВнутр(ЗначениеВСтрокуВнутр(НовСтруктура1));

  3. ИсходнаяСтруктура = Новый Структура(«ФИО», «Иванов»);
    //так
    ФиксированнаяКопия = Новый Структура(ИсходнаяСтруктура);
    Копия = Новый Структура(ФиксированнаяКопия);
    //или так
    Копия = Новый Структура(Новый Структура(ИсходнаяСтруктура));

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *