|
Почему при добавлении элементов в массив заменяется пред элемент |
☑ |
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;
КонецЦикла;
чтобы твоему последователю меньше глаза ломать и проще было доработать/исправить
|
|