|
Как перебрать строки таблицы значений из результата запроса? | ☑ | ||
---|---|---|---|---|
0
stateg
16.10.13
✎
10:11
|
Имеется запрос:
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ПриходнаяНакладная.Товары.( | Наименование КАК Наименование, | Количество, | ЕдИзм, | Цена, | Сумма | ) КАК Товары |ИЗ | Документ.ПриходнаяНакладная КАК ПриходнаяНакладная"; Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать(); Теперь необходимо каждую строку добавить в табличную часть документа, пытаюсь перебрать строки так: Пока Выборка1.Следующий() Цикл ТабЗнач = Выборка1.Товары; Для НомерСтроки = 0 По ТабЗнач.Количество() - 1 Цикл НоваяСтрока = Объект.ТоварыПН.Добавить(); НоваяСтрока.Накладная = Выборка.Номер; НоваяСтрока.Наименование = ТабЗнач[НомерСтроки].Наименование; КонецЦикла; ТабЗнач.Очистить(); КонецЦикла; В итоге имею ошибку {Документ.ТоварыПриходные.Форма.ФормаДокумента.Форма(36)}: Метод объекта не обнаружен (Количество) Для НомерСтроки = 0 По ТабЗнач.Количество() - 1 Цикл Как правильно реализовать перебор строк таблицы значений? |
|||
1
Godofsin
16.10.13
✎
10:13
|
ТЗ = Запрос.Выполнить().Выгрузить();
|
|||
2
stateg
16.10.13
✎
10:13
|
упс, прошу не обращать внимания на Выборка1 и НоваяСтрока.Накладная = Выборка.Номер;
|
|||
3
mikecool
16.10.13
✎
10:14
|
(2) никто и не думал обращать
|
|||
4
Maxus43
16.10.13
✎
10:19
|
пошто не предлагали не писать так, а сразу к ТЧ запрос делать?
|
|||
5
Sabbath
16.10.13
✎
10:19
|
(0) Для Каждого не катит? Вообще не понял, зачем так выборку делать, если можно вытащить все поля из ТЧ и обходить обычным способом через метод Следущий()
|
|||
6
Sabbath
16.10.13
✎
10:20
|
(4) +1
|
|||
7
stateg
16.10.13
✎
10:30
|
(1) В результате выполнения запроса получается несколько таблиц значений, при этом в ТЗ будут храниться все строки полученных таблиц или как?
|
|||
8
SuperMario
16.10.13
✎
10:30
|
Тебе же Русским по белому написано, что Метод объекта не обнаружен (Количество).
Если ты думаешь, что ТабЗнач = Выборка1.Товары; теперь есть таблица значений или таб. часть документа то ты глубоко ошибаешься! |
|||
9
SuperMario
16.10.13
✎
10:31
|
Научись пользоваться отладчиком ;)
|
|||
10
Sabbath
16.10.13
✎
10:31
|
(0) И еще я проверил (никогда такое не делал), так ты получишь коллекцию колонок. И это вряд ли то, что тебе нужно
|
|||
11
Мэс33
16.10.13
✎
10:32
|
Я бы выгрузил в ТЗ, а из ТЗ - в ТЧ документа.
Или это тоже глупо? |
|||
12
stateg
16.10.13
✎
10:33
|
(11) это я и пытаюсь сделать
|
|||
13
Sabbath
16.10.13
✎
10:34
|
(7) нет, получится коллекция колоноук ТЧ. Несколько ТЗ тебе и не надо получай все в одной выборке, и если прям надо разделять при обходе, то можно обходить по значению поля (12) Если нужно именно из одного документа выгрузить то делай ТЧ.Выгрузить() просто)) Если не из одного получаешь данные, то запрос
|
|||
14
Sabbath
16.10.13
✎
10:36
|
А в запросе тебе надо было выбирать не из Документ.ПриходнаяНакладная, а из Документ.ПриходнаяНакладная.Товары
|
|||
15
hhhh
16.10.13
✎
10:36
|
(12) ну вот же
Запрос.Текст = "ВЫБРАТЬ | ПриходнаяНакладнаяТовары.Наименование КАК Наименование, | Количество, | ЕдИзм, | Цена, | Сумма | |ИЗ | Документ.ПриходнаяНакладнаяТовары КАК ПриходнаяНакладнаяТовары"; |
|||
16
hhhh
16.10.13
✎
10:36
|
|ИЗ
| Документ.ПриходнаяНакладная.Товары КАК ПриходнаяНакладнаяТовары"; |
|||
17
Мэс33
16.10.13
✎
10:37
|
ТЗ = ПриходнаяНакладная.Товары.Выгрузить();
ВашДокумент.ВашаТЧ.Загрузить(ТЗ); |
|||
18
Мэс33
16.10.13
✎
10:37
|
(17) Ну вы поняли - "ПриходнаяНакладная" - тут ваш объект.
|
|||
19
Sabbath
16.10.13
✎
10:38
|
(16) в (15) еще ошибки есть))
|
|||
20
hhhh
16.10.13
✎
10:51
|
(19) больше нет.
|
|||
21
Sabbath
16.10.13
✎
10:52
|
(20) у остальных полей забыл ПриходнаяНакладнаяТовары.
|
|||
22
hhhh
16.10.13
✎
10:52
|
(21) это не нужно вообще-то. Для красоты пишут
|
|||
23
Sabbath
16.10.13
✎
10:53
|
(21) хотя можно и без этого, вроде, просто в одном случае есть, в другом нет
|
|||
24
Sabbath
16.10.13
✎
10:53
|
(22) это если из одной таблицы для красоты
|
|||
25
hhhh
16.10.13
✎
10:55
|
вот так если? Наверно получится
ВЫБРАТЬ | Наименование, Количество, ЕдИзм, Цена, Сумма | |ИЗ | Документ.ПриходнаяНакладнаяТовары гилев так преподает нам в видеоуроках |
|||
26
stateg
16.10.13
✎
11:07
|
(25) в моем случае Товары это табличная часть ПриходнаяНакладная
|
|||
27
anaed
16.10.13
✎
11:17
|
(26) озвучь задачу, будь добр.
|
|||
28
stateg
16.10.13
✎
11:23
|
(27) Создать табличную часть документа, в которую будут входить поля табличных частей из документа ПриходнаяНакладная + дополнительное поле с номером накладной
|
|||
29
anaed
16.10.13
✎
11:29
|
(28) Новая табличная часть полностью совпадает с табличной частью приходной накладной + поле с номером? (вместо поля с номером может быть лучше использовать поле со ссылкой на приходную накладную?)
|
|||
30
stateg
16.10.13
✎
11:40
|
(29) Так точно (можно и поле со ссылкой)
|
|||
31
anaed
16.10.13
✎
11:45
|
запрос = новый запрос;
запрос.текст = "Выбрать ПриходнаяНакладнаяТовары.* Из Документ.ПриходнаяНакладная.Товары как ПриходнаяНакладнаяТовары"; <ПутькНовойТабличнойЧасти>.Загрузить(Запрос.Выполнить.Выгрузить()); |
|||
32
stateg
16.10.13
✎
11:48
|
(31) То что нужно, благодарю :)
Также спасибо всем остальным за советы, буду учиться дальше |
|||
33
Мэс33
16.10.13
✎
12:53
|
А чем этот вариант не подошел?
ТЗ = Объект1.Товары.Выгрузить(); // выгрузка в ТЗ из ТЧ Объект2.Товары.Загрузить(ТЗ); // загрузка в ТЧ из ТЗ И никакого запроса. Минимум усилий. |
|||
34
stateg
16.10.13
✎
15:20
|
(33) Вполне бы подошел, это я сейчас понимаю, а на тот момент когда вы его предложили в моей голове был сложен другой алгоритм действий, я в 1с новичок, не обижайтесь и спасибо за совет.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |