ВыборкаИсторияИзменений = Запрос.Выполнить().Выбрать();
МассивСтруктурыИсторияИзменений = Новый Массив;
СтруктураИсторияИзменений = Новый Структура;
Индекс = 0;
Пока ВыборкаИсторияИзменений.Следующий() Цикл
(2) Нет, Структура - объект, по факту МассивСтруктурыИсторияИзменений.Добавить(СтруктураИсторияИзменений); Вы в массив добавляете ссылку на объект.
И если Вы не сделаете (1) объект и ссылка на \него будут те же, а значения там поменяются.
И в конце Вы получите массив элементов с одной и той же ссылкой в значении.
Делая (1) вы в переменную заставляете сделать новый объект и все становится хорошо.
чтобы твоему последователю меньше глаза ломать и проще было доработать/исправить
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший