![]() |
![]() |
![]() |
|
v7: Простой перебор реквизитов табличной части документа | ☑ | ||
---|---|---|---|---|
0
PiotrLoginov
24.12.12
✎
08:49
|
Здравствуйте всем. Подскажите, пожалуйста. Есть код:
Приходники = СоздатьОбъект("Документ.ПриходнаяНакладная"); Приходники.ВыбратьДокументы(); Пока Приходники.ПолучитьДокумент() > 0 Цикл Если Приходники.ТекущийДокумент().ПризнакНакладной = Перечисление.ПризнПрихНакл.Закупка Тогда Сообщить("начата обработка следующего документа"); // ну здесь обрабатывается шапка, //без проблем //............ ТЗ = СоздатьОбъект("ТаблицаЗначений"); ТЗ.НоваяКолонка("Номенклатура"); ТЗ.НоваяКолонка("КоличествоУпаковок"); ТЗ.НоваяКолонка("Количество"); ТЗ.НоваяКолонка("Цена"); ТЗ.НоваяКолонка("Сумма"); ТЗ.НоваяКолонка("СтавкаНДС"); ТЗ.НоваяКолонка("СуммаНДС"); ТЗ.НоваяКолонка("СуммаСНДС"); ТЗ.НоваяКолонка("СуммаВзаиморасчетов"); Сообщить("начата обработка табличной части"); Приходники.ТекущийДокумент().ВыбратьСтроки(); Пока Приходники.ТекущийДокумент().ПолучитьСтроку() = 1 Цикл // крутится без конца ТЗ.НоваяСтрока(); ТЗ.Номенклатура = Приходники.ТекущийДокумент().Товар; ТЗ.КоличествоУпаковок = Приходники.ТекущийДокумент().Количество; ТЗ.Количество = Приходники.ТекущийДокумент().Количество; ТЗ.Цена = Приходники.ТекущийДокумент().Цена; ТЗ.Сумма = Приходники.ТекущийДокумент().Сумма; ТЗ.СтавкаНДС = Приходники.ТекущийДокумент().СтавкаНДС; ТЗ.СуммаНДС = Приходники.ТекущийДокумент().НДС; ТЗ.СуммаСНДС = Приходники.ТекущийДокумент().Всего; ТЗ.СуммаВзаиморасчетов = Приходники.ТекущийДокумент().Всего; КонецЦикла; //дальше по идее должна быть обработка ТЗ, //но до нее дело не доходит Сообщить("____ с этим документом закончили"); КонецЕсли; КонецЦикла; Пока идет обработка шапки текущего документа, все хорошо. А вот после начала цикла перебора строк табличной части обработка как будто зависает - цикл крутится без остановки. То ли я к реквизитам строки обращаюсь неверно, то ли цикл организовал неправильно... Заранее спасибо за помощь. |
|||
1
1Сергей
24.12.12
✎
08:51
|
а нафига ты туда ТекущийДокумент() впендюрил?
|
|||
2
Aleksey
24.12.12
✎
08:53
|
А зачем в цикле создавать ТЗ?
|
|||
3
1Сергей
24.12.12
✎
08:54
|
(2) +1 тоже хороший вопрос
|
|||
4
KishMish
24.12.12
✎
08:54
|
(1) прав
Приходники.ВыбратьСтроки(); Пока Приходники.ПолучитьСтроку() = 1 Цикл возможно при получении каждый раз текущего документа сбивается выборка |
|||
5
Aleksey
24.12.12
✎
08:55
|
Не проще ли
ВремТЗ=""; Приходники.ВыгрузитьТабличнуюЧасть(ВремТЗ,"Номенклатура,Количество,Цена,Сумма,СтавкаНДС,СуммаНДС,СуммаСНДС,СуммаВзаиморасчетов"); |
|||
6
Aleksey
24.12.12
✎
08:56
|
И почему то мне кажется что нет реквизита Всего, он динамически вычисляется
|
|||
7
PiotrLoginov
24.12.12
✎
09:08
|
(1) Ну .. я же арганизовал цикл перебора приходных накладных, вот и полагал, что раз получаю табличную часть текущего выбранного документа, обращаюсь к нему...
(2) Мне надо для каждой выбранной приходной накладной создать таблицу значений на основе строк табличной части. (4) пробую... (5) Наверное проще.. буду иметь ввиду на будущее. (6) Это в шапке вроде бы "Всего" не существует, а вычисляется - сумма по определенному реквизиту табличной части |
|||
8
PiotrLoginov
24.12.12
✎
09:08
|
* организовал
|
|||
9
Aleksey
24.12.12
✎
09:09
|
(7) В шапке нет всего, как и в ТЧ
В шапке есть реквизит СуммаВзаиморасчетов |
|||
10
1Сергей
24.12.12
✎
09:14
|
Приходники = СоздатьОбъект("Документ.ПриходнаяНакладная");
Приходники.ВыбратьДокументы(); Пока Приходники.ПолучитьДокумент() > 0 Цикл Если Приходники.ПризнакНакладной = Перечисление.ПризнПрихНакл.Закупка Тогда Сообщить("начата обработка следующего документа"); // ну здесь обрабатывается шапка, //без проблем //............ ТЗ = СоздатьОбъект("ТаблицаЗначений"); ТЗ.НоваяКолонка("Номенклатура"); ТЗ.НоваяКолонка("КоличествоУпаковок"); ТЗ.НоваяКолонка("Количество"); ТЗ.НоваяКолонка("Цена"); ТЗ.НоваяКолонка("Сумма"); ТЗ.НоваяКолонка("СтавкаНДС"); ТЗ.НоваяКолонка("СуммаНДС"); ТЗ.НоваяКолонка("СуммаСНДС"); ТЗ.НоваяКолонка("СуммаВзаиморасчетов"); Сообщить("начата обработка табличной части"); Приходники.ВыбратьСтроки(); Пока Приходники.ПолучитьСтроку() = 1 Цикл // крутится без конца ТЗ.НоваяСтрока(); ТЗ.Номенклатура = Приходники.Товар; ТЗ.КоличествоУпаковок = Приходники.Количество; ТЗ.Количество = Приходники.Количество; ТЗ.Цена = Приходники.Цена; ТЗ.Сумма = Приходники.Сумма; ТЗ.СтавкаНДС = Приходники.СтавкаНДС; ТЗ.СуммаНДС = Приходники.НДС; ТЗ.СуммаСНДС = Приходники.Всего; ТЗ.СуммаВзаиморасчетов = Приходники.Всего; КонецЦикла; //дальше по идее должна быть обработка ТЗ, //но до нее дело не доходит Сообщить("____ с этим документом закончили"); КонецЕсли; КонецЦикла; |
|||
11
1Сергей
24.12.12
✎
09:15
|
ТекущийДокумент() - возвращает ссылку, а тебе нужен объект
|
|||
12
PiotrLoginov
24.12.12
✎
09:16
|
Да. Убрал ТекущийДокумент() - и заработало. Спасибо всем Большое. Не совсем правда понимаю логику обращения к реквизитам табл. части ... Ведь к реквизитам шапки-то я обращаюсь через ТекущийДокумент() - и все работает! Ну да ладно..
(9) "В шапке нет всего..." - ну да, я так и написал. "...как и в ТЧ" - в ТЧ вроде есть. сейчас еще раз проверю. (11) Аа-а.. теперь понял. |
|||
13
Aleksey
24.12.12
✎
09:20
|
(12) хз как в твоей нетленки, в типовых нет
|
|||
14
PiotrLoginov
24.12.12
✎
09:29
|
да, беру из переписанной конфы, не сказал, пардон.
Реквизит есть. Комментарий: "Сумма поступления с налогами". Тип значения: Число. Длина: 15. Точность: 2. Конфа: ТиС дописанная. Вопрос темы раскрыт полностью. Спасибо еще раз форумчанам - в этот раз помогли наиоперативнейше. P.S. Всех с наступающими праздниками. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |