Предприятие просило убрать контрагентов, если они присутствуют одновременно и в дебиторах и кредиторах.
Причина: Очень большой объем бартера, даже и не бартера а вообще не известно чего, снабженцы предприятий берут друг у друга товары хоть и по накладным, но без всяких писем, соглашений и т.д.) В результате один и тот же контрагент является и дебитором и кредитором одновременно.
В разрезе субконто (договора) учет практически не ведется (за очень редким исключением всегда «основной договор»), приходуемого товара со ставкой НДС, отличной от 20%, нет. Поэтому некоторая «кривоватость» модуля для этого предприятия была более чем (в общем их это устроило).
Собственно сам текст модуля, форма может быть любая, только чтобы там стояли номер документа, его дата и 2 кнопки «ОК» и «Закрыть».
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 |
Процедура ОбработкаПроведения() // Предопределенная процедура Сч60 = СчетПоКоду("60.1"); //Сч61 = СчетПоКоду("61.1"); //Сч64 = СчетПоКоду("64.1"); Сч62 = СчетПоКоду("62.1"); Сч76 = СчетПоКоду("76.1"); Сч68 = СчетПоКоду("68.2"); Сч76_4 = СчетПоКоду("76.4"); //Закрытие 60 и 62 счета БухИт = СоздатьОбъект("БухгалтерскиеИтоги"); БухИт.ИспользоватьСубконто(ВидыСубконто.Контрагенты); БухИт.ИспользоватьСубконто(ВидыСубконто.Основание); БухИт.ИспользоватьСубконто(ВидыСубконто.ВариантыРеализации); БухИт.ВыполнитьЗапрос(,ТекущийДокумент(),"62.1"); БухИт.ВыбратьСубконто(1); Пока БухИт.ПолучитьСубконто(1)=1 Цикл ДолгПокупателя = БухИт.СКД();// задолженность поставщика, если он же является и покупателем и у него есть долг по 62.1 БухИтоги = СоздатьОбъект("БухгалтерскиеИтоги"); Контрагент=БухИт.Субконто(1); БухИтоги.ИспользоватьСубконто(ВидыСубконто.Контрагенты,Контрагент); БухИтоги.ВыполнитьЗапрос(,ТекущийДокумент(),"60.1"); // посмотрим наши долги перед контрагентом ДолгПоставщику=БухИтоги.СКК();// это и есть долг перед поставщиком Зачет1=Мин(ДолгПокупателя,ДолгПоставщику); Зачет=Макс(Зачет1,0);//Сумма к зачету с Контрагентом без учета оснований и вариантов реализации Если Зачет>0 Тогда БухИт.ВыбратьСубконто(2); Пока БухИт.ПолучитьСубконто(2) = 1 Цикл ЗачетПоДоговору=БухИт.СКД()*Зачет/ДолгПокупателя; Договор=БухИт.Субконто(2); БухИтоги.ВключатьСубСчета(1); БухИтоги.ИспользоватьСубконто(ВидыСубконто.Основание,Договор); БухИтоги.ВыполнитьЗапрос(,ТекущийДокумент(),"19"); БухИтоги.ВыбратьСчета(); НДСкОплате=БухИтоги.СКД(); Пока БухИтоги.ПолучитьСчет()=1 Цикл ОплатаНДС=Мин(((БухИтоги.СКД()*ЗачетПоДоговору/6)/НДСкОплате),БухИтоги.СКД()); Если ОплатаНДС>0 Тогда Операция.НоваяПроводка();//проводка по списанию НДС с оплаты поставщику Операция.СодержаниеПроводки = "НДС в бюджет "; Операция.Дебет.Счет = Сч68; Операция.Дебет.ПлатежиВБюджет = Перечисление.ПлатежиВБюджет.Налог; Операция.Кредит.Счет = БухИтоги.Счет; Операция.Кредит.Контрагенты = Контрагент; Операция.Кредит.Основание = Договор; Операция.Сумма = ОплатаНДС; КонецЕсли; КонецЦикла; БухИт.ВыбратьСубконто(3); Пока БухИт.ПолучитьСубконто(3)=1 Цикл Если ЗачетПоДоговору>=БухИт.СКД() Тогда // списание вариантов реализации подряд по алфавиту ЗачетПоВарианту=БухИт.СКД(); ЗачетПоДоговору=ЗачетПоДоговору-БухИт.СКД(); Иначе ЗачетПоВарианту=ЗачетПоДоговору; ЗачетПоДоговору=0; КонецЕсли; Если ЗачетПоВарианту>0 Тогда Операция.НоваяПроводка(); //основная проводка по взаимозачету Операция.СодержаниеПроводки = "Взаимозачет"; Операция.Дебет.Счет = Сч60; Операция.Дебет.Контрагенты = БухИт.Субконто(1); Операция.Дебет.Основание = БухИт.Субконто(2); Операция.Кредит.Счет = Сч62; Операция.Кредит.Контрагенты =БухИт.Субконто(1); Операция.Кредит.Основание = БухИт.Субконто(2); Операция.Кредит.ВариантыРеализации = БухИт.Субконто(3); Операция.Сумма = ЗачетПоВарианту; // Если Константа.МетодОпределенияВыручки.Получить(ДатаДок) = Перечисление.МетодыОпределенияВыручки.ПоОплате Тогда НДС=БухИТ.Субконто(3).СтавкаНДС.Ставка; Если НДС>0 Тогда Операция.НоваяПроводка();//проводка по списанию НДС с оплаты покупателем Операция.СодержаниеПроводки = "НДС в бюджет с оплаты"; Операция.Дебет.Счет = Сч76_4; Операция.Дебет.Контрагенты = БухИт.Субконто(1); Операция.Дебет.Основание = БухИт.Субконто(2); Операция.Дебет.ОтложенныеНалоги=глОтложенныйНалог("НДС"); Операция.Кредит.Счет = Сч68; Операция.Кредит.ПлатежиВБюджет = Перечисление.ПлатежиВБюджет.Налог; Операция.Сумма = ЗачетПоВарианту*НДС/(НДС+100); КонецЕсли; КонецЕсли; КонецЕсли; Если ЗачетПоДоговору=0 Тогда Прервать; КонецЕсли; КонецЦикла; КонецЦикла; КонецЕсли; КонецЦикла; Операция.Записать(); КонецПроцедуры // ОбработкаПроведения |