Ошибка при заполнении массива строками табличного документа.
Здравствуйте, Уважаемые программисты!
Помогите пожалуйста разобраться в ошибке:
есть простенький макет в нем две области: Заголовок и Строка, Строка - параметр, Строка несколько раз заполняется в цикле с различными значениями параметра, при этом весь результат сохраняется в массив областей и далее массивы выводится на экран. НО! Те данные, которые попали в массив в цикле заполняются последним значением. Вся эта "беда" нужна для другой задачи (ТабДок.ПроверитьВывод(МассивОбластей)).
Вот код всего отчета (он создан для примера)
Помогите пожалуйста разобраться в ошибке:
есть простенький макет в нем две области: Заголовок и Строка, Строка - параметр, Строка несколько раз заполняется в цикле с различными значениями параметра, при этом весь результат сохраняется в массив областей и далее массивы выводится на экран. НО! Те данные, которые попали в массив в цикле заполняются последним значением. Вся эта "беда" нужна для другой задачи (ТабДок.ПроверитьВывод(МассивОбластей)).
Вот код всего отчета (он создан для примера)
&НаСервере
Функция Команда1НаСервере()
Массив1 = Новый Массив;
ТабДок = Новый ТабличныйДокумент;
Макет = РеквизитФормыВЗначение("Отчет").ПолучитьМакет("Макет");
ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
ОбластьСтрока = Макет.ПолучитьОбласть("Строка");
Массив1.Добавить(ОбластьЗаголовок);
пСчетчик = 0;
Пока пСчетчик < 6 Цикл
ОбластьСтрока.Параметры.Строка = "Строка" + пСчетчик;
Массив1.Добавить(ОбластьСтрока);
пСчетчик = пСчетчик + 1;
КонецЦикла;
Для Каждого Стр из Массив1 Цикл
ТабДок.Вывести(Стр);
КонецЦикла;
Возврат ТабДок;
КонецФункции
&НаКлиенте
Процедура Команда1(Команда)
ТабДок = Команда1НаСервере();
ТабДок.Показать();
КонецПроцедуры
ПоказатьПрикрепленные файлы:
По теме из базы знаний
- Всякие полезности
- Интеллектуальная загрузка в 1С счетов, накладных из файлов электронных таблиц (типа XLS), не требующая настроек, с указанием номеров строк и колонок. Для примера обработка загрузки в документ "Поступление товаров и услуг" для "Управление Торговлей 10.3"
- Обработка данных + загрузка из табличного документа + удаление объектов + поиск и замена значений (управляемые формы)
- Корректная двусторонняя печать табличных документов + Простой пример создания внешней печатной формы
- Как автоматически заполнить обработкой табличную часть документа "Ввод начальных остатков" (Тип операции = "Расчеты с партнерами"). 1С: ERP
Найденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) Собственно,
Естественное поведение для сериализованных значений.
Естественно, поскольку ОбластьСтрока не меняется, а меняется только значение параметра "Строка", в массиве будут одинаковые элементы.
Те данные, которые попали в массив в цикле заполняются последним значением.
Естественное поведение для сериализованных значений.
Пока пСчетчик < 6 Цикл
ОбластьСтрока.Параметры.Строка = "Строка" + пСчетчик; // Вы каждый раз меняете значение параметра, но не сам табличный документ
Массив1.Добавить(ОбластьСтрока); // Каждый раз добавляете своего рода ссылку на тот же самый табличный документ
пСчетчик = пСчетчик + 1;
КонецЦикла;
ПоказатьЕстественно, поскольку ОбластьСтрока не меняется, а меняется только значение параметра "Строка", в массиве будут одинаковые элементы.
Массив1.Добавить(ОбластьЗаголовок);
пСчетчик = 0;
Пока пСчетчик < 6 Цикл
ОбластьСтрока = Макет.ПолучитьОбласть("Строка");
ОбластьСтрока.Параметры.Строка = "Строка" + пСчетчик;
Массив1.Добавить(ОбластьСтрока);
пСчетчик = пСчетчик + 1;
КонецЦикла;
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот