Имя: Пароль:
1C
1С v8
Простой вопрос по программному созданию табличной части.
0 memogolik
 
23.01.12
15:01
К примеру есть запрос, который возвращает номенклатуру и количество товара. Задача записать это все в документ СписаниеТоваров
Вот что получилось. Для отладки отчета я сначала записываю результаты в таблицу значений, потом пытаюсь записать результат в документ.

Процедура КнопкаВыполнитьНажатие(Кнопка)
   // Вставить содержимое обработчика.
   Запрос = Новый Запрос;
   Запрос.Текст = "
   |ВЫБРАТЬ
   |    Номенклатура Как Товар,
   |    Сумма(Коэффициент*Количество) КАК ПолноеКоличество
   |    
   |ИЗ
   |    Документ.ПоступлениеТоваровУслуг.Товары
   |ГДЕ
   |    Склад = &ВыбСклад и
   |    Ссылка.Дата<=&ВыбКонПериода и
   |    Ссылка.Дата>=&ВыбНачПериода и
   |    Номенклатура.ВидНоменклатуры = &ВыбВидыНоменклатуры
   |СГРУППИРОВАТЬ ПО
   |    Номенклатура
   |УПОРЯДОЧИТЬ ПО
   |    Номенклатура.Наименование
   |";
   Запрос.УстановитьПараметр("ВыбСклад", ВыбСклад);
   Запрос.УстановитьПараметр("ВыбВидыНоменклатуры", ВыбВидыНоменклатуры);
   Запрос.УстановитьПараметр("ВыбНачПериода", ВыбНачПериода);
   Запрос.УстановитьПараметр("ВыбКонПериода", ВыбКонПериода);
   Результат = Запрос.Выполнить().Выгрузить();
   ЭлементыФормы.ТЗ.Значение = Результат;
   Элементыформы.ТЗ.СоздатьКолонки();
   Результат = Запрос.Выполнить().Выбрать();
   ДокСписание = Документы.СписаниеТоваров.СоздатьДокумент();
   ВыбОрганизация = Справочники.Организации.НайтиПоКоду("ЦБ0000013");
   ДокСписание.Организация = ВыбОрганизация;
   ДокСписание.Склад = ВыбСклад;
   ДокСписание.Дата = ТекущаяДата();
   Пока Результат.Следующий() Цикл
       ДокСписание.Товары.Добавить();
       ДокСписание.Товары.Номенклатура =Результат.Товар;
   КонецЦикла;
   ДокСписание.Записать();
КонецПроцедуры

Таблицу значений обработка заполняет корректно, а вот с документом почему то ничего не получается (
В цикле (Пока Результат.Следующий() Цикл) данные через точку для "ДокСписание.Товары." и "Результат.Товар." недоступны.
Ругается соответственно так:
{Форма.Форма.Форма(37)}: Поле объекта не обнаружено (Номенклатура)
       ДокСписание.Товары.Номенклатура =Результат.Номенклатура;

Заранее спасибо за помощь.
1 Wobland
 
23.01.12
15:02
(0) какая строка Результата имеется в виду в 37й строке? код не читал
2 ДенисЧ
 
23.01.12
15:02
стр - докСписание.Товары.Добавть();
стр.Номенклатура = Результат.Товар;

Почитай мурзилку...
3 Wobland
 
23.01.12
15:03
(1) у меня обычно Результатом ТЗ зовётся...
(0) НоваяСтрока=Док.Товары.Добавить();
НоваяСтрока.Номенклатура=
4 memogolik
 
23.01.12
15:04
(2) можно поподробнее? в коде   ДокСписание.Товары.Добавить() есть
5 Wobland
 
23.01.12
15:04
(4) эта конструкция _возвращает_ тебе добавляемую строку
6 salvator
 
23.01.12
15:04
(4) Читай внимательнее 2-ю строчку в (3) и сравнивай с тем, что у тебя
7 Ненавижу 1С
 
гуру
23.01.12
15:05
НоваяСтрока = ДокСписание.Товары.Добавить();
НоваяСтрока.Номенклатура = Результат.Товар;
8 memogolik
 
23.01.12
15:06
(3) (7)
Спасибо братцы, опять помогли начинающему восьмерочнику! )