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