Имя: Пароль:
1C
1С v8
Вопрос по табличной части документа
0 memogolik
 
02.04.12
18:12
Есть запрос, который возвращает список документов
я хочу в табличной части этих документов увеличить суммы вдвое. Вот мой код.


       Выборка = Запрос.Выполнить().Выбрать();
   Пока Выборка.Следующий() Цикл
       Объект = Выборка.Ссылка.ПолучитьОбъект();
       Колич = Выборка.Товары.Количество;
       Для счетчик=0 По Колич Цикл
             Строка = Объект.Товары.Получить(счетчик);
           Строка.Сумма=Строка.Сумма*Коэффициент;        
       КонецЦикла;
   КонецЦикла;

В синтакс помощнике есть метод "Количество" для табличной части документа. Но в моем коду выдается ошибки именно на эту строку:
Колич = Выборка.Товары.Количество; //в документе есть табличная часть под названием "Товары". Не подскажете в чем может быть ошибка?
Заранее спасибо за ответ.
1 Господин ПЖ
 
02.04.12
18:12
код - г.вно...
2 memogolik
 
02.04.12
18:13
(1) спасибо за конструктивизм. )
3 rbcvg
 
02.04.12
18:14
Выборка = табличная часть под названием "Товары"?
4 memogolik
 
02.04.12
18:17
Выборка содержит список документов, у которых есть табличная часть с названием "Товары"
5 unregistered
 
02.04.12
18:18
Колич = Объект.Товары.Количество();

Если в запросе к документам был запрос к вложенной табличной части Товары, то

Колич = Выборка.Товары.Выбрать().Количество();
6 unregistered
 
02.04.12
18:18
+ к (5), но присоединяюсь к (1)!
7 rbcvg
 
02.04.12
18:18
(4) еще есть вопросы?
8 memogolik
 
02.04.12
18:21
Запрос = Новый Запрос();
   Запрос.Текст="
   |ВЫБРАТЬ Ссылка
   |ИЗ
   |Документ.ОприходованиеТоваров
   |ГДЕ
   |    Ссылка.Дата<=&КонПериода И
   |    Ссылка.Дата>=&НачПериода И
   |    Ссылка.ВидОперации=&ВыбВидОперации И
   |   Ссылка.Проведен
   |СГРУППИРОВАТЬ ПО Ссылка
   |";
   Запрос.УстановитьПараметр("ВыбВидОперации",ВыбВидОперации);
   Запрос.УстановитьПараметр("КонПериода",КонПериода);
   Запрос.УстановитьПараметр("НачПериода",НачПериода);
   Выборка = Запрос.Выполнить().Выбрать();
   Пока Выборка.Следующий() Цикл
       Объект = Выборка.Ссылка.ПолучитьОбъект();
       //Колич = Объект.Товары.Количество;
       Колич = Выборка.Товары.Выбрать().Количество();
       Для счетчик=0 По Колич Цикл
             Строка = Объект.Товары.Получить(счетчик);
           Строка.Сумма=Строка.Сумма*Коэффициент;        
       КонецЦикла;
   КонецЦикла;

все равно не работает(
9 memogolik
 
02.04.12
18:23
(6) а как написать чтобы не г@вно было. Просто первая обработка табличной части в восьмерке.
10 Шапокляк
 
02.04.12
18:24
Ясное дело не работает.
      Объект = Выборка.Ссылка.ПолучитьОбъект();
Для Каждого Строка Из Объект.Товары Цикл
Строка.Сумма=......
КонецЦикла;
Объект.Записать(РежимЗаписиДокумента.Проведение);
11 unregistered
 
02.04.12
18:25
(8) Я по-моему русским языком написал: ЕСЛИ В ЗАПРОСЕ К ДОКУМЕНТАМ БЫЛ ЗАПРОС К ВЛОЖЕННОЙ ТАБЛИЧНОЙ ЧАСТИ ТОВАРЫ

Где у тебя в тексте запрос к табличной части Товары? Его нет.

Поэтому используй

Колич = Объект.Товары.Количество();
12 Шапокляк
 
02.04.12
18:28
(11) А ему зачем строки считать и потом обращаться по индексу? Чтобы прочувствовать, что с 0 по Колич Цикл не отработает? Пусть сразу строки перебирает, так менеее г@внокодисто получится
13 memogolik
 
02.04.12
18:29
Всем спасибо, учту на будущее, спасибо за критику)