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

1С:Предприятие :: 1С:Предприятие 7.7 и ранее

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

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. Всех с наступающими праздниками.

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