newfantom
Пользователь

Карма: +0/-0
Offline
Сообщений: 57
|
 |
« : 21 Февраль 2008, 15:09:05 » |
|
Доброго времени суток всем!!! Подскажите пожалуйста, в 1С бухгалтерии из запаса в эксплуатацию в документе ПеремещениеОС на вкладке бухгалтерском учете стоит дата от 17.01.2008. При расчете амортизации требуется, чтобы рассчитывал с 01.02.2008(так сказала бухгалтер), а программа считает с января. Как быть.
|
|
|
|
|
Записан
|
|
|
|
|
JEKA
|
 |
« Ответ #1 : 21 Февраль 2008, 15:29:37 » |
|
Насколько я знаю, амортизация на ОС должна начать начисляться с месяца, следующего за месяцев ввода в эксплуатацию и в 1С так и реализовано.
|
|
|
|
|
Записан
|
|
|
|
newfantom
Пользователь

Карма: +0/-0
Offline
Сообщений: 57
|
 |
« Ответ #2 : 21 Февраль 2008, 15:44:02 » |
|
newfantomТакой вопрос лучше пиши в личку  .. Т.е. не огочайся что отредактировал  . alexey
|
|
|
|
« Последнее редактирование: 21 Февраль 2008, 16:31:05 от alexey »
|
Записан
|
|
|
|
|
alexey
|
 |
« Ответ #3 : 22 Февраль 2008, 08:06:20 » |
|
Посмотрел, вот все что делает док. Перемещение ОС Процедура ОбработкаПроведения() ВыбратьСтроки(); Пока ПолучитьСтроку() = 1 Цикл УстановитьРеквизитСправочника(ОсновноеСредство,"Подразделение",Подразделение,ДатаДок); УстановитьРеквизитСправочника(ОсновноеСредство,"МОЛ",МОЛ,ДатаДок); УстановитьРеквизитСправочника(ОсновноеСредство,"СчетЗатрат",СчетЗатрат,ДатаДок); УстановитьРеквизитСправочника(ОсновноеСредство,"Субконто1",Субконто1,ДатаДок, СчетЗатрат.ВидСубконто(1)); УстановитьРеквизитСправочника(ОсновноеСредство,"Субконто2",Субконто2,ДатаДок, СчетЗатрат.ВидСубконто(2)); УстановитьРеквизитСправочника(ОсновноеСредство,"Субконто3",Субконто3,ДатаДок, СчетЗатрат.ВидСубконто(3)); УстановитьРеквизитСправочника(ОсновноеСредство, "БазаРаспределенияАмортизации", БазаРаспределенияАмортизации, ДатаДок); УстановитьРеквизитСправочника(ОсновноеСредство,"НачислятьАмортизацию",НачислятьАмортизацию,ДатаДок); УстановитьРеквизитСправочника(ОсновноеСредство,"НаходитсяВЗалоге",НаходитсяВЗалоге,ДатаДок); УстановитьРеквизитСправочника(ОсновноеСредство,"Состояние",ПолучитьАтрибут("Состояние"),ДатаДок); УстановитьРеквизитСправочника(ОсновноеСредство, "ВидРасхода", ВидРасхода, ДатаДок); ИмяТипа = ""; Если ПустоеЗначение(ЭлементРасхода) = 0 Тогда ИмяТипа = "Перечисление."+ ЭлементРасхода.Вид(); КонецЕсли; УстановитьРеквизитСправочника(ОсновноеСредство, "ЭлементРасхода", ЭлементРасхода, ДатаДок, ИмяТипа); УстановитьРеквизитСправочника(ОсновноеСредство, "Объект", Объект, ДатаДок); КонецЦикла; КонецПроцедуры
|
|
|
|
|
Записан
|
|
|
|
|
alexey
|
 |
