Процедура ПриходРозницаНУ (Док) // обработать приходные накладные для реализатора РегОстатки = СоздатьОбъект("Регистр.ОстаткиТоваров"); СчетН02_02=Бух.EvalExpr("СчетПоКоду(""Н02.02.1"")"); БухОперация = Бух.CreateObject("Операция"); Номенклатура=Бух.CreateObject("Справочник.Номенклатура"); Номенклатура.ИспользоватьДату(СДаты); Содержание = "НУ "+ Док.Вид()+ " " + Док.НомерДок + " " + Док.ДатаДок; БухОперация.ВыбратьОперации(Док.ДатаДок, Док.ДатаДок); Пока БухОперация.ПолучитьОперацию() = 1 цикл Если СокрЛП(БухОперация.Содержание) = Содержание тогда БухОперация.Удалить(1); Прервать; КонецЕсли; КонецЦикла; БухОперация.Новая(); БухОперация.ДатаОперации = Док.ДатаДок; БухОперация.Содержание = Содержание; БухОперация.СуммаОперации = 0; ИтогоСебестоимость = 0; ИтогоНаценка = 0; Док.ВыбратьСтроки(); Пока Док.ПолучитьСтроку() = 1 цикл Если Док.Товар.Выбран() = 0 тогда Продолжить; КонецЕсли; Если Док.Товар.ВидТовара = Перечисление.ВидыТоваров.Услуга тогда Продолжить; КонецЕсли; состояние ("Документ "+Док+" товар "+Док.Товар); БазоваяСтоимость = 0; ОстатокТовара = 0; РегОстатки.ВыбратьДвиженияДокумента(Док.ТекущийДокумент()); Пока РегОстатки.ПолучитьДвижение() = 1 цикл Если (РегОстатки.Склад = Док.Склад) и (РегОстатки.Товар = Док.Товар) и (РегОстатки.Серия = Док.Серия) тогда Если РегОстатки.Приход = 1 тогда БазоваяСтоимость = БазоваяСтоимость - РегОстатки.БазоваяСтоимость; ОстатокТовара = ОстатокТовара - РегОстатки.ОстатокТовара; иначе БазоваяСтоимость = БазоваяСтоимость + РегОстатки.БазоваяСтоимость; ОстатокТовара = ОстатокТовара + РегОстатки.ОстатокТовара; КонецЕсли; КонецЕсли; КонецЦикла; Если ОстатокТовара=0 тогда ОстатокТовара=1; конецесли; БазоваяСтоимость = Окр (БазоваяСтоимость / ОстатокТовара * Док.Количество * Док.Коэффициент, 2); БазоваяНДС = Окр (БазоваяСтоимость * (1 - 1 / (1 + ПроцентНДС(Док.Товар.СтавкаНДС) / 100)), 2); состояние ("Формирование проводок "+Док+" товар "+Док.Товар); // списание со склада БухОперация.НоваяПроводка(); БухОперация.Кредит.Счет = СчетН02_02; БухОперация.Кредит.Номенклатура = ПолучитьЭлемент(Док.Товар, Номенклатура); // Установить ставки НДС, НП и тип номенклатуры ОбновитьНоменклатуру (Док.Товар, Номенклатура); БухОперация.Количество = Док.Количество*Док.Коэффициент; БухОперация.Сумма = БазоваяСтоимость - БазоваяНДС; // Себестоимость = БазоваяСтоимость - БазоваяНДС; // СебестоимостьСНаценкой = Док.Сумма - Док.НДС - Док.СуммаНП; Себестоимость = БазоваяСтоимость; СебестоимостьСНаценкой = Док.Сумма; Если (Себестоимость < СебестоимостьСНаценкой * 0.5) или (Себестоимость >= СебестоимостьСНаценкой) тогда Сообщить("ВНИМАНИЕ! Себестоимость в строке " + Док.НомерСтроки + " " + Док.Товар + " " + Формат(Себестоимость, "Ч12.2") + " с наценкой " + Формат(СебестоимостьСНаценкой, "Ч12.2")); КонецЕсли; ИтогоСебестоимость = ИтогоСебестоимость + Себестоимость; ИтогоНаценка = ИтогоНаценка + Док.Сумма - Себестоимость; БухОперация.СуммаОперации = БухОперация.СуммаОперации + Док.Сумма; КонецЦикла; сообщить (Док.Вид()+ " " + Док.НомерДок + " " + Док.ДатаДок + " " + Формат(Док.Итог("Сумма"), "Ч12.2")); Сообщить(" себестоимость = " + Формат(ИтогоСебестоимость, "Ч12.2") + " наценка = " + Формат(ИтогоНаценка, "Ч12.2")); БухОперация.Записать(); КонецПроцедуры |