Имя: Пароль:
1C
 
Переопределение структуры в массиве
0 ZloyRafa
 
05.10.17
10:38
МассивДокументовКПечатиДоговора     = Новый Массив;
    МассивДоговоровДляНовойБазы         = Новый Массив;
ДоговораКСозданиюВБазе                = Новый Структура();    
    Для каждого Элемент из СписокКонтрагентов Цикл
        
        Если Элемент.Просрочка>0 Тогда
        Договор = СоздатьДоговор(Элемент.АльтернативныйНомер,Элемент.Контрагент);
        ДоговораКСозданиюВБазе.Вставить("Договор", Договор);
        ДоговораКСозданиюВБазе.Вставить("Сумма", Элемент.Просрочка);
        МассивДоговоровДляНовойБазы.Добавить(ДоговораКСозданиюВБазе);


после обхода всего цикла у меня в массиве имеется n-ое кол-во элементов в массиве, но у всех элементов структура содержит значения последнего элемента цикла, как такое возможно ?
Ошибку исправил, переопределением структуры в цикле, но почему так ?
1 Numerus Mikhail
 
05.10.17
10:41
(0) Структура состоит из пары Ключ-Значение.
и так как ключ вы подставляете один и тот же, пара не добавляется, а перезаписывается.
2 Ненавижу 1С
 
гуру
05.10.17
10:42
(1) не поэтому

просто Структура это ссылочный тип

фактически у тебя в каждом элементе массива ссылка на один и тот же объект
3 h-sp
 
05.10.17
11:13
(0) МассивДокументовКПечатиДоговора     = Новый Массив;
    МассивДоговоровДляНовойБазы         = Новый Массив;
    Для каждого Элемент из СписокКонтрагентов Цикл
        ДоговораКСозданиюВБазе          = Новый Структура();