Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Получить данные из табличной части при выборке
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 7.7
Sirius83
Доброго времени всем!
1C7.7 (7.70.027) Бухгатерия+производство+торговля+зарплата
Собственно говоря функция рабочая но есть одно - но, ТМЦ имеет реквизит Цена1 - ЦенаБезПДВ, если в документе цены не меняли вручную все ОК. получаем верную информацию. Но есть случаи когда в Док. ЦенаБезПДВ корретируется вручную (может существенно отличатся от той что в реквизите), полученная таким образом информация не будет верна. Помогите ЦенуБезПДВ для ТМЦ брать из Табличной части Докуиента (самый правильный вариант) на мой взляд.

необходимо зарегистрироваться для просмотра ссылки
Функция ПолучитьВыборкуРасходОптЦена(ТМЦ)
    
    СуммаБПДВ = 0;
    
    Опер = СоздатьОбъект("Операция");
    Опер.ВыбратьОперации(НачДата, КонДата);
    
    Пока Опер.ПолучитьОперацию() = 1 Цикл
        
        Док = Опер.Документ;
        Если (Док.Вид() <> "РасходнаяНакладная") И (Док.Вид() <> "ВозвратнаяНакладная") Тогда
            Продолжить;
        КонецЕсли;
        
        Контрагент = Док.Клиент;
        
        Опер.ВыбратьПроводки();
        Пока Опер.ПолучитьПроводку() = 1 Цикл
        
            Если Опер.НашаФирма <> ВыбФирма Тогда
                Продолжить;
            КонецЕсли;
            
            // расход
            Если (Опер.Кредит.Счет = СчетПоКоду("281")) И
                (Опер.Кредит.Субконто(ВидыСубконто.ТМЦ) = ТМЦ) И
                (Опер.Дебет.Счет = СчетПоКоду("902")) Тогда
                //Нужно получить сумму    БезПДВ (Продажную!!!)
                //СуммаБПДВ = СуммаБПДВ + Опер.Сумма; //Получаем себестоимость
                СуммаБПДВ = СуммаБПДВ + Опер.Документ.Операция.Кредит.ТМЦ.Цена1*Опер.Количество; // цену получаем из реквизита ТМЦ - цена (БезПДВ), годится если в документе цены не меняли вручную.
                //Но если случаи когда в Док. ценаБезПДВ корретируется вручную (может существенно отличатся от той что в реквизите), нужно Цену БезПДВ брать из Табличной части (самый правильный вариант).
            КонецЕсли;
            
        КонецЦикла;
    КонецЦикла;
    
    Возврат СуммаБПДВ;
    
КонецФункции


Пробовал делать так:
необходимо зарегистрироваться для просмотра ссылки
Функция ПолучитьВыборкуРасходОптЦена(ТМЦ)
    
    СуммаБПДВ = 0;
    
    Опер = СоздатьОбъект("Операция");
    Опер.ВыбратьОперации(НачДата, КонДата);
    
    Пока Опер.ПолучитьОперацию() = 1 Цикл
        
        Док = Опер.Документ;
        Если (Док.Вид() <> "РасходнаяНакладная") И (Док.Вид() <> "ВозвратнаяНакладная") Тогда
            Продолжить;
        КонецЕсли;
        
        Контрагент = Док.Клиент;
        
        Опер.ВыбратьПроводки();
        Пока Опер.ПолучитьПроводку() = 1 Цикл
        
            Если Опер.НашаФирма <> ВыбФирма Тогда
                Продолжить;
            КонецЕсли;
            //*******************
            ТабДок = Док.ТекущийДокумент();
            ТабДок.ВыбратьСтроки();
            Пока ТабДок.ПолучитьСтроку()=1 Цикл
                Если ТабДок.ТМЦ = Опер.Кредит.ТМЦ Тогда
                    ТМЦЦена = ТабДок.ЦенаБезНДС;
                КонецЕсли;
            КонецЦикла;
              //*******
            // расход
            Если (Опер.Кредит.Счет = СчетПоКоду("281")) И
                (Опер.Кредит.Субконто(ВидыСубконто.ТМЦ) = ТМЦ) И
                (Опер.Дебет.Счет = СчетПоКоду("902")) Тогда
                
                СуммаБПДВ = СуммаБПДВ + ТМЦЦена*Опер.Количество;
                
            КонецЕсли;
            
        КонецЦикла;
    КонецЦикла;
    
    Возврат СуммаБПДВ;
    
КонецФункции

В итоге ТМЦЦена вроде как верние данные получаю, но безконечный цыкл.
awp
Sirius83 @ Вчера, 21:29 необходимо зарегистрироваться для просмотра ссылки ,
А брать инфо из регистров?
Sirius83
Решено: надо
если ТабДок.ТМЦ = ТМЦ тогда
Опер.Кредит.ТМЦ = неправильно
РС. Большое спасибо DartRomanius!!!
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.