![]() |
|
Почему при добавлении элементов в массив заменяется пред элемент | ☑ | ||
---|---|---|---|---|
0
gabd_marat
28.11.18
✎
22:18
|
ВыборкаИсторияИзменений = Запрос.Выполнить().Выбрать();
МассивСтруктурыИсторияИзменений = Новый Массив; СтруктураИсторияИзменений = Новый Структура; Индекс = 0; Пока ВыборкаИсторияИзменений.Следующий() Цикл СтруктураИсторияИзменений.Вставить("Дата",ВыборкаИсторияИзменений.Дата); СтруктураИсторияИзменений.Вставить("Сотрудник",ВыборкаИсторияИзменений.Сотрудник); СтруктураИсторияИзменений.Вставить("Участок",ВыборкаИсторияИзменений.Участок); СтруктураИсторияИзменений.Вставить("Ответственный",ВыборкаИсторияИзменений.Ответственный); СтруктураИсторияИзменений.Вставить("Допуск",ВыборкаИсторияИзменений.Допуск); СтруктураИсторияИзменений.Вставить("Комментарий",ВыборкаИсторияИзменений.Комментарий); //МассивСтруктурыИсторияИзменений.Добавить( В(Индекс,СтруктураИсторияИзменений); МассивСтруктурыИсторияИзменений.Добавить(СтруктураИсторияИзменений); Индекс = Индекс + 1; КонецЦикла; |
|||
1
RomanYS
28.11.18
✎
22:21
|
Засунь в цикл
СтруктураИсторияИзменений = Новый Структура; |
|||
2
gabd_marat
28.11.18
✎
22:26
|
(1) Заработало, а не должна разве структура перезаписывать пред значения?
|
|||
3
palsergeich
28.11.18
✎
22:31
|
(2) Нет, Структура - объект, по факту МассивСтруктурыИсторияИзменений.Добавить(СтруктураИсторияИзменений); Вы в массив добавляете ссылку на объект.
И если Вы не сделаете (1) объект и ссылка на \него будут те же, а значения там поменяются. И в конце Вы получите массив элементов с одной и той же ссылкой в значении. Делая (1) вы в переменную заставляете сделать новый объект и все становится хорошо. |
|||
4
palsergeich
28.11.18
✎
22:34
|
Аналогия - ексли бы там была не Структура, а скажем
СтруктураИсторияИзменений = Справочник.ИмяСправочника.СоздатьЭлемент() Поведение будет такое же |
|||
5
Конструктор1С
29.11.18
✎
04:03
|
Переделай по-человечачи
ВыборкаИсторияИзменений = Запрос.Выполнить().Выбрать(); МассивСтруктурыИсторияИзменений = Новый Массив; Индекс = 0; Пока ВыборкаИсторияИзменений.Следующий() Цикл СтруктураИсторияИзменений = Новый Структура("Дата,Сотрудник,Участок,Ответственный,Допуск,Комментарий"); ЗаполнитьЗначенияСвойств(СтруктураИсторияИзменений, ВыборкаИсторияИзменений); МассивСтруктурыИсторияИзменений.Добавить(СтруктураИсторияИзменений); Индекс = Индекс + 1; КонецЦикла; чтобы твоему последователю меньше глаза ломать и проще было доработать/исправить |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |