Что может не дорабатывать в базе скл Бухии ред. 4.5?
Гена
25.03.2009 - 07:06
|
по некоторым контагентам пересписывает НДС, по некоторым пересписывает... по большинству нормально... понять и выделить причину не смог... может в методах БИ я не так цифры проставил? Процедура Сформировать() А=0; ДокСФ = СоздатьОбъект("Документ.СчетФактура"); ДокЗПК = СоздатьОбъект("Документ.ЗаписьКнигиПокупок"); БИ = СоздатьОбъект("БухгалтерскиеИтоги"); БИ.ИспользоватьСубконто(ВидыСубконто.Контрагенты,,1); БИ.ВыполнитьЗапрос(ДатаНач,ДатаКон,"62.2",,,,,"С"); БИ.ВыбратьСубконто(1,,,1); БИ_АВ = СоздатьОбъект("БухгалтерскиеИтоги"); БИ_АВ.ИспользоватьСубконто(ВидыСубконто.Контрагенты,,1); БИ_АВ.ИспользоватьСубконто(ВидыСубконто.СчетаФактурыВыданные,,1); БИ_АВ.ВыполнитьЗапрос(ДатаНач,ДатаКон,"76.АВ",,,,,"С"); БИ_АВ.ВыбратьСубконто(1,,,2); //НачатьТранзакцию(); Пока БИ.ПолучитьСубконто(1,1)=1 Цикл СуммаНДС =0; А=БИ.ДО("С")-БИ.КО("С"); Если А>0 Тогда //если дебетовые обороты больше кредитовых (больше было отргузок чем пришедших авансов) //зачитываем НДС с ранее полученных авансы //Берем начальное сальдо по счету 76.АВ по контрагенту в разрезе счетов фактур Если БИ_АВ.ПолучитьСубконто(1,2,БИ.Субконто(1))=1 Тогда СуммаНДС = А*Константа.ОсновнаяСтавкаНДС.Ставка/(100+Константа.ОсновнаяСтавкаНДС.Ставка); //здесь идет цикл - пока есть чем закрывать начальное сальдо по счету 76.АВ - закрываем //уменьшаем сумму к закрытию НДС с авансов, пока есть что закрывать, если сумма взятая //со счета 62.2 недостаточно для закрытия целой счет фактуры, делаем запись книги //покупок на ту сумму, которая есть БИ_АВ.ВыбратьСубконто(2,,,3); Пока БИ_АВ.ПолучитьСубконто(2,3)=1 Цикл Если СуммаНДС > 0 Тогда ДокЗПК.Новый(); ДокЗПК.ДатаДок = ДатаКон; ДокЗПК.Аванс = 1; ДокЗПК.УстановитьНовыйНомер("А-"); ДокЗПК.Контрагент = БИ_АВ.Субконто(1); ДокЗПК.ДокументОснование = БИ_АВ.Субконто(2); ДокЗПК.Договор = БИ_АВ.Субконто(2).Договор; ДокЗПК.Курс = 1; ДокЗПК.ДатаНомерСчетаФактуры = Строка(БИ_АВ.Субконто(2).ДатаДок) + " от " + СокрЛП(БИ_АВ.Субконто(2).НомерДок); ДокЗПК.ДатаОприходования = БИ_АВ.Субконто(2).ДатаДок; ДокЗПК.ФормироватьПроводки=1; ДокЗПК.НДС20 = Мин(БИ_АВ.СНД("С"),СуммаНДС); ДокЗПК.Всего = ДокЗПК.НДС20*118/18; ДокЗПК.КоррСчет = СчетПоКоду("76.АВ");; ДокЗПК.Субконто1 = ДокЗПК.Контрагент; ДокЗПК.Субконто2 = ДокЗПК.ДокументОснование; ДокЗПК.Комментарий = "#Сформирована для зачета аванса"; ДокЗПК.Записать(); ДокЗПК.Провести(); СуммаНДС = СуммаНДС - ДокЗПК.НДС20; Сообщить("Создан документ Запись книги покупок " + СокрЛП(ДокЗПК.НомерДок) + " от " + ДокЗПК.ДатаДок); КонецЕсли; КонецЦикла; КонецЕсли; ИначеЕсли А<0 Тогда //Если наоборот (больше было авансов чем отгрузок), то формируем новые счет-фактуры на аванс. ДокСФ.Новый(); ДокСФ.УстановитьНовыйНомер("Сф-а"); ДокСФ.ДатаДок = ДатаКон; ДокСФ.ДатаОплаты = ДатаКон; ДокСФ.ОтключитьАкциз = 1; ДокСФ.Контрагент = БИ.Субконто(1); ДокСФ.СчетНДС = 1; ДокСФ.ВариантОтправки = 1; ДокСФ.Аванс = 1; ДокСФ.СуммаНДСОпределяетсяРасчетнымМетодом = 1; ДокСФ.НоваяСтрока(); ДокСФ.НазначитьТип("Товар", "Строка", 22); ДокСФ.Товар = "Аванс (предв. оплата)"; ДокСФ.СтавкаНДС = Константа.ОсновнаяСтавкаНДС; ДокСФ.НДС = -А*Константа.ОсновнаяСтавкаНДС.Ставка/(100+Константа.ОсновнаяСтавкаНДС.Ставка); ДокСФ.Цена = -А; ДокСФ.Всего = -А; ДокСФ.Сумма = -А; ДокСФ.Комментарий = "#Сформирована для зачета аванса"; ДокСФ.Записать(); ДокСФ.Провести(); Сообщить("Создан документ Счет-Фактура " + СокрЛП(ДокСФ.НомерДок) + " от " + ДокСФ.ДатаДок); КонецЕсли; КонецЦикла; //ЗафиксироватьТранзакцию(); Сообщить("Все!"); КонецПроцедуры |