Версия для печати темы (https://pro1c.org.ua/index.php?s=f17bd53f75ee4fa2a9d3400db950d496&showtopic=48258)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование в 1С Предприятие 7.7 _ Получить данные из табличной части при выборке

Автор: Sirius83 09.10.18, 20:29

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

Код

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


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

В итоге ТМЦЦена вроде как верние данные получаю, но безконечный цыкл.

Автор: awp 09.10.18, 23:35

Sirius83 @ Вчера, 21:29 * ,
А брать инфо из регистров?

Автор: Sirius83 10.10.18, 13:26

Решено: надо

если ТабДок.ТМЦ = ТМЦ тогда
Опер.Кредит.ТМЦ = неправильно
РС. Большое спасибо DartRomanius!!!

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua