Версия для печати темы (https://pro1c.org.ua/index.php?s=95cd21a6556bb39be53e808d2f9514e5&showtopic=4200)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование в 1С Предприятие 7.7 _ Амортизация основных средств (начисление износа)

Автор: 5_kopeek 21.07.11, 18:04

В релизе 7.70.287 начисление износа по прямолинейному методу в БУ поисходит по формуле:
(ПервСтоимость-ЛиквидСтоимость)/СрокИспользования
, где
ПервСтоимость -- первоначальная стоимость (сальдо по дебету счета учета) ОС без учета начисленного износа;
ЛиквидСтоимость -- ликвидационная стоимость (как задана в карточке ОС);
СрокИспользования -- срок использования (как задан в карточке ОС).
Такой расчет ошибочен в случае, если с 01.04.11 для ОС был изменен метод начисления амортизации с налогового на прямолинейный. Согласно утверждениям моих клиентов (бухгалтеров) и консультациям в бухгалтерских изданиях начисляемая за апрель 2011 (и последующие месяцы) сумма износа в БУ должна быть равной начисляемой сумме износа в НУ. Для изменения алгоритма расчета можно изменить модуль документа НачислениеИзноса следующим образом:

1. Добавить две процедуры в начале модуля:

// Добавлено 5_копеек (начало) 
//*********************************************************************
Функция КонтрольИзмененияМетода(ОС)
    Если ОС.ДатаВвода>Дата("01.04.11") Тогда
        Возврат 0;
    КонецЕсли; // ОС.ДатаВвода
    Попытка
        СтарМетод=ОС.МетодРасчетаИзноса.Получить(НачМесяца(ДатаНачНУ));
        НовМетод=ОС.МетодРасчетаИзноса.Получить(НачМесяца(ДобавитьМесяц(ДатаНачНУ,1)));
    Исключение  
        Метод=СоздатьОбъект("Периодический");
        Метод.ИспользоватьОбъект("МетодРасчетаИзноса",ОС);
        СтарМетод=Метод.ЗначениеНаДату(НачМесяца(ДатаНачНУ));
        НовМетод=Метод.ЗначениеНаДату(НачМесяца(ДобавитьМесяц(ДатаНачНУ,1)));
    КонецПопытки;
    Если СтарМетод=НовМетод Тогда
        Возврат 0;
    КонецЕсли; // СтарМетод=НовМетод
    Возврат 1;
КонецФункции //ПроверкаИзмененияМетода  

//*********************************************************************
Процедура РассчитатьПервСтоимостьБУ(ОС,ПервСтоимостьБУ,СчИзноса,Сч)
    СписокСчетов = СоздатьОбъект("СписокЗначений");
    СписокСчетов.ДобавитьЗначение(Сч);
    СписокСчетов.ДобавитьЗначение(СчИзноса);
    ИтБУ = СоздатьОбъект("БухгалтерскиеИтоги");
    ИтБУ.ИспользоватьРазделительУчета(Фирма);
    ИтБУ.ИспользоватьСубконто(ВидыСубконто.НеоборотныеАктивы,ОС); // ОС, НМА
    ИтБУ.ВыполнитьЗапрос(НачМесяца(ДатаНачНУ),КонМесяца(ДатаНачНУ),СписокСчетов);
    ИтБУ.ВыбратьСубконто(1);
    Износ = 0;ПервСтоимость = 0;
    Если ИтБУ.ПолучитьСубконто(1) = 1 Тогда
        Износ = 0;ПервСтоимость = 0;
        Если ИтБУ.ПолучитьСчет(,СчИзноса) = 1 Тогда
            Износ = ИтБУ.СКК("С");
        КонецЕсли;
        Если ИтБУ.ПолучитьСчет(,Сч) = 1 Тогда
            ПервСтоимость = ИтБУ.СКД("С");  
        КонецЕсли;
    КонецЕсли;
    ПервСтоимостьБУ = ПервСтоимость - Износ;
КонецПроцедуры //РассчитатьПервСтоимостьБУ
// Добавлено 5_копеек (конец)

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),ПервСтоимость,ПервКво,ОстСтоимость,СчИзноса,Сч,ПервСтоимостьНУ,ОстСтоимость
НУ,СчИзносаНУ,СчНУ);
...

Рассматривался частный случай, поэтому на универсальность решение не претендует. Если есть возражения, дополнения или обнаружены ошибки, прошу комментировать.
____
добавлена проверка на ненулевое значение

Автор: alex1c 23.07.11, 11:49

В принципе правильно, но не слишком рационально...
Я пошел другим путем, взял остаточную стоимость отнял "ЛиквидационнаяСтоимость" и разделил на оставшееся количество месяцев (СрокИспользования - к-во месяцев за которые начислялся износ). Если кого-то затронуло...

//СуммаИзноса = Макс(Окр((ПервСтоимость - ЛиквидационнаяСтоимость)/Элемент.СрокИспользования,2),0);
// Начало(
// определим к-во мес. за которые начислялся износ
ДатаВвода = Элемент.ДатаВвода;
ДатаВвода = ?(ДатаЧисло(ДатаВвода)=1, ДатаВвода, КонМесяца(ДатаВвода)+1);
Годы = ДатаГод(ДатаДок)-ДатаГод(ДатаВвода);
Если Годы < 0 Тогда
    Годы = Годы + 100;
КонецЕсли;
РазницаМес = ДатаМесяц(ДатаДок) - ДатаМесяц(ДатаВвода) + Годы*12;
Если ДатаЧисло(ДатаДок) < ДатаЧисло(ДатаВвода) Тогда
    РазницаМес = РазницаМес-1;
КонецЕсли;
СуммаИзноса = Макс(Окр((ОстСтоимость - ЛиквидационнаяСтоимость)/(Элемент.СрокИспользования-РазницаМес),2),0);
// окончание)

единственное что подправил дату ввода на 1.04.11.

Автор: kostyabuh1971 23.07.11, 13:06

Цитата(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

Автор: alex1c 23.07.11, 13:49

У вас наверное комплексная, а в ней не определен параметр ДатаНачНУ. Ошибка...
Ну а если вы не хотите всем объектам ставить дату ввода 01.04.11, тогда ставьте срок использования, с даты ввода, а не с 1.04...

Автор: valeria 23.07.11, 14:07

Цитата(5_kopeek @ 21.07.11, 18:04) *
В релизе 7.70.287 начисление износа по прямолинейному методу в БУ поисходит по формуле:
(ПервСтоимость-ЛиквидСтоимость)/СрокИспользования
, где
ПервСтоимость -- первоначальная стоимость (сальдо по дебету счета учета) ОС без учета начисленного износа;
ЛиквидСтоимость -- ликвидационная стоимость (как задана в карточке ОС);
СрокИспользования -- срок использования (как задан в карточке ОС).
Такой расчет ошибочен в случае, если с 01.04.11 для ОС был изменен метод начисления амортизации с налогового на прямолинейный. Согласно утверждениям моих клиентов (бухгалтеров) и консультациям в бухгалтерских изданиях начисляемая за апрель 2011 (и последующие месяцы) сумма износа в БУ должна быть равной начисляемой сумме износа в НУ. Для изменения алгоритма расчета можно изменить модуль документа НачислениеИзноса следующим образом:


СПАСИБО ОГРОМНОЕ,ВСЕ РАБОТАЕТ!

Автор: kostyabuh1971 23.07.11, 14:15

Цитата(alex1c @ 23.07.11, 13:49) *
У вас наверное комплексная, а в ней не определен параметр ДатаНачНУ. Ошибка...
Ну а если вы не хотите всем объектам ставить дату ввода 01.04.11, тогда ставьте срок использования, с даты ввода, а не с 1.04...

А как мне его добавить в мою конфигурацию?

Автор: Pepe 23.07.11, 14:46

Цитата(kostyabuh1971 @ 23.07.11, 15:15) *
А как мне его добавить в мою конфигурацию?

Пропишите ее в начале модуля документа как переменную и добавьте строку ДатаНачНУ="31.03.2011" в процедуру ОбработкаПроведения.

Автор: kostyabuh1971 23.07.11, 15:19

Цитата(Pepe @ 23.07.11, 14:46) *
Пропишите ее в начале модуля документа как переменную и добавьте строку ДатаНачНУ="31.03.2011" в процедуру ОбработкаПроведения.

У меня все прописано, но ошибку продолжает выдавать. Что еще можно предпринять?

Автор: Pepe 23.07.11, 15:53

Воспользоваться отладчиком и посмотреть значение переменной.
Конфигурация?

Автор: kostyabuh1971 23.07.11, 16:06

Цитата(Pepe @ 23.07.11, 15:53) http://pro1c.org.ua/index.php?act=findpost&pid=28164
Воспользоваться отладчиком и посмотреть значение переменной.
Конфигурация?

Вот какая у меня в отладчике процедура

[удалено т.к. пользователю впадлу прочесть правила]

Я правильно смотрю? Может не то смотрю?

Автор: Pepe 23.07.11, 16:07

Чудес не бывает. Возможно была допущена ошибка при внесении изменений. В конфигураторе Конфигурация-полный синтаксический контроль. Листинг в студию.

Автор: kostyabuh1971 23.07.11, 16:13

Цитата(Pepe @ 23.07.11, 16:07) *
Чудес не бывает. Возможно была допущена ошибка при внесении изменений. В конфигураторе Конфигурация-полный синтаксический контроль. Листинг в студию.

Вот что выдало, то же самое, что и в программе
СтарМетод=ОС.МетодРасчетаИзноса.Получить(НачМесяца(ДатаНачНУ<<?>>));
{Документ.НачислениеИзноса.Модуль Документа(8)}: Переменная не определена (ДатаНачНУ)
СтарМетод=ОС.МетодРасчетаИзноса.Получить(НачМесяца(ДатаНачНУ)<<?>>);
{Документ.НачислениеИзноса.Модуль Документа(8)}: Неопознанный оператор
НовМетод=ОС.МетодРасчетаИзноса.Получить(НачМесяца(ДобавитьМесяц(ДатаНачНУ<<?>>,1)));
{Документ.НачислениеИзноса.Модуль Документа(9)}: Переменная не определена (ДатаНачНУ)
НовМетод=ОС.МетодРасчетаИзноса.Получить(НачМесяца(ДобавитьМесяц(ДатаНачНУ,1)<<?>>));
{Документ.НачислениеИзноса.Модуль Документа(9)}: Неопознанный оператор
НовМетод=ОС.МетодРасчетаИзноса.Получить(НачМесяца(ДобавитьМесяц(ДатаНачНУ,1)))<<?>>;
{Документ.НачислениеИзноса.Модуль Документа(9)}: Ожидается ключевое слово 'КонецФункции' ('EndFunction')
При проверке модуля обнаружены синтаксические ошибки!

А какие ошибки? Как исправить?

Автор: Pepe 23.07.11, 16:22

Начало модуля

Перем СпрНА, ДатаНачНУ;
Перем ОбщаяСуммаИзноса, СуммаИзноса, СуммаИзносаНУ;
.......

Автор: kostyabuh1971 23.07.11, 16:42

Цитата(Pepe @ 23.07.11, 16:22) *
Начало модуля
Перем СпрНА, ДатаНачНУ;
Перем ОбщаяСуммаИзноса, СуммаИзноса, СуммаИзносаНУ;
.......

Исправил, теперь считает, но не правильно. По прямолинейному методу считает опять от первоначальной стоимости без учета уже начисленного износа. Выше приведена информация как этого избежать, если я правильно понял, но у меня что то не получается.

А за апрель вообще не начисляется износ, но у меня же основные фонды не новые.

Автор: Shahta27 30.07.11, 17:04

Цитата(5_kopeek @ 21.07.11, 19:04) *
В релизе 7.70.287 начисление износа по прямолинейному методу в БУ поисходит по формуле:
(ПервСтоимость-ЛиквидСтоимость)/СрокИспользования
, где
ПервСтоимость -- первоначальная стоимость (сальдо по дебету счета учета) ОС без учета начисленного износа;
ЛиквидСтоимость -- ликвидационная стоимость (как задана в карточке ОС);
СрокИспользования -- срок использования (как задан в карточке ОС).
Такой расчет ошибочен в случае, если с 01.04.11 для ОС был изменен метод начисления амортизации с налогового на прямолинейный.


Этот глюк так и остался и после обновления на релиз 288. После проведения документа "Корректировка.." Налоговая амортизация считается правильно, а вот в бухгалтерском учете заметил, что для определения остаточной стоимости за базу берется первоначальная стоимость (при вводе в эксплуатацию) и делится на весь полезный срок использования, без учета периода эксплуатации. Пришлось воспользоваться кодом, выложенным постом выше 5_Копеек. Теперь начисленная сумма амортизации в налоговом = бухгалтерскому износу.
Спасибо 5_Копеек

Автор: Andrij-ko 06.08.11, 14:59

Цитата(5_kopeek @ 21.07.11, 19:04) *
В релизе 7.70.287 начисление износа по прямолинейному методу в БУ поисходит по формуле:
...
Такой расчет ошибочен в случае, если с 01.04.11 для ОС был изменен метод начисления амортизации с налогового на прямолинейный. ...
а у 288 релізі ці помилка виправлена?

Автор: 5_kopeek 06.08.11, 15:07

Цитата(Andrij-ko @ 06.08.11, 14:59) *
а у 288 релізі ці помилка виправлена?

В 288 релизе алгоритм начисления износа по прямолинейному методу в бухгалтерском учете не изменился.

Автор: Andrij-ko 08.08.11, 14:00

Зробив по методу Alex1c:

Цитата(alex1c @ 23.07.11, 12:49) *
Я пошел другим путем, взял остаточную стоимость отнял "ЛиквидационнаяСтоимость" и разделил на оставшееся количество месяцев (СрокИспользования - к-во месяцев за которые начислялся износ).
При проведенні документа видається помилка, і документ не проводиться.
"СуммаИзноса = Макс(Окр((ОстСтоимость - ЛиквидационнаяСтоимость)/(Элемент.СрокИспользования-РазницаМес),2),0);
{Документ.НачислениеИзноса.Модуль Документа(100)}: Деление на 0"

Я так зрозумів, що це у місяці, в якому повинно нарахуватися 100% зносу. Як виправити?

Автор: vadim007 07.09.11, 11:01

Цитата(5_kopeek @ 21.07.11, 19:04) *
Рассматривался частный случай, поэтому на универсальность решение не претендует. Если есть возражения, дополнения или обнаружены ошибки, прошу комментировать.

У меня половина ОС по этому алгоритму не проводится. Протрассировал для одного элемента: НА = 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

3. Вызов РассчитатьИзносПоЭлементу(НА,ПервСтоимость,ПервКво,ОстСтоимость,СчИзноса,Сч,Перв
СтоимостьНУ,ОстСтоимостьНУ,СчИзносаНУ,СчНУ);
      Если (ИзношеноПолностью = 0) или (ИзношеноПолностьюНУ = 0) Тогда
             // ПрямолинейноеСписание
             Если Элемент.МетодРасчетаИзноса = Перечисление.МетодыРасчетаИзноса.ПрямолинейноеСписание Тогда
                  Если Элемент.СрокИспользования = 0 Тогда
                       глКомментарий(Строка(Элемент)+": не задан срок полезного использования. Износ не начислен!",0,,"!");
                       Возврат;
                  КонецЕсли;
                  СуммаИзноса = Макс(Окр((ПервСтоимость - ЛиквидационнаяСтоимость)/Элемент.СрокИспользования,2),0);
точка1
                  // Налоговый учет
                  СрокИспользованияНУ = РассчитатьСрокИспользования(Элемент.ДатаВвода,Элемент.СрокИспользования);
                  //! Бухучет при изменении метода
                  Если КонтрольИзмененияМетода(Элемент) = 1 Тогда
                      СуммаИзноса=0;
                      Если СрокИспользованияНУ <> 0 Тогда
                          СуммаИзноса = Макс(Окр((ПервСтоимость - ЛиквидационнаяСтоимость)/СрокИспользованияНУ,2),0);
                      КонецЕсли;
точка2
                  КонецЕсли;
                  СуммаИзносаНУ = 0;
                  Если СрокИспользованияНУ <> 0 Тогда
                      СуммаИзносаНУ = Макс(Окр((ПервСтоимостьНУ - ЛиквидационнаяСтоимость)/СрокИспользованияНУ,2),0);
                  КонецЕсли;
точка3

точка1:
СуммаИзноса = 3.39
СрокИспользованияНУ = 0
точка2:
СуммаИзноса = 0
СрокИспользованияНУ = 0
точка3
СуммаИзноса = 0
СрокИспользованияНУ = 0

Т.е. в точке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);
    КонецЕсли;
КонецФункции

Для расчета СуммаИзносаНУ остался старый алгоритм, и СуммаИзносаНУ не совпадает с СуммаИзноса по бух.учету. Наверное вместо СрокИспользованияНУ надо использовать ОставшийсяСрокИспользования.

Автор: Andrij-ko 26.10.11, 12:21

Цитата(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));
КонецЕсли;

Автор: bob210250 04.11.11, 15:53

А мне бух. задал вопрос - почему износ относится не на 23 счет (как в справочнике указано), а на 791?
Я "промычал", что написно в коменте:

//Если  счет затрат 23 и суммы износа БУ и НУ отличаются - разницу списываем на 79 счет.

А понять как это исправит и почему не совпадает -этого я не знаю... Кто знает почему и как?

Автор: Kutuzov 04.11.11, 17:09

Цитата(bob210250 @ 04.11.11, 15:53) *
А мне бух. задал вопрос - почему износ относится не на 23 счет (как в справочнике указано), а на 791?
Я "промычал", что написно в коменте:
//Если  счет затрат 23 и суммы износа БУ и НУ отличаются - разницу списываем на 79 счет.

А понять как это исправит и почему не совпадает -этого я не знаю... Кто знает почему и как?


Почему... Как утверждает 1с они действуют согласно кодексу.... А в коде документа начисления износа прописано что если есть разница между БУ и НУ то он разницу списывает на 791 при условии что само ОС списывается на 23

    
//Если  счет затрат 23 и суммы износа БУ и НУ отличаются - разницу списываем на 79 счет
        Если (Лев(СчетЗакрытия.Код, 2) = "23") и (Ит.Субконто(1).Производственное = 1) и (Ит.Субконто(1).Группа < 17)  Тогда

            глПроводка(Контекст,СчетЗатрат,СчИзноса,СуммаИзносаНУ,"Начислен износ",, Ит.Субконто(1).ВидДеятельности,ВидЗатрат,,
            Ит.Субконто(1),,, ,,"НА");
            //разница
            глПроводка(Контекст,"791",СчИзноса,СуммаИзноса-СуммаИзносаНУ,"Начислен износ",, Ит.Субконто(1).ВидДеятельности,,,
            Ит.Субконто(1),,, ,,"НА");
        Иначе    
            глПроводка(Контекст,СчетЗатрат,СчИзноса,СуммаИзноса,"Начислен износ",, Ит.Субконто(1).ВидДеятельности,ВидЗатрат,,
            Ит.Субконто(1),,, ,,"НА");
        КонецЕсли;

Автор: Kutuzov 04.11.11, 17:11

х

Автор: bob210250 04.11.11, 17:44

Цитата(Kutuzov @ 04.11.11, 18:09) *
Почему... Как утверждает 1с они действуют согласно кодексу.... А в коде документа начисления износа прописано что если есть разница между БУ и НУ то он разницу списывает на 791 при условии что само ОС списывается на 23


Уважаемый Kutuzov, в том и проблема, что я не понимаю ПОЧЕМУ есть разница между БУ и НУ и не могу это обяснить буху! А код я сам видел и комент тоже....

Автор: Kutuzov 04.11.11, 18:03

Цитата(bob210250 @ 04.11.11, 17:44) http://pro1c.org.ua/index.php?act=findpost&pid=36033
х


С пунктом первым согласен, мог не доглядеть.... а вот с 13 не соглашусь так как система сама разбила мое сообщение на два

Автор: bob210250 04.11.11, 18:08

Цитата(Kutuzov @ 04.11.11, 19:03) *
Посмотрите что за цифры стоят в документе корректировка остатка по ОС
если БУ больше НУ тогда вот и результат откуда цифры больше



С пунктом первым согласен, мог не доглядеть.... а вот с 13 не соглашусь так как система сама разбила мое сообщение на два


Вообще не использовался документ Корректировка остатков необ. акт!!!

Автор: Kutuzov 04.11.11, 18:18

Цитата(bob210250 @ 04.11.11, 18:08) *
Вообще не использовался документ Корректировка остатков необ. акт!!!


Ага.... Документ корректировки создает проводки по Н10 Счетам на 010411 соответственно, при создании документа по начислению износа он смотрит на то что есть сумма по Н10 счетам и сравнивает и ставит уже размер износа по установленным данным.

А у Вас я так понимаю проводок из документа корОСтОС нет и он пихает все на 791.

Выход:
1) создать документ корректировка остатков
2) перепровести доки по износу

если бух будит вопить что у него нет временной разницы и документ корректировки создавать не будет то стоит ему объяснить, что это документ инвентаризации а размер временной разницы надо поставить в пункте размер временной разницы

Автор: bob210250 04.11.11, 22:28

Цитата(Kutuzov @ 04.11.11, 19:18) *
Ага.... Документ корректировки создает проводки по Н10 Счетам на 010411 соответственно, при создании документа по начислению износа он смотрит на то что есть сумма по Н10 счетам и сравнивает и ставит уже размер износа по установленным данным.

А у Вас я так понимаю проводок из документа корОСтОС нет и он пихает все на 791.

Выход:
1) создать документ корректировка остатков
2) перепровести доки по износу

если бух будит вопить что у него нет временной разницы и документ корректировки создавать не будет то стоит ему объяснить, что это документ инвентаризации а размер временной разницы надо поставить в пункте размер временной разницы


1) создать документ корректировка остатков - что корректировать. не понятно?......

Автор: alex1c 05.11.11, 12:32

попробуйте отменить проведение док. нач. износа после 1.04 а потом заполнить корректировку остатков...

Автор: Kutuzov 07.11.11, 10:02

Цитата(bob210250 @ 04.11.11, 22:28) *
1) создать документ корректировка остатков - что корректировать. не понятно?......


Ну если не хотите создавать документ корректировка остатков тогда просто создайте ручую операцию по Н10 счетам где укажите остаточную налоговую стоимость.
А вообще документ Корректировка остатков необходим для исправления данных в карточках ОС и создания остаточной стоимости по НУ

Автор: bob210250 08.11.11, 10:27

Цитата(Kutuzov @ 07.11.11, 11:02) *
Ну если не хотите создавать документ корректировка остатков тогда просто создайте ручую операцию по Н10 счетам где укажите остаточную налоговую стоимость.
А вообще документ Корректировка остатков необходим для исправления данных в карточках ОС и создания остаточной стоимости по НУ

Попробовал буху это объяснить. Говорить, что она в апреле корректировала в Справочнике необ. акт. Я сказал чтобы пробовала документом корректировать.... Видимо понимания особо нет...

Автор: Kutuzov 08.11.11, 10:31

Цитата(bob210250 @ 08.11.11, 10:27) *
Попробовал буху это объяснить. Говорить, что она в апреле корректировала в Справочнике необ. акт. Я сказал чтобы пробовала документом корректировать.... Видимо понимания особо нет...


Вы объясните, если она считает что у нее нет временной разницы то она может в соответствующем поле указать размер временной разницы как 0,00. И скажите что этим документом удобно посчитать остаточную стоимость по НУ

Автор: vadim007 29.07.12, 16:49

Уже вышел 293 релиз - а воз и ныне там. В смысле, расчет суммы износа при прямолинейном методе тот-же, что был полтора года назад: СуммаИзноса=Макс(Окр((ПервСтоимость-ЛиквидационнаяСтоимость)/Элемент.СрокИспользования,2),0); То есть, для ОС, введенных ранее 01.04.2011г. износ считается неверно. Они там что, спят?

Автор: mister-x 29.07.12, 17:16

Цитата(vadim007 @ 29.07.12, 17:49) *
Уже вышел 293 релиз - а воз и ныне там. В смысле, расчет суммы износа при прямолинейном методе тот-же, что был полтора года назад: СуммаИзноса=Макс(Окр((ПервСтоимость-ЛиквидационнаяСтоимость)/Элемент.СрокИспользования,2),0); То есть, для ОС, введенных ранее 01.04.2011г. износ считается неверно. Они там что, спят?

вони дають змогу нам заробити rulez.gif

Автор: Kutuzov 29.07.12, 19:28

Цитата(vadim007 @ 29.07.12, 17:49) *
Уже вышел 293 релиз - а воз и ныне там. В смысле, расчет суммы износа при прямолинейном методе тот-же, что был полтора года назад: СуммаИзноса=Макс(Окр((ПервСтоимость-ЛиквидационнаяСтоимость)/Элемент.СрокИспользования,2),0); То есть, для ОС, введенных ранее 01.04.2011г. износ считается неверно. Они там что, спят?


Они еще сразу сказала,что они сделали так как написано в законодательстве и переделывать ничего не будут.... Если я не ошибаюсь они сразу и отписались после выхода апрельских обновлений.

Автор: vadim007 31.07.12, 7:11

Цитата(Kutuzov @ 29.07.12, 20:28) *
Они еще сразу сказала,что они сделали так как написано в законодательстве и переделывать ничего не будут.... Если я не ошибаюсь они сразу и отписались после выхода апрельских обновлений.

А можно найти эту отписку? А то бухгалтерия давит - что за программа эта 1С, ни хрена не работает!

Автор: Kutuzov 31.07.12, 8:43

Цитата(vadim007 @ 31.07.12, 8:11) *
А можно найти эту отписку? А то бухгалтерия давит - что за программа эта 1С, ни хрена не работает!


Можно в ABBYY написать письмо они точно могут отписаться... но это при условии что программа лицензионная (есть код продукта с дисковили с книжки).
У меня точно нет этого письма так как ушло с прошлой работой.
А бухгалтерам я обычно говорю так: "Не нравиться 1с, всегда есть другой выход Excel" 32541510.gif

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua