Имя: Пароль:
1C
1С v8
Как получить значение строки табличной части документа
0 arkada
 
01.05.12
05:09
Здравствуйте. Делаю первые шаги в программировании на 8-ке. Возникла проблема следующего характера: Есть журнал документов. Надо перебрать все документы журнала и получить некоторые значения выбранного документа. Реквизиты документа получить удается, а значения табличной части не получается

Вот начало процедуры

Процедура СоздатьПлан(Элемент)
ТекДок = ЖурналыДокументов.Договоры1с.Выбрать();
Пока ТекДок.Следующий() Цикл
Сообщить(ТекДок.Контрагент);
Сообщить(ТекДок.Номер);

а как перебрать все строки выбранного документа и получить значение реквизита выбранной строки???

КонецЦикла ;
КонецПроцедуры

Заранее спасибо
1 golden-pack
 
01.05.12
05:12
ЖурналыДокументов.Договоры1с.Выбрать(); // это жесть

Пока ТекДок.Следующий() Цикл
Сообщить(ТекДок.Контрагент);
Сообщить(ТекДок.Номер);

Для Каждого Стр Из ТекДок.<ИмяТЧ> Цикл
   Сообщить(Стр.<Реквизит>);
КонецЦикла;
2 arkada
 
01.05.12
05:13
а почему жесть, может как-то по-другому надо было?
3 arkada
 
01.05.12
05:23
Вот, что получилось
     
Процедура СоздатьПлан(Элемент)
    ТекДок = ЖурналыДокументов.Договоры1с.Выбрать();
Пока ТекДок.Следующий() Цикл
Сообщить(ТекДок.Контрагент);
Сообщить(ТекДок.Номер);

Для Каждого Стр Из ТекДок.ВидыПрограммНаСопровождении Цикл
   Сообщить(Стр.Наименование);
выдается ошибка "{Документ.ПланОбновлений.Форма.ФормаДокумента.Форма(8)}: Поле объекта не обнаружено (ВидыПрограммНаСопровождении)
Для Каждого Стр Из ТекДок.ВидыПрограммНаСопровождении Цикл"

Что не так?


       
КонецЦикла ;
КонецЦикла ;

КонецПроцедуры
4 catena
 
01.05.12
05:31
(3)Значит у ТекДок нет ТЧ, под названием ВидыПрограммНаСопровождении.
5 arkada
 
01.05.12
05:48
Всё проверил , пришел к выводу, что получить можно только те реквизиты, для которых созданы графы в журнале документов, а если нет граф для реквизитов документа в журнале, то их и получить нельзя, не говоря уже о табличной части документа. Может как по-другому они обрабатываются???
6 arkada
 
01.05.12
05:57
Я понял. В моём случае надо было делать так

ТекДок = Документы.Договор1С.Выбрать();
а не
ТекДок = ЖурналыДокументов.Договоры1с.Выбрать();

Спасибо всем, кто помогал
7 Капитан О
 
01.05.12
07:37
никто ещё не сказал, что есть запросы?
8 Мимохожий Однако
 
01.05.12
08:20
(7) Запросы - для ботаников! )))
9 zak555
 
01.05.12
10:47
(6) а если в журнале Договоры1с появится ещё один документ ? =)
10 moshefoo
 
01.05.12
10:56
Запросы работают  быстрее  с большим объемом данных и ботаники тут не причем,

текДок = Документы.Договор.Выбрать();
ТекДок.Получить();
СтрокаТабчасти = ТекДок.Товары.ТекущиеДанные;

Для каждого из ТекДок.Товары Цикл

Сообщить(СтркоаТабЧасти.Наименвоание+СтркоаТабЧасти.ВидДоговора);

КонецЦикла;
11 zak555
 
01.05.12
10:59
(10) что такое получить ?
12 moshefoo
 
01.05.12
11:08
ТекДок.ПолучитьОбъект()
13 moshefoo
 
01.05.12
11:09
получаешь конкретный объект - документ и делаешь цикл к таб части  перебераешь строки  и вытаскиваешь значения  (наименвоание,вид договора , цена,сумаа и тд)
14 moshefoo
 
01.05.12
11:10
Пока конкретный документ не получишь методом получитьОбъект    . про таб части забудь))
15 moshefoo
 
01.05.12
11:12
когда делаешь выборку то указываешь конкретный вид документа

Документы.Договор1С.Выбрать()

в данном случае это Договор1  .а если в журнале появетсья еще один вид документов то он в выборку никак не попадет
придетсья тогда еще одну выборку делать  с указанием того вида документа,

но если в базе документов более 1000   тогда лучше все делать запросом
16 Рэйв
 
01.05.12
11:13
(14)Можно и ссылку прочитать.Необязательно объект получать.
17 moshefoo
 
01.05.12
11:18
обязательно .если хочешь .что то делать с таб части

по ссылке лучше получать реквизиты шапки  .но по идее можно и таб часть выбрать
18 Мимохожий Однако
 
01.05.12
11:22
(10)2 и 3 строка лишние.
19 Рэйв
 
01.05.12
11:43
(17)Не факт, что ТС этого хочет:-)...
20 sergeante
 
01.05.12
15:17
(17) по условию в (0) этого не было. Не придумывайте лишнего.
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший