Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 11:15

Глюк с формированием массива. Платформа 8.3

Автор tourist56, 18 янв 2015, 10:19

0 Пользователей и 1 гость просматривают эту тему.

tourist56

Платформа 8.3.5.1383. Делаю обработку загрузки данных из файла dbf.
Примерно такая процедура:
&НаКлиенте
Процедура СоздатьСФ(Команда)
Данные= Новый XBase;
Данные.ОткрытьФайл(Объект.ФайлДанных,,Истина);
Структура=Новый Структура();
НаборДанных = Новый Массив;
Запись = Новый Структура;
НаборДанных.Очистить();
Если Не Данные.Открыта() Тогда
Предупреждение("Не удалось открыть указанный файл!");
Иначе
КолЗаписей=Данные.КоличествоЗаписей();
Для НомЗап=1 по КолЗаписей Цикл
Данные.Перейти(НомЗап);
Запись.Вставить("ДатаДок",Данные.DataDok);
Запись.Вставить("НомерДок",Данные.NomDok);
Запись.Вставить("СФНомер",Данные.SchF);
Запись.Вставить("ДСФ",Данные.DataSchF);
Запись.Вставить("Основание",Неопределено);
НаборДанных.Вставить(НомЗап-1,Запись);
Сообщить("Номер док."+Запись.НомерДок+" Номер записи "+НаборДанных.Количество());
КонецЦикла;
Для каждого Запись из НаборДанных Цикл
Сообщить("Номер док."+Запись.НомерДок+" НомерСФ "+Запись.СФНомер);
КонецЦикла;   

ДостатьОсн(НаборДанных);
СФ(НаборДанных);
Сообщить("Счета-Фактуры заполнены");
КонецЕсли;

КонецПроцедуры

Проблема в следующем. Когда по циклу выбираются данные из dbf, все нормально. Запись содержит нужную информацию.
По окончании цикла просматриваю массив. Все записи массива содержат последнюю Запись выборки. В чем может быть проблема?
Аналогичный код в другой процедуре работает нормально.

ilyay

Перенесите "Запись = Новый Структура;" внутрь цикла. Необходимо создавать новый объект в памяти под каждую запись dbf. Вы в каждый элемент массива кладете сейчас ссылку на один и тот же участок памяти и на каждом проходе обновляете данные в этой области памяти.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск