Группа: Пользователи*
Сообщений: 940
Спасибо сказали: 285 раз
Рейтинг: 0
В релизе 7.70.287 начисление износа по прямолинейному методу в БУ поисходит по формуле: (ПервСтоимость-ЛиквидСтоимость)/СрокИспользования , где ПервСтоимость -- первоначальная стоимость (сальдо по дебету счета учета) ОС без учета начисленного износа; ЛиквидСтоимость -- ликвидационная стоимость (как задана в карточке ОС); СрокИспользования -- срок использования (как задан в карточке ОС). Такой расчет ошибочен в случае, если с 01.04.11 для ОС был изменен метод начисления амортизации с налогового на прямолинейный. Согласно утверждениям моих клиентов (бухгалтеров) и консультациям в бухгалтерских изданиях начисляемая за апрель 2011 (и последующие месяцы) сумма износа в БУ должна быть равной начисляемой сумме износа в НУ. Для изменения алгоритма расчета можно изменить модуль документа НачислениеИзноса следующим образом:
1. Добавить две процедуры в начале модуля:
// Добавлено 5_копеек (начало) //********************************************************************* Функция КонтрольИзмененияМетода(ОС) Если ОС.ДатаВвода>Дата("01.04.11") Тогда Возврат 0; КонецЕсли; // ОС.ДатаВвода Попытка СтарМетод=ОС.МетодРасчетаИзноса.Получить(НачМесяца(ДатаНачНУ)); НовМетод=ОС.МетодРасчетаИзноса.Получить(НачМесяца(ДобавитьМесяц(ДатаНачНУ,1))); Исключение Метод=СоздатьОбъект("Периодический"); Метод.ИспользоватьОбъект("МетодРасчетаИзноса",ОС); СтарМетод=Метод.ЗначениеНаДату(НачМесяца(ДатаНачНУ)); НовМетод=Метод.ЗначениеНаДату(НачМесяца(ДобавитьМесяц(ДатаНачНУ,1))); КонецПопытки; Если СтарМетод=НовМетод Тогда Возврат 0; КонецЕсли; // СтарМетод=НовМетод Возврат 1; КонецФункции //ПроверкаИзмененияМетода
2. Изменить процедуру РассчитатьИзносПоЭлементу(...)
... Если (ИзношеноПолностью = 0) или (ИзношеноПолностьюНУ = 0) Тогда //ПрямолинейноеСписание Если Элемент.МетодРасчетаИзноса = Перечисление.МетодыРасчетаИзноса.ПрямолинейноеСписание Тогда Если Элемент.СрокИспользования = 0 Тогда глКомментарий(Строка(Элемент)+": не задан срок полезного использования. Износ не начислен!",0,,"!"); Возврат; КонецЕсли; СуммаИзноса = Макс(Окр((ПервСтоимость - ЛиквидационнаяСтоимость)/Элемент.СрокИспользования,2),0); //налоговый учет СрокИспользованияНУ = РассчитатьСрокИспользования(Элемент.ДатаВвода,Элемент.СрокИспользования); // Добавлено 5_копеек (начало) // бухучет при изменении метода Если КонтрольИзмененияМетода(Элемент)=1 Тогда СуммаИзноса=0; Если (СрокИспользованияНУ<>0) Тогда СуммаИзноса = Макс(Окр((ПервСтоимость - ЛиквидационнаяСтоимость)/СрокИспользованияНУ,2),0); КонецЕсли;
КонецЕсли; // КонтрольИзмененияМетода(Элемент)=1 // Добавлено 5_копеек (конец) СуммаИзносаНУ = 0; Если (СрокИспользованияНУ<>0) Тогда СуммаИзносаНУ = Макс(Окр((ПервСтоимостьНУ - ЛиквидационнаяСтоимость)/СрокИспользованияНУ,2),0); КонецЕсли;
//УменьшениеОстатка ...
3. Изменить процедуру РассчитатьИзносПоСчету(...):
... ОстСтоимость = ПервСтоимость - Износ; ОстСтоимостьНУ = ПервСтоимостьНУ - ИзносНУ; Если (Сч = СчетПоКоду("10")) или (Сч = СчетПоКоду("100")) Тогда ПервКво = 1; КонецЕсли; // Добавлено 5_копеек (начало) Если КонтрольИзмененияМетода(Ит.Субконто(1))=1 Тогда РассчитатьПервСтоимостьБУ(Ит.Субконто(1),ПервСтоимость,СчИзноса,Сч); КонецЕсли; // КонтрольИзмененияМетода(Ит.Субконто(1))=1 // Добавлено 5_копеек (конец) РассчитатьИзносПоЭлементу(Ит.Субконто(1),ПервСтоимость,ПервКво,ОстСтоимость,СчИзноса,Сч,ПервСтоимостьНУ,ОстСтоимость НУ,СчИзносаНУ,СчНУ); ...
Рассматривался частный случай, поэтому на универсальность решение не претендует. Если есть возражения, дополнения или обнаружены ошибки, прошу комментировать. ____ добавлена проверка на ненулевое значение
Сообщение отредактировал 5_kopeek - 25.07.11, 15:46
Группа: Местный
Сообщений: 237
Спасибо сказали: 47 раз
Рейтинг: 42
В принципе правильно, но не слишком рационально... Я пошел другим путем, взял остаточную стоимость отнял "ЛиквидационнаяСтоимость" и разделил на оставшееся количество месяцев (СрокИспользования - к-во месяцев за которые начислялся износ). Если кого-то затронуло...
//СуммаИзноса = Макс(Окр((ПервСтоимость - ЛиквидационнаяСтоимость)/Элемент.СрокИспользования,2),0); // Начало( // определим к-во мес. за которые начислялся износ ДатаВвода = Элемент.ДатаВвода; ДатаВвода = ?(ДатаЧисло(ДатаВвода)=1, ДатаВвода, КонМесяца(ДатаВвода)+1); Годы = ДатаГод(ДатаДок)-ДатаГод(ДатаВвода); Если Годы < 0 Тогда Годы = Годы + 100; КонецЕсли; РазницаМес = ДатаМесяц(ДатаДок) - ДатаМесяц(ДатаВвода) + Годы*12; Если ДатаЧисло(ДатаДок) < ДатаЧисло(ДатаВвода) Тогда РазницаМес = РазницаМес-1; КонецЕсли; СуммаИзноса = Макс(Окр((ОстСтоимость - ЛиквидационнаяСтоимость)/(Элемент.СрокИспользования-РазницаМес),2),0); // окончание)
Группа: Пользователи
Сообщений: 11
Спасибо сказали: 0 раз
Рейтинг: 0
Цитата(alex1c @ 23.07.11, 11:49)
В принципе правильно, но не слишком рационально... Я пошел другим путем, взял остаточную стоимость отнял "ЛиквидационнаяСтоимость" и разделил на оставшееся количество месяцев (СрокИспользования - к-во месяцев за которые начислялся износ). Если кого-то затронуло...
//СуммаИзноса = Макс(Окр((ПервСтоимость - ЛиквидационнаяСтоимость)/Элемент.СрокИспользования,2),0); // Начало( // определим к-во мес. за которые начислялся износ ДатаВвода = Элемент.ДатаВвода; ДатаВвода = ?(ДатаЧисло(ДатаВвода)=1, ДатаВвода, КонМесяца(ДатаВвода)+1); Годы = ДатаГод(ДатаДок)-ДатаГод(ДатаВвода); Если Годы < 0 Тогда Годы = Годы + 100; КонецЕсли; РазницаМес = ДатаМесяц(ДатаДок) - ДатаМесяц(ДатаВвода) + Годы*12; Если ДатаЧисло(ДатаДок) < ДатаЧисло(ДатаВвода) Тогда РазницаМес = РазницаМес-1; КонецЕсли; СуммаИзноса = Макс(Окр((ОстСтоимость - ЛиквидационнаяСтоимость)/(Элемент.СрокИспользования-РазницаМес),2),0); // окончание)
единственное что подправил дату ввода на 1.04.11.
Я делал так как в первом случае представлено. И вот что мне выдала программа СтарМетод=ОС.МетодРасчетаИзноса.Получить(НачМесяца(ДатаНачНУ<<?>>)); {Документ.НачислениеИзноса.Модуль Документа(8)}: Переменная не определена (ДатаНачНУ) СтарМетод=ОС.МетодРасчетаИзноса.Получить(НачМесяца(ДатаНачНУ)<<?>>); {Документ.НачислениеИзноса.Модуль Документа(8)}: Неопознанный оператор НовМетод=ОС.МетодРасчетаИзноса.Получить(НачМесяца(ДобавитьМесяц(ДатаНачНУ<<?>>,1))); {Документ.НачислениеИзноса.Модуль Документа(9)}: Переменная не определена (ДатаНачНУ) НовМетод=ОС.МетодРасчетаИзноса.Получить(НачМесяца(ДобавитьМесяц(ДатаНачНУ,1)<<?>>)); {Документ.НачислениеИзноса.Модуль Документа(9)}: Неопознанный оператор НовМетод=ОС.МетодРасчетаИзноса.Получить(НачМесяца(ДобавитьМесяц(ДатаНачНУ,1)))<<?>>; {Документ.НачислениеИзноса.Модуль Документа(9)}: Ожидается ключевое слово 'КонецФункции' ('EndFunction') Что то упустил? "единственное что подправил дату ввода на 1.04.11." Это Вы где подправили? Всем объектам поставили 01.04.2011? А если я не хочу автоматом определям срок использования. В процессе инвентаризации просто определили срок полезного использования после 01.04.2011
Группа: Местный
Сообщений: 237
Спасибо сказали: 47 раз
Рейтинг: 42
У вас наверное комплексная, а в ней не определен параметр ДатаНачНУ. Ошибка... Ну а если вы не хотите всем объектам ставить дату ввода 01.04.11, тогда ставьте срок использования, с даты ввода, а не с 1.04...
Группа: Пользователи
Сообщений: 15
Спасибо сказали: 0 раз
Рейтинг: 0
Цитата(5_kopeek @ 21.07.11, 18:04)
В релизе 7.70.287 начисление износа по прямолинейному методу в БУ поисходит по формуле: (ПервСтоимость-ЛиквидСтоимость)/СрокИспользования , где ПервСтоимость -- первоначальная стоимость (сальдо по дебету счета учета) ОС без учета начисленного износа; ЛиквидСтоимость -- ликвидационная стоимость (как задана в карточке ОС); СрокИспользования -- срок использования (как задан в карточке ОС). Такой расчет ошибочен в случае, если с 01.04.11 для ОС был изменен метод начисления амортизации с налогового на прямолинейный. Согласно утверждениям моих клиентов (бухгалтеров) и консультациям в бухгалтерских изданиях начисляемая за апрель 2011 (и последующие месяцы) сумма износа в БУ должна быть равной начисляемой сумме износа в НУ. Для изменения алгоритма расчета можно изменить модуль документа НачислениеИзноса следующим образом:
СПАСИБО ОГРОМНОЕ,ВСЕ РАБОТАЕТ!
Причина редактирования: Ну какая же кривизна рук должна быть, чтобы некорректно вставлять теги!!!
Группа: Пользователи
Сообщений: 11
Спасибо сказали: 0 раз
Рейтинг: 0
Цитата(alex1c @ 23.07.11, 13:49)
У вас наверное комплексная, а в ней не определен параметр ДатаНачНУ. Ошибка... Ну а если вы не хотите всем объектам ставить дату ввода 01.04.11, тогда ставьте срок использования, с даты ввода, а не с 1.04...
Группа: Пользователи
Сообщений: 11
Спасибо сказали: 0 раз
Рейтинг: 0
Цитата(Pepe @ 23.07.11, 16:07)
Чудес не бывает. Возможно была допущена ошибка при внесении изменений. В конфигураторе Конфигурация-полный синтаксический контроль. Листинг в студию.
Вот что выдало, то же самое, что и в программе СтарМетод=ОС.МетодРасчетаИзноса.Получить(НачМесяца(ДатаНачНУ<<?>>)); {Документ.НачислениеИзноса.Модуль Документа(8)}: Переменная не определена (ДатаНачНУ) СтарМетод=ОС.МетодРасчетаИзноса.Получить(НачМесяца(ДатаНачНУ)<<?>>); {Документ.НачислениеИзноса.Модуль Документа(8)}: Неопознанный оператор НовМетод=ОС.МетодРасчетаИзноса.Получить(НачМесяца(ДобавитьМесяц(ДатаНачНУ<<?>>,1))); {Документ.НачислениеИзноса.Модуль Документа(9)}: Переменная не определена (ДатаНачНУ) НовМетод=ОС.МетодРасчетаИзноса.Получить(НачМесяца(ДобавитьМесяц(ДатаНачНУ,1)<<?>>)); {Документ.НачислениеИзноса.Модуль Документа(9)}: Неопознанный оператор НовМетод=ОС.МетодРасчетаИзноса.Получить(НачМесяца(ДобавитьМесяц(ДатаНачНУ,1)))<<?>>; {Документ.НачислениеИзноса.Модуль Документа(9)}: Ожидается ключевое слово 'КонецФункции' ('EndFunction') При проверке модуля обнаружены синтаксические ошибки!
Исправил, теперь считает, но не правильно. По прямолинейному методу считает опять от первоначальной стоимости без учета уже начисленного износа. Выше приведена информация как этого избежать, если я правильно понял, но у меня что то не получается.
А за апрель вообще не начисляется износ, но у меня же основные фонды не новые.
Группа: Пользователи
Сообщений: 56
Спасибо сказали: 9 раз
Рейтинг: 9
Цитата(5_kopeek @ 21.07.11, 19:04)
В релизе 7.70.287 начисление износа по прямолинейному методу в БУ поисходит по формуле: (ПервСтоимость-ЛиквидСтоимость)/СрокИспользования , где ПервСтоимость -- первоначальная стоимость (сальдо по дебету счета учета) ОС без учета начисленного износа; ЛиквидСтоимость -- ликвидационная стоимость (как задана в карточке ОС); СрокИспользования -- срок использования (как задан в карточке ОС). Такой расчет ошибочен в случае, если с 01.04.11 для ОС был изменен метод начисления амортизации с налогового на прямолинейный.
Этот глюк так и остался и после обновления на релиз 288. После проведения документа "Корректировка.." Налоговая амортизация считается правильно, а вот в бухгалтерском учете заметил, что для определения остаточной стоимости за базу берется первоначальная стоимость (при вводе в эксплуатацию) и делится на весь полезный срок использования, без учета периода эксплуатации. Пришлось воспользоваться кодом, выложенным постом выше 5_Копеек. Теперь начисленная сумма амортизации в налоговом = бухгалтерскому износу. Спасибо 5_Копеек
Группа: Пользователи
Сообщений: 52
Спасибо сказали: 4 раз
Рейтинг: 0
Цитата(5_kopeek @ 21.07.11, 19:04)
В релизе 7.70.287 начисление износа по прямолинейному методу в БУ поисходит по формуле: ... Такой расчет ошибочен в случае, если с 01.04.11 для ОС был изменен метод начисления амортизации с налогового на прямолинейный. ...
Группа: Пользователи
Сообщений: 52
Спасибо сказали: 4 раз
Рейтинг: 0
Зробив по методу Alex1c:
Цитата(alex1c @ 23.07.11, 12:49)
Я пошел другим путем, взял остаточную стоимость отнял "ЛиквидационнаяСтоимость" и разделил на оставшееся количество месяцев (СрокИспользования - к-во месяцев за которые начислялся износ).
При проведенні документа видається помилка, і документ не проводиться. "СуммаИзноса = Макс(Окр((ОстСтоимость - ЛиквидационнаяСтоимость)/(Элемент.СрокИспользования-РазницаМес),2),0); {Документ.НачислениеИзноса.Модуль Документа(100)}: Деление на 0" Я так зрозумів, що це у місяці, в якому повинно нарахуватися 100% зносу. Як виправити?
Рассматривался частный случай, поэтому на универсальность решение не претендует. Если есть возражения, дополнения или обнаружены ошибки, прошу комментировать.
У меня половина ОС по этому алгоритму не проводится. Протрассировал для одного элемента: НА = ARC BACK UPC CS 350 EI НА.ДатаВвода = '25.02.02' НА.СрокИспользования = 12
1. Перед вызовом РассчитатьПервСтоимостьБУ(НА,ПервСтоимость,СчИзноса,Сч): ( из РассчитатьИзносПоСчету() ) ПервСтоимость = 415 ОстСтоимость = 40.63 ПервСтоимостьНУ = 40.63 ОстСтоимостьНУ = 40.63
2. После вызова РассчитатьПервСтоимостьБУ(НА,ПервСтоимость,СчИзноса,Сч): ( из РассчитатьИзносПоСчету() ) ПервСтоимость = 40.63 ОстСтоимость = 40.63 ПервСтоимостьНУ = 40.63 ОстСтоимостьНУ = 40.63
Если (ИзношеноПолностью = 0) или (ИзношеноПолностьюНУ = 0) Тогда // ПрямолинейноеСписание Если Элемент.МетодРасчетаИзноса = Перечисление.МетодыРасчетаИзноса.ПрямолинейноеСписание Тогда Если Элемент.СрокИспользования = 0 Тогда глКомментарий(Строка(Элемент)+": не задан срок полезного использования. Износ не начислен!",0,,"!"); Возврат; КонецЕсли; СуммаИзноса = Макс(Окр((ПервСтоимость - ЛиквидационнаяСтоимость)/Элемент.СрокИспользования,2),0); точка1 // Налоговый учет СрокИспользованияНУ = РассчитатьСрокИспользования(Элемент.ДатаВвода,Элемент.СрокИспользования); //! Бухучет при изменении метода Если КонтрольИзмененияМетода(Элемент) = 1 Тогда СуммаИзноса=0; Если СрокИспользованияНУ <> 0 Тогда СуммаИзноса = Макс(Окр((ПервСтоимость - ЛиквидационнаяСтоимость)/СрокИспользованияНУ,2),0); КонецЕсли; точка2 КонецЕсли; СуммаИзносаНУ = 0; Если СрокИспользованияНУ <> 0 Тогда СуммаИзносаНУ = Макс(Окр((ПервСтоимостьНУ - ЛиквидационнаяСтоимость)/СрокИспользованияНУ,2),0); КонецЕсли; точка3
Т.е. в точке1 износ правильный, а после точки2 = нулевой. По моему, это не верно, т.к. у этого ОС до 01.04.2011г. метод расчета износа был налоговый, а с 01.04.2011г. - прямолин.списание. И срок использования нужно считать не от даты ввода ОС в эксплуатация, с 01.04.2011г. Для своей конфы я пока решил проблему след. образом:
Если Элемент.ДатаВвода < '01.04.2011' Тогда Если СпрНА.МетодРасчетаИзноса.Получить('30.03.2011') = Перечисление.МетодыРасчетаИзноса.ПрямолинейноеСписание Тогда ОставшийсяСрокИспользования = Месяцев(Элемент.ДатаВвода, ДатаДок)-1; Иначе ОставшийсяСрокИспользования = Месяцев('01.04.2011', ДатаДок); КонецЕсли Иначе Если ДатаДок < Элемент.ДатаВвода Тогда //! Этого не может быть! Сообщить("Ошибка: попытка расчета амортизации для '"+СокрЛП(Элемент)+"', введенного позже даты текущего документа: "+СокрЛП(Элемент.ДатаВвода)); ОставшийсяСрокИспользования = 0; ИначеЕсли ДатаДок > Элемент.ДатаВвода Тогда ОставшийсяСрокИспользования = Месяцев(Элемент.ДатаВвода, ДатаДок); Иначе ОставшийсяСрокИспользования = Элемент.СрокИспользования; КонецЕсли; КонецЕсли; //! Найдем количество месяцев, оставшихся до конца эксплуатации ОставшийсяСрокИспользования = Элемент.СрокИспользования - ОставшийсяСрокИспользования; СуммаИзноса = Макс(Окр((ОстСтоимость-ЛиквидационнаяСтоимость)/ОставшийсяСрокИспользования,2),0); //налоговый учет СрокИспользованияНУ = РассчитатьСрокИспользования(Элемент.ДатаВвода,Элемент.СрокИспользования); СуммаИзносаНУ = 0; Если (СрокИспользованияНУ<>0) Тогда СуммаИзносаНУ = Макс(Окр((ПервСтоимостьНУ - ЛиквидационнаяСтоимость)/СрокИспользованияНУ,2),0); КонецЕсли;
Где функция Месяцев(..) следующая:
Функция Месяцев(ДатаН, ДатаК) //! Возвращает количество полных месяцев между датами Если ДатаН < ДатаК Тогда ТекДата=НачМесяца(ДатаН); Значение=0; Пока ТекДата<НачМесяца(ДатаК) Цикл ТекДата=ДобавитьМесяц(ТекДата,1); Значение=Значение+1; КонецЦикла; Возврат(Значение); Иначе Возврат(0); КонецЕсли; КонецФункции
Для расчета СуммаИзносаНУ остался старый алгоритм, и СуммаИзносаНУ не совпадает с СуммаИзноса по бух.учету. Наверное вместо СрокИспользованияНУ надо использовать ОставшийсяСрокИспользования.
Группа: Пользователи
Сообщений: 52
Спасибо сказали: 4 раз
Рейтинг: 0
Цитата(Andrij-ko @ 08.08.11, 15:00)
При проведенні документа видається помилка, і документ не проводиться. "СуммаИзноса = Макс(Окр((ОстСтоимость - ЛиквидационнаяСтоимость)/(Элемент.СрокИспользования-РазницаМес),2),0); {Документ.НачислениеИзноса.Модуль Документа(100)}: Деление на 0"
завдяки Alex1c ця проблема з нарахуванням зносу в останньому місяці вирішилась таким чином:
Если (ИзношеноПолностью = 0) Тогда //СуммаИзноса = Макс(Окр((ПервСтоимость - ЛиквидационнаяСтоимость)/Элемент.СрокИспользования,2),0); // определим к-во мес. за которые начислялся износ ДатаВвода = Элемент.ДатаВвода; ДатаВвода = ?(ДатаЧисло(ДатаВвода)=1, ДатаВвода, КонМесяца(ДатаВвода)+1); Годы = ДатаГод(ДатаДок)-ДатаГод(ДатаВвода); Если Годы < 0 Тогда Годы = Годы + 100; КонецЕсли; РазницаМес = ДатаМесяц(ДатаДок) - ДатаМесяц(ДатаВвода) + Годы*12; Если ДатаЧисло(ДатаДок) < ДатаЧисло(ДатаВвода) Тогда РазницаМес = РазницаМес-1; КонецЕсли; СрокИспользования = Элемент.СрокИспользования-РазницаМес; СуммаИзноса = ?(СрокИспользования=0, 0, Макс(Окр((ОстСтоимость - ЛиквидационнаяСтоимость)/СрокИспользования,2),0)); КонецЕсли;
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!