« Ответ #4 : 22 Февраль 2008, 08:07:15 » |
|
Вот кусок из Начисление Амортизации: Процедура НачислениеАмортизацииОС() ПЗАмортизацияОС = глПЗ("АмортизацияОС");
Если (ОсновныеСредства_01 = 1) или (ОсновныеСредства_03 = 1) или (ДляЦелейНалогообложения = 1) Тогда Ном = 0; ОС = СоздатьОбъект("Справочник.ОсновныеСредства"); ОС.ВыбратьЭлементы(); Пока ОС.ПолучитьЭлемент() = 1 Цикл Если (ОС.ЭтоГруппа() = 1) или (ОС.ПометкаУдаления() = 1) Тогда Продолжить; КонецЕсли; Состояние("Начисление амортизации: " + ОС); Если (ОС.СпособНачисленияАмортизации = Перечисление.СпособыНачисленияАмортизацииОС.ПропорциональноОбъемуПродукцииРабот) И (ОС.СпособУказанияОбъемаПродукции.Получить(ДатаДок) = Перечисление.СпособыУказанияОбъемаПродукции.РассчитываетсяАвтоматически) Тогда РассчитатьФактическийВыпуск(ОС.ТекущийЭлемент()); КонецЕсли; НачислятьАмортизациюБух = 1; СведенияОбОС = глРасчетАмортизацииОС(ОС.ТекущийЭлемент(), ДатаДок); СчетУчета = СведенияОбОС.Получить("СчетУчета"); Если ПустоеЗначение(СчетУчета) = 0 Тогда Если (СчетУчета.Родитель() = СчетПоКоду("01")) и (ОсновныеСредства_01 = 0) Тогда НачислятьАмортизациюБух = 0; ИначеЕсли (СчетУчета.Родитель() = СчетПоКоду("03")) и (ОсновныеСредства_03 = 0) Тогда НачислятьАмортизациюБух = 0; КонецЕсли; Иначе НачислятьАмортизациюБух = 0; КонецЕсли; Если НачислятьАмортизациюБух = 1 Тогда Ном = Ном + 1; БалансоваяСтоимость = СведенияОбОС.Получить("БалансоваяСтоимостьНач"); АмортизацияНаНачалоМесяца = СведенияОбОС.Получить("НачисленнаяАмортизацияНач"); РассчитаннаяАмортизацияБух = СведенияОбОС.Получить("РассчитаннаяАмортизацияБух"); СчетНачисленияАмортизации = СведенияОбОС.Получить("СчетНачисленияАмортизации"); ОстаточнаяСтоимость = БалансоваяСтоимость - АмортизацияНаНачалоМесяца; Если РассчитаннаяАмортизацияБух > 0 Тогда Если СчетНачисленияАмортизации.Забалансовый = 1 Тогда Операция.НоваяПроводка(); Операция.НомерЖурнала = "ОС"; Операция.СодержаниеПроводки = "Износ за " + ДатаГод(ДатаДок) + " г."; Операция.ПервичныйДокумент = глПредставлениеПервичногоДокумента(Контекст); Операция.Дебет.Счет = СчетНачисленияАмортизации; Операция.Дебет.ОсновныеСредства = ОС.ТекущийЭлемент(); Операция.Сумма = РассчитаннаяАмортизацияБух; Продолжить; Иначе Если ОС.СчетЗатрат.Получить(ДатаДок).Выбран() = 0 Тогда ТекстСообщения = "Не указан счет отнесения затрат по начисленной амортизации для ОС: " + ОС.Наименование + ", инв.№" + ОС.Код + "."; глНеПроводить(ТекущийДокумент(), ТекстСообщения); Возврат; КонецЕсли; СчетНачисленияАмортизации = СведенияОбОС.Получить("СчетНачисленияАмортизации"); Операция.НоваяПроводка(); Операция.НомерЖурнала = "ОС"; Операция.СодержаниеПроводки = "Аморт.за " + Формат(ДатаДок, "Д ММММГГГГ"); Операция.ПервичныйДокумент = глПредставлениеПервичногоДокумента(Контекст); СчетЗатрат = ОС.СчетЗатрат.Получить(ДатаДок); Операция.Дебет.Счет = СчетЗатрат; Если (ВедениеАналитикиНаСчетах = 1) и (СчетЗатрат = СчетПоКоду("20")) Тогда Операция.Дебет.Субконто(1, ""); Операция.Дебет.Субконто(2, ПЗАмортизацияОС); Операция.Дебет.Субконто(3, ОС.Субконто3.Получить(ДатаДок)); Иначе Операция.Дебет.Субконто(1, ОС.Субконто1.Получить(ДатаДок)); Операция.Дебет.Субконто(2, ОС.Субконто2.Получить(ДатаДок)); Операция.Дебет.Субконто(3, ОС.Субконто3.Получить(ДатаДок)); КонецЕсли; Операция.Кредит.Счет = СчетНачисленияАмортизации; Операция.Кредит.ОсновныеСредства = ОС.ТекущийЭлемент(); Операция.Сумма = РассчитаннаяАмортизацияБух; КонецЕсли; СуммаОперации = СуммаОперации + РассчитаннаяАмортизацияБух; // Списание постоянных разниц. Если СчетНачисленияАмортизации.Забалансовый <> 1 Тогда Если ПрименяетсяПБУ18 = Да Тогда ВсегоПостоянныхРазниц = БухИт.СНД("НПР.01",,, ОС.ТекущийЭлемент()); Если ВсегоПостоянныхРазниц <> 0 Тогда СписатьПостоянныхРазниц = ВсегоПостоянныхРазниц * (РассчитаннаяАмортизацияБух / ОстаточнаяСтоимость); Если СписатьПостоянныхРазниц <> 0 Тогда СчетДт = ОС.СчетЗатрат.Получить(ДатаДок); СчетНПР = глПолучитьСчетДебетаНПР(СчетДт, ОС.Субконто1.Получить(ДатаДок)); Операция.НоваяПроводка(); Операция.НомерЖурнала = "ПР"; Операция.СодержаниеПроводки = "Списание постоянных разниц"; Если ПустоеЗначение(СчетНПР) = 0 Тогда Операция.Дебет.Счет = СчетНПР; Операция.Дебет.Субконто(1, ОС.Субконто1.Получить(ДатаДок)); Операция.Дебет.Субконто(2, ОС.Субконто2.Получить(ДатаДок)); Операция.Дебет.Субконто(3, ОС.Субконто3.Получить(ДатаДок)); КонецЕсли; Операция.Кредит.Счет = СчетПоКоду("НПР.01"); Операция.Кредит.ОсновныеСредства = ОС.ТекущийЭлемент(); Операция.Сумма = СписатьПостоянныхРазниц; КонецЕсли; КонецЕсли; КонецЕсли; КонецЕсли; КонецЕсли; // Если объект был модернизирован в этом месяце, // то необходимо записать остаточную стомиость объекта // на конец того месяца, в котором была произведена модернизация. Если БылаМодернизация(ОС) = 1 Тогда // Установить остаточную стоимость для целей бухгалтерского учета БалансоваяСтоимостьКон = СведенияОбОС.Получить("БалансоваяСтоимостьКон"); АмортизацияНаКонецМесяца = СведенияОбОС.Получить("НачисленнаяАмортизацияКон"); РассчитаннаяАмортизация = СведенияОбОС.Получить("РассчитаннаяАмортизацияБух"); ОстаточнаяСтоимость = БалансоваяСтоимостьКон - АмортизацияНаКонецМесяца - РассчитаннаяАмортизация; УстановитьРеквизитСправочника(ОС, "ОстаточнаяСтоимостьПослеМодернизации", ОстаточнаяСтоимость, ДатаДок); КонецЕсли; КонецЕсли; Если ДатаДок < '01.01.2002' Тогда Если (ДляЦелейНалогообложения = 1) и (ОС.ДатаВводаВЭксплуатацию < НачМесяца(ДатаДок)) и (ОС.ПодлежитАмортизации = 1) Тогда РассчитаннаяАмортизацияНалог = СведенияОбОС.Получить("РассчитаннаяАмортизацияНалог"); БалансоваяСтоимость = СведенияОбОС.Получить("БалансоваяСтоимостьНалог"); АмортизацияНаНачалоМесяца = СведенияОбОС.Получить("НачисленнаяАмортизацияНалог"); Если НачислятьАмортизациюБух = 0 Тогда Ном = Ном + 1; КонецЕсли; Если РассчитаннаяАмортизацияНалог > 0 Тогда Операция.НоваяПроводка(); Операция.НомерЖурнала = "ОС"; Операция.СодержаниеПроводки = "Аморт.за " + Формат(ДатаДок, "Д ММММГГГГ"); Операция.ПервичныйДокумент = глПредставлениеПервичногоДокумента(Контекст); Операция.Кредит.Счет = СчетПоКоду("АОС"); Операция.Кредит.ОсновныеСредства = ОС.ТекущийЭлемент(); Операция.Сумма = РассчитаннаяАмортизацияНалог; КонецЕсли; КонецЕсли; Иначе Если ДляЦелейНалогообложения = 1 Тогда БалансоваяСтоимостьНач = СведенияОбОС.Получить("БалансоваяСтоимостьНалог"); БалансоваяСтоимостьКон = СведенияОбОС.Получить("БалансоваяСтоимостьНалогКон"); АмортизацияНаНачалоМесяца = СведенияОбОС.Получить("НачисленнаяАмортизацияНалог"); РассчитаннаяАмортизацияНалог = СведенияОбОС.Получить("РассчитаннаяАмортизацияНалог"); ПрименяетсяБазоваяСтоимость = СведенияОбОС.Получить("ПрименяетсяБазоваяСтоимость"); // Документ записывать базовую стоимость, только в том случае, если: // - ранее базовая стоимость не определена; // - на начало месяца остаточная стоимость > 20% от первоначальной; // - на конец месяца остаточная стоимость <= 20% от первоначальной. Если ОС.МетодНачисленияАмортизации = Перечисление.МетодыНачисленияАмортизации.Нелинейный Тогда Если ОС.НачислятьАмортизацию.Получить(ДатаДок) = 1 Тогда Если ПрименяетсяБазоваяСтоимость = 0 Тогда // если уже применяется базовая стоимость, то больше не надо ее определять ОстаточнаяСтоимостьНач = БалансоваяСтоимостьНач - АмортизацияНаНачалоМесяца; Если ОстаточнаяСтоимостьНач > (0.2 * БалансоваяСтоимостьНач) Тогда ОстаточнаяСтоимостьКон = БалансоваяСтоимостьКон - АмортизацияНаНачалоМесяца - РассчитаннаяАмортизацияНалог; Если ОстаточнаяСтоимостьКон <= (0.2 * БалансоваяСтоимостьКон) Тогда УстановитьРеквизитСправочника(ОС, "БазоваяСтоимость", ОстаточнаяСтоимостьКон, ДатаДок); КонецЕсли; КонецЕсли; КонецЕсли; КонецЕсли; КонецЕсли;
Если РассчитаннаяАмортизацияНалог > 0 Тогда ВидРасхода = ОС.ВидРасхода.Получить(ДатаДок); Объект = ОС.Объект.Получить(ДатаДок); Если (НовыеПравилаВеденияНУ = 2) и (ВидРасхода = Перечисление.ВидыРасходов.ПрямыеРасходы) Тогда Объект = ""; КонецЕсли; СчетИАналитикаДляОтнесенияРасходов = глПолучитьСчетРасходовДляЦелейНалоговогоУчета(ВидРасхода, ОС.ЭлементРасхода.Получить(ДатаДок), Объект, ДатаДок); СчетРасходов = СчетИАналитикаДляОтнесенияРасходов.Получить("Счет"); Если ПустоеЗначение(СчетРасходов) = 1 Тогда ТекстСообщения = "На закладке ""Налоговый учет"" неверно указано направление отнесения расходов по начисленной амортизации для ОС: " + ОС.Наименование + ", инв.№" + ОС.Код + "."; глНеПроводить(Контекст, ТекстСообщения); Возврат; КонецЕсли; СчетРасходов = глПолучитьСчетУчетаКосвенныхРасходовНУ(ДатаДок, ОС.СчетЗатрат.Получить(ДатаДок), ОС.Субконто1.Получить(ДатаДок), СчетРасходов);
Операция.НоваяПроводка(); Операция.НомерЖурнала = "ОС"; Операция.СодержаниеПроводки = "Аморт.за " + Формат(ДатаДок, "Д ММММГГГГ"); Операция.ПервичныйДокумент = глПредставлениеПервичногоДокумента(Контекст); Если ПустоеЗначение(СчетРасходов) = 0 Тогда Операция.Дебет.Счет = СчетРасходов; Операция.Дебет.Субконто(1, СчетИАналитикаДляОтнесенияРасходов.Получить("Субконто1")); Операция.Дебет.Субконто(2, СчетИАналитикаДляОтнесенияРасходов.Получить("Субконто2")); Операция.Дебет.Субконто(3, СчетИАналитикаДляОтнесенияРасходов.Получить("Субконто3")); КонецЕсли; Операция.Кредит.Счет = СчетПоКоду("Н05.02"); Операция.Кредит.ОсновныеСредства = ОС.ТекущийЭлемент(); Операция.Сумма = РассчитаннаяАмортизацияНалог; КонецЕсли; КонецЕсли; КонецЕсли; КонецЦикла; КонецЕсли КонецПроцедуры
|
|
|
|
|
Записан
|
|
|
|
|
alexey
|
 |
« Ответ #5 : 22 Февраль 2008, 08:13:39 » |
|
Мельком взглянув думаю тебе пригодиться еще это функция глРасчетАмортизацииОС, вот она: Функция глРасчетАмортизацииОС(ОС, ДатаРасчета, РассчитыватьДанныеПоНалоговомуУчету = 1) Экспорт Перем СведенияОбОС; Перем СчетУчета; Перем БалансоваяСтоимостьНач; Перем БалансоваяСтоимостьКон; Перем БалансоваяСтоимостьНалог; Перем БалансоваяСтоимостьНалогКон; Перем СчетНачисленияАмортизации; Перем НачисленнаяАмортизацияНач; Перем НачисленнаяАмортизацияКон; Перем НачисленнаяАмортизацияНалог; Перем РассчитаннаяАмортизацияБух; Перем РассчитаннаяАмортизацияНалог; Перем ПрименяетсяБазоваяСтоимость; Перем БухИт; БухИт = СоздатьОбъект("БухгалтерскиеИтоги"); БухИт.Актуальность(1); БухИт.ПериодМ(ДатаРасчета); СписокСчетовУчета = СоздатьОбъект("СписокЗначений"); СписокСчетовУчета.ДобавитьЗначение(СчетПоКоду("01.1")); СписокСчетовУчета.ДобавитьЗначение(СчетПоКоду("03.1")); СписокСчетовУчета.ДобавитьЗначение(СчетПоКоду("03.2")); СписокСчетовУчета.ДобавитьЗначение(СчетПоКоду("03.3")); СписокСчетовУчета.ДобавитьЗначение(СчетПоКоду("03.4")); СчетУчета = ПолучитьПустоеЗначение("Счет"); СчетУчетаНач = ПолучитьПустоеЗначение("Счет"); Индекс = 1; БалансоваяСтоимостьНач = 0; БалансоваяСтоимостьКон = 0; // Определение счета на котором объект учитывался на // начало месяца и счета учета на конец месяца. Пока (Индекс <= СписокСчетовУчета.РазмерСписка()) и ((ПустоеЗначение(СчетУчета) = 1) или (ПустоеЗначение(СчетУчетаНач) = 1)) Цикл // цикл крутится до тех пока не конец списка и пока не определены счета учета на конец периода и на начало СчетУчетаИзСписка = СписокСчетовУчета.ПолучитьЗначение(Индекс); СтоимостьНач = БухИт.СНД(СчетУчетаИзСписка,,, ОС); СтоимостьКон = БухИт.СКД(СчетУчетаИзСписка,,, ОС); БалансоваяСтоимостьНач = БалансоваяСтоимостьНач + СтоимостьНач; БалансоваяСтоимостьКон = БалансоваяСтоимостьКон + СтоимостьКон; Если СтоимостьКон > 0 Тогда СчетУчета = СчетУчетаИзСписка; КонецЕсли; Если СтоимостьНач > 0 Тогда СчетУчетаНач = СчетУчетаИзСписка; КонецЕсли; Индекс = Индекс + 1; КонецЦикла; Если ПустоеЗначение(СчетУчетаНач) = 1 Тогда СчетУчетаНач = СчетУчета; КонецЕсли; СчетНачисленияАмортизации = ПолучитьПустоеЗначение("Счет"); НачисленнаяАмортизацияНач = 0; НачисленнаяАмортизацияКон = 0; Если ОС.ПодлежитАмортизации = 0 Тогда СчетНачисленияАмортизации = СчетПоКоду("010"); НачисленнаяАмортизацияНач = БухИт.СНД(СчетНачисленияАмортизации,,, ОС); НачисленнаяАмортизацияКон = БухИт.СКД(СчетНачисленияАмортизации,,, ОС); ИначеЕсли ПустоеЗначение(СчетУчетаНач) = 0 Тогда Если СчетУчетаНач.Родитель() = СчетПоКоду("01") Тогда СчетНачисленияАмортизации = СчетПоКоду("02.1"); ИначеЕсли СчетУчетаНач.Родитель() = СчетПоКоду("03") Тогда СчетНачисленияАмортизации = СчетПоКоду("02.2"); КонецЕсли; НачисленнаяАмортизацияНач = БухИт.СНК("02",,, ОС); НачисленнаяАмортизацияКон = БухИт.СКК("02",,, ОС); КонецЕсли; БалансоваяСтоимостьНалог = 0; БалансоваяСтоимостьНалогКон = 0; НачисленнаяАмортизацияНалог = 0; РассчитаннаяАмортизацияБух = 0; РассчитаннаяАмортизацияНалог = 0; НачисленнаяАмортизацияНалогКон = 0; ПрименяетсяБазоваяСтоимость = 0; КапВложенияНаправленныеНаРасходы = 0; Если ОС.ПодлежитАмортизации = 1 Тогда ДатаНачалаМесяца = БухИт.НачПериода(); ДатаРеквизитов = БухИт.КонПериода(); // Анализируется была ли модернизация ОбъектМодернизирован = ОС.ОбъектМодернизирован.Получить(ДатаНачалаМесяца-1); ДатаМодернизации = ПолучитьПустоеЗначение("Дата"); Если ОбъектМодернизирован = 1 Тогда // была модернизация ДатаМодернизации = глДатаНаКоторуюУстановленоЗначение(ОС, "ОбъектМодернизирован", ДатаНачалаМесяца-1); КонецЕсли; // Амортизация начисляется в том случае, если на начало месяца объект // уже был принят к учету и для него установлен флажок начисления амортизации. Если (ОС.НачислятьАмортизацию.Получить(ДатаРеквизитов) = 1) и (ПустоеЗначение(СчетУчета) = 0) Тогда Если БухИт.СКД(СчетУчета,,, ОС) <> 0 Тогда ПервоначальнаяСтоимость = БалансоваяСтоимостьНач; ОстаточнаяСтоимостьБух = БалансоваяСтоимостьНач - НачисленнаяАмортизацияНач; СрокПолезногоИспользования = ОС.СрокПолезногоИспользования.Получить(ДатаНачалаМесяца-1); // Если объект был модернизирован (реконструирован), то при расчете суммы // амортизации вместо первоначальной стоимости будет использоваться остаточная // стоимость на момент модернизации с учетом расходов по модернизации. Если ОбъектМодернизирован = 1 Тогда // была модернизация ОставшийсяСрокПолезногИспользованияПослеМодернизации = 0; ОстаточнаяСтоимостьПослеМодернизации = ОС.ОстаточнаяСтоимостьПослеМодернизации.Получить(ДатаНачалаМесяца-1); // Рассчитаем оставшийся срок полезного использования на дату модернизации ОС Если (ПустоеЗначение(ДатаМодернизации) = 0) и (ПустоеЗначение(ОС.ДатаВводаВЭксплуатацию) = 0) Тогда ОставшийсяСрокПолезногИспользованияПослеМодернизации = СрокПолезногоИспользования - (ДатаГод(КонМесяца(ДатаМодернизации)) - ДатаГод(КонМесяца(ОС.ДатаВводаВЭксплуатацию))) * 12 - (ДатаМесяц(КонМесяца(ДатаМодернизации)) - ДатаМесяц(КонМесяца(ОС.ДатаВводаВЭксплуатацию))); КонецЕсли; // Установим новые значение первоначальной стоимости и срока полезного использования ПервоначальнаяСтоимость = ОстаточнаяСтоимостьПослеМодернизации; СрокПолезногоИспользования = ОставшийсяСрокПолезногИспользованияПослеМодернизации; КонецЕсли; Если ОС.СпособНачисленияАмортизации = Перечисление.СпособыНачисленияАмортизацииОС.Линейный Тогда Если СрокПолезногоИспользования > 0 Тогда РассчитаннаяАмортизацияБух = ПервоначальнаяСтоимость / СрокПолезногоИспользования; КонецЕсли; ИначеЕсли ОС.СпособНачисленияАмортизации = Перечисление.СпособыНачисленияАмортизацииОС.УменьшаемогоОстатка Тогда // Сумма амортизации за месяц рассчитывается как: // остаточной стоимость / количество месяцев полезного использования * коэффициент ускорения. // В первый год эксплуатации остаточная стоимость - это первоначальная // стоимость объекта основных средств на дату ввода в эксплуатацию // (из реквизита первоначальная стоимость), а количество месяцев // полезного использования берется на дату ввода объекта в эксплуатацию. // В последующие годы остаточная стоимость - СНД по всевозможным // счетам учета ОС СНК по счету 02 на 1 января года, в котором происходи расчет // амортизации, количество месяцев полезного так же берется на 1 января. Если ДатаГод(ДатаРасчета) = ДатаГод(ДатаМодернизации) Тогда // первый год, когда была произведена модернизация ОстаточнаяСтоимость = ПервоначальнаяСтоимость; ИначеЕсли ДатаГод(ДатаРасчета) = ДатаГод(ОС.ДатаВводаВЭксплуатацию) Тогда // первый год эксплуатации ОстаточнаяСтоимость = ОС.ПервоначальнаяСтоимость.Получить(ОС.ДатаВводаВЭксплуатацию); Иначе ДатаНачалаГода = НачГода(ДатаРасчета); // Рассчитаем балансовую стоимость объекта на начало года. БухИтОстаточнаяСтоимость = СоздатьОбъект("БухгалтерскиеИтоги"); БухИтОстаточнаяСтоимость.ПериодМ(ДатаНачалаГода); БалансоваяСтоимость = 0; Индекс = 1; Пока Индекс <= СписокСчетовУчета.РазмерСписка() Цикл СчетУчетаИзСписка = СписокСчетовУчета.ПолучитьЗначение(Индекс); БалансоваяСтоимость = БалансоваяСтоимость + БухИтОстаточнаяСтоимость.СНД(СчетУчетаИзСписка,,, ОС); Индекс = Индекс + 1; КонецЦикла; // Рассчитаем сумму начисленной аморизации на начало года. НачисленнаяАморизация = БухИтОстаточнаяСтоимость.СНК("02",,, ОС); ОстаточнаяСтоимость = БалансоваяСтоимость - НачисленнаяАморизация; КонецЕсли; Если СрокПолезногоИспользования > 0 Тогда РассчитаннаяАмортизацияБух = ОстаточнаяСтоимость / СрокПолезногоИспользования * ОС.КоэффициентУскорения; КонецЕсли; ИначеЕсли ОС.СпособНачисленияАмортизации = Перечисление.СпособыНачисленияАмортизацииОС.ПоСуммеЧиселЛет Тогда Если СрокПолезногоИспользования > 0 Тогда КоличествоЛетЭксплуатации = Цел(СрокПолезногоИспользования / 12); Если (СрокПолезногоИспользования / 12) > КоличествоЛетЭксплуатации Тогда КоличествоЛетЭксплуатации = КоличествоЛетЭксплуатации + 1; КонецЕсли; СуммаЧиселЛет = 0; Для i=1 По КоличествоЛетЭксплуатации Цикл СуммаЧиселЛет = СуммаЧиселЛет + i; КонецЦикла; ДатаНачалаРасчета = ?(ОбъектМодернизирован = 0, ОС.ДатаВводаВЭксплуатацию, ДатаМодернизации); ГодЭксплуатации = ДатаГод(ДатаРасчета) - ДатаГод(ДатаНачалаРасчета); ГодовщинаВводаВЭксплуатацию = Дата(ДатаГод(ДатаРасчета), ДатаМесяц(ДатаНачалаРасчета), ДатаЧисло(ДатаНачалаРасчета)); Если КонМесяца(ДатаРасчета) > КонМесяца(ГодовщинаВводаВЭксплуатацию) Тогда ГодЭксплуатации = ГодЭксплуатации + 1; КонецЕсли; РассчитаннаяАмортизацияБух = ПервоначальнаяСтоимость * (КоличествоЛетЭксплуатации - ГодЭксплуатации + 1) / СуммаЧиселЛет / 12; КонецЕсли; ИначеЕсли ОС.СпособНачисленияАмортизации = Перечисление.СпособыНачисленияАмортизацииОС.ПропорциональноОбъемуПродукцииРабот Тогда ОбщийОбъемВыпускаПродукции = ОС.ОбщийОбъемПродукцииРабот.Получить(ДатаНачалаМесяца-1); // Если была модернизация, то амортизация будет рассчитваться // исходя из оставшегося общего объема выпуска продукции после // модернизации. Если ОбъектМодернизирован = 1 Тогда Если ПустоеЗначение(ОС.ДатаВводаВЭксплуатацию) = 0 Тогда ДатаНачисленияАмортизации = КонМесяца(ДобавитьМесяц(ОС.ДатаВводаВЭксплуатацию, 1)); // дата окончания первого месяца, в котором начисляется амортизация //продолжение далее
|
|
|
|
|
Записан
|
|
|
|
|
alexey
|
 |
« Ответ #6 : 22 Февраль 2008, 08:13:52 » |
|
Пока ДатаНачисленияАмортизации <= КонМесяца(ДатаМодернизации) Цикл ОбщийОбъемВыпускаПродукции = ОбщийОбъемВыпускаПродукции - ОС.ФактическийОбъемПродукцииРаботЗаМесяц.Получить(ДатаНачисленияАмортизации + 1); ДатаНачисленияАмортизации = КонМесяца(ДатаНачисленияАмортизации + 1); КонецЦикла; КонецЕсли; КонецЕсли; Если ОбщийОбъемВыпускаПродукции > 0 Тогда РассчитаннаяАмортизацияБух = ПервоначальнаяСтоимость * ОС.ФактическийОбъемПродукцииРаботЗаМесяц.Получить(ДатаРеквизитов) / ОбщийОбъемВыпускаПродукции; КонецЕсли; ИначеЕсли ОС.СпособНачисленияАмортизации = Перечисление.СпособыНачисленияАмортизацииОС.ПоЕдинымНормам Тогда РассчитаннаяАмортизацияБух = ПервоначальнаяСтоимость * ОС.КоэффициентАмортизации.Получить(ДатаРеквизитов) / 1200; КонецЕсли; РассчитаннаяАмортизацияБух = Мин(РассчитаннаяАмортизацияБух, ОстаточнаяСтоимостьБух); КонецЕсли; КонецЕсли; Если РассчитыватьДанныеПоНалоговомуУчету = 1 Тогда // Формируем данные по налоговому учету Если ДатаРасчета < '01.01.2002' Тогда Если БалансоваяСтоимостьНач = 0 Тогда БалансоваяСтоимостьНалог = ОС.ПервоначальнаяСтоимость.Получить(ДатаНачалаМесяца); Иначе БалансоваяСтоимостьНалог = БалансоваяСтоимостьНач; КонецЕсли; НачисленнаяАмортизацияНалог = БухИт.СНК(СчетПоКоду("АОС"),,, ОС); ОстаточнаяСтоимостьНалог = БалансоваяСтоимостьНалог - НачисленнаяАмортизацияНалог; Иначе Если (ДатаРасчета>='01.01.2006') И (ПустоеЗначение(ОС.МатериалДляОтраженияВСоставеМПЗ)=0) Тогда БалансоваяСтоимостьНалог = БухИт.СНД("Н05.МЦ",,, ОС); БалансоваяСтоимостьНалогКон = БухИт.СКД("Н05.МЦ",,, ОС); Иначе БалансоваяСтоимостьНалог = БухИт.СНД("Н05.01",,, ОС); БалансоваяСтоимостьНалогКон = БухИт.СКД("Н05.01",,, ОС); КонецЕсли; НачисленнаяАмортизацияНалог = БухИт.СНК("Н05.02",,, ОС); НачисленнаяАмортизацияНалогКон = БухИт.СКК("Н05.02",,, ОС); КапВложенияНаправленныеНаРасходы = БухИт.СНД("Н05.КВ",,, ОС); БалансоваяСтоимостьНалог = БалансоваяСтоимостьНалог - КапВложенияНаправленныеНаРасходы; Если БалансоваяСтоимостьНалог <> 0 Тогда ОстаточнаяСтоимостьНалог = БалансоваяСтоимостьНалог - НачисленнаяАмортизацияНалог; КонецЕсли; КонецЕсли; // Определим должна ли в этом месяце быть начислена амортизация НачислятьАмортизацию = ОС.НачислятьАмортизацию.Получить(ДатаРасчета); Если НачислятьАмортизацию = 0 Тогда Если ОС.ДатаВыбытия = ДатаРасчета Тогда Если глНовыеПравилаВеденияНУ(ДатаРасчета) <> 1 Тогда // Т.к. налоговый учет ведется отдельными документами, то // на момент отражения выбытия в налоговом учете флажок // "Начислять амортизацию" уже сброшен документом, отражающим // выбытие объекта в бухгалтерском учете. НачислятьАмортизацию = ОС.НачислятьАмортизацию.Получить(ОС.ДатаВыбытия - 1); КонецЕсли; КонецЕсли; КонецЕсли; // Для ОС в составе МПЗ начисляем амортизацию только при установленной дате ввода в эксплуатацию. ДатаВводаВЭксплуатациюУстановлена = 1; Если (ПустоеЗначение(ОС.МатериалДляОтраженияВСоставеМПЗ) = 0) и ((КонМесяца(ОС.ДатаВводаВЭксплуатацию) >= КонМесяца(ДатаРасчета)) или (ПустоеЗначение(ОС.ДатаВводаВЭксплуатацию) = 1)) Тогда ДатаВводаВЭксплуатациюУстановлена = 0; КонецЕсли; // Рассчитаем для целей налогового учета амортизацию, если это необходимо. Если (НачислятьАмортизацию = 1) и (ДатаВводаВЭксплуатациюУстановлена = 1) Тогда Если ДатаРасчета < '01.01.2002' Тогда Если (ОС.КоэффициентАмортизации.Получить(ДатаРеквизитов) > 0) и (ОС.ДатаВводаВЭксплуатацию < БухИт.НачПериода()) Тогда РассчитаннаяАмортизацияНалог = БалансоваяСтоимостьНалог * ОС.КоэффициентАмортизации.Получить(ДатаРеквизитов) / 1200; КонецЕсли; Иначе Если БалансоваяСтоимостьНалог <> 0 Тогда ПервоначальнаяСтоимость = БалансоваяСтоимостьНалог; СрокПолезногоИспользования = ОС.СрокПолезногоИспользованияН.Получить(ДатаНачалаМесяца-1); ДатаВводаВЭксплуатацию = Макс(ОС.ДатаВводаВЭксплуатацию, '31.12.2001'); // Линейный метод Если ОС.МетодНачисленияАмортизации = Перечисление.МетодыНачисленияАмортизации.Линейный Тогда Если СрокПолезногоИспользования > 0 Тогда РассчитаннаяАмортизацияНалог = ПервоначальнаяСтоимость * ОС.СпециальныйКоэффициент.Получить(ДатаРеквизитов) / СрокПолезногоИспользования; КонецЕсли; // Нелинейный метод ИначеЕсли ОС.МетодНачисленияАмортизации = Перечисление.МетодыНачисленияАмортизации.Нелинейный Тогда Если СрокПолезногоИспользования > 0 Тогда БазоваяСтоимость = ОС.БазоваяСтоимость.Получить(ДатаРеквизитов); ДатаНачалаПримененияБазовойСтоимости = глДатаНаКоторуюУстановленоЗначение(ОС, "БазоваяСтоимость", ДатаРеквизитов); Если БазоваяСтоимость = 0 Тогда // базовая стоимость не определена ПрименяетсяБазоваяСтоимость = 0; ИначеЕсли ДатаВводаВЭксплуатацию > ДатаНачалаПримененияБазовойСтоимости Тогда // не понятно с какого момента применять базовую стоимость Если ОстаточнаяСтоимостьНалог > (БалансоваяСтоимостьНалог * 0.2) Тогда //если остаточная cтоимость > 20% от первоначальной ПрименяетсяБазоваяСтоимость = 0; Иначе ПрименяетсяБазоваяСтоимость = 1; КонецЕсли; Иначе ПрименяетсяБазоваяСтоимость = 1; КонецЕсли; Если ПрименяетсяБазоваяСтоимость = 0 Тогда РассчитаннаяАмортизацияНалог = ОстаточнаяСтоимостьНалог * 2 * ОС.СпециальныйКоэффициент.Получить(ДатаРеквизитов) / СрокПолезногоИспользования; Иначе // Если объект введен в эксплуатацию до 01.01.2002, то к налоговому учету он принят после 01.01.2002. КоличествоПолныхМесяцев = (ДатаГод(КонМесяца(ДатаРасчета)) - ДатаГод(КонМесяца(ДатаВводаВЭксплуатацию)+1)) * 12 + ДатаМесяц(КонМесяца(ДатаРасчета)) - ДатаМесяц(КонМесяца(ДатаВводаВЭксплуатацию)+1); ОставшийсяСрокПолезногоИспользования = ОС.СрокПолезногоИспользованияН.Получить(ДатаНачалаМесяца-1) - КоличествоПолныхМесяцев; Если ОставшийсяСрокПолезногоИспользования > 0 Тогда РассчитаннаяАмортизацияНалог = ОстаточнаяСтоимостьНалог/ОставшийсяСрокПолезногоИспользования Иначе РассчитаннаяАмортизацияНалог = ОстаточнаяСтоимостьНалог; КонецЕсли; КонецЕсли; КонецЕсли; КонецЕсли; КонецЕсли; КонецЕсли; РассчитаннаяАмортизацияНалог = Мин(РассчитаннаяАмортизацияНалог, ОстаточнаяСтоимостьНалог); КонецЕсли; КонецЕсли;
ИначеЕсли ДатаМесяц(ДатаРасчета) = 12 Тогда НачалоГода = НачГода(ДатаРасчета); Для НомерМесяца = 1 по 12 Цикл ДатаРеквизитов = КонМесяца(ДобавитьМесяц(НачалоГода, НомерМесяца-1)); Если ОС.НачислятьАмортизацию.Получить(ДатаРеквизитов) = 1 Тогда БухИт.ПериодМ(НомерМесяца, ДатаГод(ДатаРасчета)); // Рассчитаем балансовую стоимость на начало и на конец месяца // Необходимо проанализировать все счета, на которых может // учитываться объект БалансоваяСтоимостьНаНачалоМесяца = 0; БалансоваяСтоимостьНаКонецМесяца = 0; Индекс = 1; Пока Индекс <= СписокСчетовУчета.РазмерСписка() Цикл СчетУчетаИзСписка = СписокСчетовУчета.ПолучитьЗначение(Индекс); БалансоваяСтоимостьНаНачалоМесяца = БалансоваяСтоимостьНаНачалоМесяца + БухИт.СНД(СчетУчетаИзСписка,,, ОС); БалансоваяСтоимостьНаКонецМесяца = БалансоваяСтоимостьНаКонецМесяца + БухИт.СКД(СчетУчетаИзСписка,,, ОС); Индекс = Индекс + 1; КонецЦикла; НачисленныйИзнос = БухИт.СНД(СчетНачисленияАмортизации,,, ОС); // Если объект не выбыл, то рассчитываем сумму износа Если БалансоваяСтоимостьНаКонецМесяца <> 0 Тогда ОстаточнаяСтоимость = БалансоваяСтоимостьНаНачалоМесяца - НачисленныйИзнос - РассчитаннаяАмортизацияБух; ИзносЗаМесяц = БалансоваяСтоимостьНаНачалоМесяца * ОС.КоэффициентАмортизации.Получить(ДатаРеквизитов) / 1200; РассчитаннаяАмортизацияБух = РассчитаннаяАмортизацияБух + Мин(ИзносЗаМесяц, ОстаточнаяСтоимость); КонецЕсли; КонецЕсли; КонецЦикла; КонецЕсли; РассчитаннаяАмортизацияБух = Окр(РассчитаннаяАмортизацияБух, 2, 1); РассчитаннаяАмортизацияНалог = Окр(РассчитаннаяАмортизацияНалог, 2, 1); СведенияОбОС = СоздатьОбъект("СписокЗначений"); СведенияОбОС.Установить("СчетУчета", СчетУчета); СведенияОбОС.Установить("БалансоваяСтоимостьНач", БалансоваяСтоимостьНач); СведенияОбОС.Установить("БалансоваяСтоимостьКон", БалансоваяСтоимостьКон); СведенияОбОС.Установить("БалансоваяСтоимостьНалог", БалансоваяСтоимостьНалог); СведенияОбОС.Установить("БалансоваяСтоимостьНалогКон", БалансоваяСтоимостьНалогКон); СведенияОбОС.Установить("СчетНачисленияАмортизации", СчетНачисленияАмортизации); СведенияОбОС.Установить("НачисленнаяАмортизацияНач", НачисленнаяАмортизацияНач); СведенияОбОС.Установить("НачисленнаяАмортизацияКон", НачисленнаяАмортизацияКон); СведенияОбОС.Установить("НачисленнаяАмортизацияНалог", НачисленнаяАмортизацияНалог); СведенияОбОС.Установить("РассчитаннаяАмортизацияБух", РассчитаннаяАмортизацияБух); СведенияОбОС.Установить("РассчитаннаяАмортизацияНалог", РассчитаннаяАмортизацияНалог); СведенияОбОС.Установить("НачисленнаяАмортизацияНалогКон", НачисленнаяАмортизацияНалогКон); СведенияОбОС.Установить("ПрименяетсяБазоваяСтоимость", ПрименяетсяБазоваяСтоимость); СведенияОбОС.Установить("КапВложенияНаправленныеНаРасходы",КапВложенияНаправленныеНаРасходы); Возврат СведенияОбОС; КонецФункции
|
|
|
|
|
Записан
|
|
|
|
|