Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Получить данные из табличной части при выборке          
Sirius83 Подменю пользователя
сообщение 09.10.18, 20:29
Сообщение #1

Говорящий
***
Группа: Пользователи
Сообщений: 52
Спасибо сказали: 3 раз
Рейтинг: 0

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

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


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

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

Сообщение отредактировал Vofka - 10.10.18, 7:56

awp Подменю пользователя
сообщение 09.10.18, 23:35
Сообщение #2

Почти ветеран
Иконка группы
Группа: Местный
Сообщений: 520
Спасибо сказали: 70 раз
Рейтинг: 51.3

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


Signature
Бухгалтер - это не профессия! Это диагноз!

Sirius83 Подменю пользователя
сообщение 10.10.18, 13:26
Сообщение #3

Говорящий
***
Группа: Пользователи
Сообщений: 52
Спасибо сказали: 3 раз
Рейтинг: 0

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

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 29.03.24, 0:39
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!