Таблица Значений

1. plasmoid 05.09.07 19:49 Сейчас в теме
Всем доброго времени суток.
Подскажите пожалуйста в чем ошибка, необходимо сделать обработку которая выбирала бы документы "ЗаявкаПокупателя" за определенный период, и делала бы на их основе один, в котором собиралась бы вся номенклатура и прочее из всех документов вот кусок кода:

// создаем документ ЗаявкаПокупателя и Таблицу значений
Док = СоздатьОбъект("Документ.ЗаявкаПокупателя");
ТЗ = СоздатьОбъект("ТаблицаЗначений");
НоваяТабЗнач = СоздатьОбъект("ТаблицаЗначений");
Док.ВыбратьДокументы(НачВыб,КонВыб);
Пока Док.ПолучитьДокумент() = 1 цикл
Док.ВыгрузитьТабличнуюЧасть(ТЗ);
НоваяТабЗнач.Заполнить(ТЗ);
КонецЦикла;



ЗаявПокуп = СоздатьОбъект("Документ.ЗаявкаПокупателя");
ЗаявПокуп.Новый();
ЗаявПокуп.ДатаДок = ТекущаяДата();

НоваяТабЗнач.ВыбратьСтроки();
Пока НоваяТабЗнач.ПолучитьСтроку() = 1 цикл

ЗаявПокуп.НоваяСтрока();
ЗаявПокуп.Номенклатура = НоваяТабЗнач.Номенклатура;
ЗаявПокуп.Количество = НоваяТабЗнач.Количество;
КонецЦикла;
ЗаявПокуп.Записать();

При выполнении выдается ошибка:
НоваяТабЗнач.Заполнить(ТЗ);
{C:\OBR_ZAIAV.ERT(10)}: Номер за пределами значения!
За ранее всем большое спасибо.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. poppy 05.09.07 22:41 Сейчас в теме
ИМХО метод Заполнить() не подходит для объединения таблиц значений. Нужно пользовтаься другими способами.

Кстати, вместо кода:
Код
НоваяТабЗнач.ВыбратьСтроки(); 
Пока НоваяТабЗнач.ПолучитьСтроку() = 1 цикл 

    ЗаявПокуп.НоваяСтрока(); 
    ЗаявПокуп.Номенклатура = НоваяТабЗнач.Номенклатура; 
    ЗаявПокуп.Количество = НоваяТабЗнач.Количество; 
КонецЦикла
Показать полностью


Можно написать:
ЗаявПокуп.ЗагрузитьТабличнуюЧасть(НоваяТабЗнач);
3. ssp_ 155 06.09.07 17:35 Сейчас в теме
Заполнить() позволяет объединять таблицы значений с одинаковыми колонками. Только в заполняемой таблице должно быть столько пустых строк, сколько в присоединяемой. И структура колонок должна быть создана. Т.е. надо так:

Для первой таб. части:
Код
ТЗ.Выгрузить(НоваяТабЗнач);
Показать полностью

Для последующих таб. частей:
Код
КолСтрок=НоваяТабЗнач.КоличествоСтрок();
НоваяТабЗнач.КоличествоСтрок(КолСтрок+ТЗ.КоличествоСтрок());
НоваяТабЗнач.Заполнить(ТЗ,КолСтрок+1);
Показать полностью

4. plasmoid 06.09.07 18:39 Сейчас в теме
Что то у меня опять ничего не получается:

Док = СоздатьОбъект("Документ.ЗаявкаПокупателя");
ТЗ = СоздатьОбъект("ТаблицаЗначений");
НоваяТабЗнач = СоздатьОбъект("ТаблицаЗначений");
Док.ВыбратьДокументы(НачВыб,КонВыб);
ПервыйРаз = 1;
Пока Док.ПолучитьДокумент() = 1 цикл
Если ПервыйРаз = 1 Тогда
Док.ВыгрузитьТабличнуюЧасть(ТЗ);
ПервыйРаз = 0;
Продолжить;
КонецЕсли;
ТЗ.Выгрузить(НоваяТабЗнач);
КолСтрок=НоваяТабЗнач.КоличествоСтрок();
НоваяТабЗнач.КоличествоСтрок(КолСтрок+ТЗ.КоличествоСтрок());
НоваяТабЗнач.Заполнить(ТЗ,КолСтрок+1);
КонецЦикла;

Не могу правильно сделать перебор документов, выгружает данные только из одного, в данном случае самого первого, остальные не грузит :(
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот