Вход | Регистрация

1С:Предприятие ::

Метки: 

v7: Простой перебор реквизитов табличной части документа

Я
   PiotrLoginov
 
24.12.12 - 08:49
Здравствуйте всем. Подскажите, пожалуйста. Есть код:

Приходники = СоздатьОбъект("Документ.ПриходнаяНакладная");
Приходники.ВыбратьДокументы();
Пока Приходники.ПолучитьДокумент() > 0 Цикл
    Если Приходники.ТекущийДокумент().ПризнакНакладной = Перечисление.ПризнПрихНакл.Закупка Тогда
        Сообщить("начата обработка следующего документа");
       // ну здесь обрабатывается шапка,
 
       //без проблем 
 
       //............
 
        
        ТЗ = СоздатьОбъект("ТаблицаЗначений");
        ТЗ.НоваяКолонка("Номенклатура");
        ТЗ.НоваяКолонка("КоличествоУпаковок");
        ТЗ.НоваяКолонка("Количество");
        ТЗ.НоваяКолонка("Цена");
        ТЗ.НоваяКолонка("Сумма");
        ТЗ.НоваяКолонка("СтавкаНДС");
        ТЗ.НоваяКолонка("СуммаНДС");
        ТЗ.НоваяКолонка("СуммаСНДС");
        ТЗ.НоваяКолонка("СуммаВзаиморасчетов");
            
        Сообщить("начата обработка табличной части");
            
        Приходники.ТекущийДокумент().ВыбратьСтроки();
        Пока Приходники.ТекущийДокумент().ПолучитьСтроку() = 1 Цикл// крутится без конца
 
            ТЗ.НоваяСтрока();
            ТЗ.Номенклатура = Приходники.ТекущийДокумент().Товар;
            ТЗ.КоличествоУпаковок = Приходники.ТекущийДокумент().Количество;
            ТЗ.Количество = Приходники.ТекущийДокумент().Количество;
            ТЗ.Цена = Приходники.ТекущийДокумент().Цена;
            ТЗ.Сумма = Приходники.ТекущийДокумент().Сумма;
            ТЗ.СтавкаНДС = Приходники.ТекущийДокумент().СтавкаНДС;
            ТЗ.СуммаНДС = Приходники.ТекущийДокумент().НДС;
            ТЗ.СуммаСНДС = Приходники.ТекущийДокумент().Всего;
            ТЗ.СуммаВзаиморасчетов = Приходники.ТекущийДокумент().Всего;
        КонецЦикла;
       //дальше по идее должна быть обработка ТЗ,
 
       //но до нее дело не доходит
 
        Сообщить("____ с этим документом закончили");
    КонецЕсли;
КонецЦикла;

Пока идет обработка шапки текущего документа, все хорошо. А вот после начала цикла перебора строк табличной части обработка как будто зависает - цикл крутится без остановки. То ли я к реквизитам строки обращаюсь неверно, то ли цикл организовал неправильно...

Заранее спасибо за помощь.
 
 
   1Сергей
 
1 - 24.12.12 - 08:51
а нафига ты туда ТекущийДокумент() впендюрил?
   Aleksey
 
2 - 24.12.12 - 08:53
А зачем в цикле создавать ТЗ?
   1Сергей
 
3 - 24.12.12 - 08:54
(2) +1 тоже хороший вопрос
   KishMish
 
4 - 24.12.12 - 08:54
(1) прав
Приходники.ВыбратьСтроки();
Пока Приходники.ПолучитьСтроку() = 1 Цикл 

возможно при получении каждый раз текущего документа сбивается выборка
   Aleksey
 
5 - 24.12.12 - 08:55
Не проще ли
ВремТЗ="";
Приходники.ВыгрузитьТабличнуюЧасть(ВремТЗ,"Номенклатура,Количество,Цена,Сумма,СтавкаНДС,СуммаНДС,СуммаСНДС,СуммаВзаиморасчетов");
   Aleksey
 
6 - 24.12.12 - 08:56
И почему то мне кажется что нет реквизита Всего, он динамически вычисляется
   PiotrLoginov
 
7 - 24.12.12 - 09:08
(1) Ну .. я же арганизовал цикл перебора приходных накладных, вот и полагал, что раз получаю табличную часть текущего выбранного документа, обращаюсь к нему...

(2) Мне надо для каждой выбранной приходной накладной создать таблицу значений на основе строк табличной части.

(4) пробую...

(5) Наверное проще.. буду иметь ввиду на будущее.

(6) Это в шапке вроде бы "Всего" не существует, а вычисляется - сумма по определенному реквизиту табличной части
   PiotrLoginov
 
8 - 24.12.12 - 09:08
* организовал
   Aleksey
 
9 - 24.12.12 - 09:09
(7) В шапке нет всего, как и в ТЧ
В шапке есть реквизит СуммаВзаиморасчетов
   1Сергей
 
10 - 24.12.12 - 09:14
Приходники = СоздатьОбъект("Документ.ПриходнаяНакладная");
Приходники.ВыбратьДокументы();
Пока Приходники.ПолучитьДокумент() > 0 Цикл
    Если Приходники.ПризнакНакладной = Перечисление.ПризнПрихНакл.Закупка Тогда
        Сообщить("начата обработка следующего документа");
       // ну здесь обрабатывается шапка,
 
 
       //без проблем 
 
 
       //............
 
 
        
        ТЗ = СоздатьОбъект("ТаблицаЗначений");
        ТЗ.НоваяКолонка("Номенклатура");
        ТЗ.НоваяКолонка("КоличествоУпаковок");
        ТЗ.НоваяКолонка("Количество");
        ТЗ.НоваяКолонка("Цена");
        ТЗ.НоваяКолонка("Сумма");
        ТЗ.НоваяКолонка("СтавкаНДС");
        ТЗ.НоваяКолонка("СуммаНДС");
        ТЗ.НоваяКолонка("СуммаСНДС");
        ТЗ.НоваяКолонка("СуммаВзаиморасчетов");
            
        Сообщить("начата обработка табличной части");
            
        Приходники.ВыбратьСтроки();
        Пока Приходники.ПолучитьСтроку() = 1 Цикл// крутится без конца
 
 
            ТЗ.НоваяСтрока();
            ТЗ.Номенклатура = Приходники.Товар;
            ТЗ.КоличествоУпаковок = Приходники.Количество;
            ТЗ.Количество = Приходники.Количество;
            ТЗ.Цена = Приходники.Цена;
            ТЗ.Сумма = Приходники.Сумма;
            ТЗ.СтавкаНДС = Приходники.СтавкаНДС;
            ТЗ.СуммаНДС = Приходники.НДС;
            ТЗ.СуммаСНДС = Приходники.Всего;
            ТЗ.СуммаВзаиморасчетов = Приходники.Всего;
        КонецЦикла;
       //дальше по идее должна быть обработка ТЗ,
 
 
       //но до нее дело не доходит
 
 
        Сообщить("____ с этим документом закончили");
    КонецЕсли;
КонецЦикла;
 
 Рекламное место пустует
   1Сергей
 
11 - 24.12.12 - 09:15
ТекущийДокумент() - возвращает ссылку, а тебе нужен объект
   PiotrLoginov
 
12 - 24.12.12 - 09:16
Да. Убрал ТекущийДокумент() - и заработало. Спасибо всем Большое. Не совсем правда понимаю логику обращения к реквизитам табл. части ... Ведь к реквизитам шапки-то я обращаюсь через ТекущийДокумент() - и все работает! Ну да ладно..

(9) "В шапке нет всего..."  - ну да, я так и написал.
"...как и в ТЧ" - в ТЧ вроде есть.  сейчас еще раз проверю.

(11) Аа-а.. теперь понял.
   Aleksey
 
13 - 24.12.12 - 09:20
(12) хз как в твоей нетленки, в типовых нет
   PiotrLoginov
 
14 - 24.12.12 - 09:29
да, беру из переписанной конфы, не сказал, пардон.

Реквизит есть. Комментарий: "Сумма поступления с налогами". Тип значения: Число. Длина: 15. Точность: 2.
Конфа: ТиС дописанная.

Вопрос темы раскрыт полностью. Спасибо еще раз форумчанам - в этот раз помогли наиоперативнейше.

P.S. Всех с наступающими праздниками.


Список тем форума
Рекламное место пустует Рекламное место пустует
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует