Всем доброго времени суток.
Подскажите пожалуйста в чем ошибка, необходимо сделать обработку которая выбирала бы документы "ЗаявкаПокупателя" за определенный период, и делала бы на их основе один, в котором собиралась бы вся номенклатура и прочее из всех документов вот кусок кода:
// создаем документ ЗаявкаПокупателя и Таблицу значений
Док = СоздатьОбъект("Документ.ЗаявкаПокупателя");
ТЗ = СоздатьОбъект("ТаблицаЗначений");
НоваяТабЗнач = СоздатьОбъект("ТаблицаЗначений");
Док.ВыбратьДокументы(НачВыб,КонВыб);
Пока Док.ПолучитьДокумент() = 1 цикл
Док.ВыгрузитьТабличнуюЧасть(ТЗ);
НоваяТабЗнач.Заполнить(ТЗ);
КонецЦикла;
ЗаявПокуп = СоздатьОбъект("Документ.ЗаявкаПокупателя");
ЗаявПокуп.Новый();
ЗаявПокуп.ДатаДок = ТекущаяДата();
НоваяТабЗнач.ВыбратьСтроки();
Пока НоваяТабЗнач.ПолучитьСтроку() = 1 цикл
ЗаявПокуп.НоваяСтрока();
ЗаявПокуп.Номенклатура = НоваяТабЗнач.Номенклатура;
ЗаявПокуп.Количество = НоваяТабЗнач.Количество;
КонецЦикла;
ЗаявПокуп.Записать();
При выполнении выдается ошибка:
НоваяТабЗнач.Заполнить(ТЗ);
{C:\OBR_ZAIAV.ERT(10)}: Номер за пределами значения!
За ранее всем большое спасибо.
Подскажите пожалуйста в чем ошибка, необходимо сделать обработку которая выбирала бы документы "ЗаявкаПокупателя" за определенный период, и делала бы на их основе один, в котором собиралась бы вся номенклатура и прочее из всех документов вот кусок кода:
// создаем документ ЗаявкаПокупателя и Таблицу значений
Док = СоздатьОбъект("Документ.ЗаявкаПокупателя");
ТЗ = СоздатьОбъект("ТаблицаЗначений");
НоваяТабЗнач = СоздатьОбъект("ТаблицаЗначений");
Док.ВыбратьДокументы(НачВыб,КонВыб);
Пока Док.ПолучитьДокумент() = 1 цикл
Док.ВыгрузитьТабличнуюЧасть(ТЗ);
НоваяТабЗнач.Заполнить(ТЗ);
КонецЦикла;
ЗаявПокуп = СоздатьОбъект("Документ.ЗаявкаПокупателя");
ЗаявПокуп.Новый();
ЗаявПокуп.ДатаДок = ТекущаяДата();
НоваяТабЗнач.ВыбратьСтроки();
Пока НоваяТабЗнач.ПолучитьСтроку() = 1 цикл
ЗаявПокуп.НоваяСтрока();
ЗаявПокуп.Номенклатура = НоваяТабЗнач.Номенклатура;
ЗаявПокуп.Количество = НоваяТабЗнач.Количество;
КонецЦикла;
ЗаявПокуп.Записать();
При выполнении выдается ошибка:
НоваяТабЗнач.Заполнить(ТЗ);
{C:\OBR_ZAIAV.ERT(10)}: Номер за пределами значения!
За ранее всем большое спасибо.
По теме из базы знаний
- Печать таблицы значений в 1С 7.7 при отладке
- Как передать Таблицу Значений в Динамический Список?
- Консоль кода с поддержкой объявления процедур и функций, с дополнительными функциями отслеживания и вывода значений
- Получение произвольной таблицы значений из файла xlsx
- Доработка стандартного модуля обмена от Битрикс для выгрузки произвольных таблиц значений или запросов в Highload-блоки
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
ИМХО метод Заполнить() не подходит для объединения таблиц значений. Нужно пользовтаься другими способами.
Кстати, вместо кода:
Можно написать:
ЗаявПокуп.ЗагрузитьТабличнуюЧасть(НоваяТабЗнач);
Кстати, вместо кода:
Код |
---|
НоваяТабЗнач.ВыбратьСтроки();
Пока НоваяТабЗнач.ПолучитьСтроку() = 1 цикл
ЗаявПокуп.НоваяСтрока();
ЗаявПокуп.Номенклатура = НоваяТабЗнач.Номенклатура;
ЗаявПокуп.Количество = НоваяТабЗнач.Количество;
КонецЦикла
Показать полностью |
Можно написать:
ЗаявПокуп.ЗагрузитьТабличнуюЧасть(НоваяТабЗнач);
Заполнить() позволяет объединять таблицы значений с одинаковыми колонками. Только в заполняемой таблице должно быть столько пустых строк, сколько в присоединяемой. И структура колонок должна быть создана. Т.е. надо так:
Для первой таб. части:
Для последующих таб. частей:
Для первой таб. части:
Код |
---|
ТЗ.Выгрузить(НоваяТабЗнач); Показать полностью |
Для последующих таб. частей:
Код |
---|
КолСтрок=НоваяТабЗнач.КоличествоСтрок();
НоваяТабЗнач.КоличествоСтрок(КолСтрок+ТЗ.КоличествоСтрок());
НоваяТабЗнач.Заполнить(ТЗ,КолСтрок+1);
Показать полностью |
Что то у меня опять ничего не получается:
Док = СоздатьОбъект("Документ.ЗаявкаПокупателя");
ТЗ = СоздатьОбъект("ТаблицаЗначений");
НоваяТабЗнач = СоздатьОбъект("ТаблицаЗначений");
Док.ВыбратьДокументы(НачВыб,КонВыб);
ПервыйРаз = 1;
Пока Док.ПолучитьДокумент() = 1 цикл
Если ПервыйРаз = 1 Тогда
Док.ВыгрузитьТабличнуюЧасть(ТЗ);
ПервыйРаз = 0;
Продолжить;
КонецЕсли;
ТЗ.Выгрузить(НоваяТабЗнач);
КолСтрок=НоваяТабЗнач.КоличествоСтрок();
НоваяТабЗнач.КоличествоСтрок(КолСтрок+ТЗ.КоличествоСтрок());
НоваяТабЗнач.Заполнить(ТЗ,КолСтрок+1);
КонецЦикла;
Не могу правильно сделать перебор документов, выгружает данные только из одного, в данном случае самого первого, остальные не грузит :(
Док = СоздатьОбъект("Документ.ЗаявкаПокупателя");
ТЗ = СоздатьОбъект("ТаблицаЗначений");
НоваяТабЗнач = СоздатьОбъект("ТаблицаЗначений");
Док.ВыбратьДокументы(НачВыб,КонВыб);
ПервыйРаз = 1;
Пока Док.ПолучитьДокумент() = 1 цикл
Если ПервыйРаз = 1 Тогда
Док.ВыгрузитьТабличнуюЧасть(ТЗ);
ПервыйРаз = 0;
Продолжить;
КонецЕсли;
ТЗ.Выгрузить(НоваяТабЗнач);
КолСтрок=НоваяТабЗнач.КоличествоСтрок();
НоваяТабЗнач.КоличествоСтрок(КолСтрок+ТЗ.КоличествоСтрок());
НоваяТабЗнач.Заполнить(ТЗ,КолСтрок+1);
КонецЦикла;
Не могу правильно сделать перебор документов, выгружает данные только из одного, в данном случае самого первого, остальные не грузит :(
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот