Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 21:48

Некорректный вывод сумм амортизации ОС

Автор slimuz, 10 июл 2020, 14:00

0 Пользователей и 1 гость просматривают эту тему.

slimuz

Добрый день.
1С 7.7. Отчёт "Регистр-расчет амортизации основных средств".
В отчете выводятся первоначальная стоимость по НУ, амортизационная премия по каждому ОС. Обычно всё нормально, но за январь 2020, почему-то с сортировкой по коду до 22 позиции суммы выводится правильно сальдо как в оборотке, а после 22ой позиции выводятся итоговые суммы сальдо по счетам. А с сортировкой по наименованию до 288 позиции суммы корректные, после итоговые суммы.

Функция ОпределитьПервоначальную(ОС)
Спис=СоздатьОбъект("СписокЗначений");
БИ.ПолучитьСубконто(,,ОС);
БИ.ВыбратьСчета();
БИ.ПолучитьСчет(,СчетПоКоду("Н05.01"));
Перв=БИ.СКД();
Спис.ДобавитьЗначение(Перв,"Перв");
БИ.ПолучитьСчет(,СчетПоКоду("Н05.02.1"));
Прем=БИ.СКК();
Спис.ДобавитьЗначение(Прем,"Прем");
Спис.ДобавитьЗначение((Перв-Прем),"ПервБА");
Возврат Спис ;
   
КонецФункции         

//*******************************************
Процедура Сформировать()
Если (Дата1<>НачМесяца(Дата1)) ИЛИ (Дата2<>КонМесяца(Дата2)) Тогда
Предупреждение("Этот отчет формируется только за календарный период!",2);
Возврат ;
КонецЕсли;

Таб=СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("");
Таб.ВывестиСекцию("Отчет|Основная");

Если ПустоеЗначение(ВР)=0 Тогда
ИмяОтбора="Вид расходов:" ;
Отбор=""+ВР ;
Таб.ВывестиСекцию("Отбор|Основная") ;
КонецЕсли;
Если ПустоеЗначение(АГ)=0 Тогда
ИмяОтбора="Амортизационная группа:" ;
Отбор=""+АГ ;
Таб.ВывестиСекцию("Отбор|Основная") ;
КонецЕсли;
Если ПустоеЗначение(БСч)=0 Тогда
ИмяОтбора="Балансовый счет:" ;
Отбор=""+БСч ;
Таб.ВывестиСекцию("Отбор|Основная") ;
КонецЕсли;
Если ПустоеЗначение(Подр)=0 Тогда
ИмяОтбора="Подразделение:" ;
Отбор=""+Подр.Наименование ;
Таб.ВывестиСекцию("Отбор|Основная") ;
КонецЕсли;
Если ПустоеЗначение(ИФ)=0 Тогда
ИмяОтбора="Источник финансирования:" ;
Отбор=""+ИФ.Наименование ;
Таб.ВывестиСекцию("Отбор|Основная") ;
КонецЕсли;
Если СК=1 Тогда
ИмяОтбора="Специальный коэффициент <1" ;
Отбор="" ;
Таб.ВывестиСекцию("Отбор|Основная") ;
КонецЕсли;
Если ПринНалог=1 Тогда
ИмяОтбора="Учитываются при налогообложении прибыли" ;
Отбор="" ;
Таб.ВывестиСекцию("Отбор|Основная") ;
КонецЕсли;
Таб.ВывестиСекцию("Шапка|Основная");
Если ДопРек=1 Тогда
Таб.ПрисоединитьСекцию("Шапка|Доп");
КонецЕсли;

СчетАморт=СчетПоКоду("Н05.02.0");
НеПринимаемые=Перечисление.ВидыРасходов.ЗначениеПоИдентификатору("НеПринимаемые");

Запрос=СоздатьОбъект("Запрос");
ТекстЗапроса="//{{ЗАПРОС(Запрос)
|Период с Дата1 по Дата2;
|Счет = Операция.Кредит.Счет;
|ОсновныеСредства = Операция.Кредит.ОсновныеСредства;
|Код = Операция.Кредит.ОсновныеСредства.Код;
|Наименование = Операция.Кредит.ОсновныеСредства.Наименование;
|АмортизационнаяГруппа = Операция.Кредит.ОсновныеСредства.АмортизационнаяГруппа;
|ВидРасхода = Операция.Кредит.ОсновныеСредства.ВидРасхода;
|ИсточникФинансирования = Операция.Кредит.ОсновныеСредства.ИсточникФинансирования;
|Подразделение = Операция.Кредит.ОсновныеСредства.Подразделение;
|СчетЗатрат = Операция.Кредит.ОсновныеСредства.СчетЗатрат;
|СпециальныйКоэффициент = Операция.Кредит.ОсновныеСредства.СпециальныйКоэффициент;
|Срок = Операция.Кредит.ОсновныеСредства.СрокПолезногоИспользованияН;
|Сумма = Операция.Сумма;
|Функция СуммаКО = КО(Сумма) ;
|Условие(Счет = СчетАморт);
|" ;//}}ЗАПРОС


ЕстьОтбор=0 ;
Если ПустоеЗначение(ВР)=0 Тогда
Текстзапроса=ТекстЗапроса+"
|Условие (ВидРасхода=ВР);
|" ;
ЕстьОтбор=1 ;
КонецЕсли;
Если ПустоеЗначение(АГ)=0 Тогда
Текстзапроса=ТекстЗапроса+"
|Условие (АмортизационнаяГруппа=АГ);
|" ;
ЕстьОтбор=1 ;
КонецЕсли;
Если ПустоеЗначение(БСч)=0 Тогда
Текстзапроса=ТекстЗапроса+"
|Условие (СчетЗатрат=БСч);
|" ;
ЕстьОтбор=1 ;
КонецЕсли;
Если ПустоеЗначение(Подр)=0 Тогда
Текстзапроса=ТекстЗапроса+"
|Условие (Подразделение=Подр);
|" ;
ЕстьОтбор=1 ;
КонецЕсли;
Если ПустоеЗначение(ИФ)=0 Тогда
Текстзапроса=ТекстЗапроса+"
|Условие (ИсточникФинансирования=ИФ);
|" ;
ЕстьОтбор=1 ;
КонецЕсли;
Если СК=1 Тогда
Текстзапроса=ТекстЗапроса+"
|Условие (СпециальныйКоэффициент<1);
|" ;
ЕстьОтбор=1 ;
КонецЕсли;
Если ПринНалог=1 Тогда
Текстзапроса=ТекстЗапроса+"
|Условие (ВидРасхода<>НеПринимаемые);
|" ;
ЕстьОтбор=1 ;
КонецЕсли;

Если Группировка=2 Тогда
Текстзапроса=ТекстЗапроса+"
|Группировка ВидРасхода;
|" ;
ИначеЕсли Группировка=3 Тогда
Текстзапроса=ТекстЗапроса+"
|Группировка АмортизационнаяГруппа;
|" ;
ИначеЕсли Группировка=4 Тогда
Текстзапроса=ТекстЗапроса+"
|Группировка СчетЗатрат;
|" ;
КонецЕсли;

Если Сортировка=1 Тогда
Текстзапроса=ТекстЗапроса+"
|Группировка ОсновныеСредства Упорядочить по ОсновныеСредства.Код;
|" ;
Иначе
Текстзапроса=ТекстЗапроса+"
|Группировка ОсновныеСредства Упорядочить по ОсновныеСредства.Наименование;
|" ;
КонецЕсли;

Если Запрос.Выполнить(ТекстЗапроса)=0 Тогда
Сообщить("Ошибочка");
Возврат ;
КонецЕсли;

БИ=СоздатьОбъект("БухгалтерскиеИтоги");
БИ.ИспользоватьСубконто("ОсновныеСредства");
БИ.ВыполнитьЗапрос(Дата1,Дата2,"Н05.01,Н05.02.1");
Состояние("Запрос сделан. Обрабатываю...");
БИ.ВыбратьСубконто();


Счетчик=0 ;
СчетчикГр=0 ;
Если Группировка=1 Тогда
Пока Запрос.Группировка(1)=1 Цикл
Счетчик=Счетчик+1 ;
Состояние(Счетчик);
Спис=ОпределитьПервоначальную(Запрос.ОсновныеСредства) ;
П=Спис.Получить("Перв");
А=Спис.Получить("Прем");
ПБА=Спис.Получить("ПервБА");
Таб.ВывестиСекцию("Строка|Основная");
Если ДопРек=1 Тогда
Таб.ПрисоединитьСекцию("Строка|Доп");
КонецЕсли;
КонецЦикла;
Иначе                       
Пока Запрос.Группировка(1)=1 Цикл
СчетчикГр=СчетчикГр+1 ;
Состояние(СчетчикГр);
Счетчик=0 ;
Если Группировка=2 Тогда
ИмяГруппы=""+Запрос.ВидРасхода ;
ИначеЕсли Группировка=3 Тогда
ИмяГруппы=""+Запрос.АмортизационнаяГруппа ;
ИначеЕсли Группировка=4 Тогда
ИмяГруппы=Запрос.СчетЗатрат.Код+"  "+СокрП(Запрос.СчетЗатрат.Наименование) ;
КонецЕсли;
Таб.ВывестиСекцию("Группа|Основная");
Если ДопРек=1 Тогда
Таб.ПрисоединитьСекцию("Группа|Доп");
КонецЕсли;
Если ТолькоИтоги=0 Тогда
Пока Запрос.Группировка(2)=1 Цикл
Счетчик=Счетчик+1 ;
Состояние(""+СчетчикГр+"  "+Счетчик);
Спис=ОпределитьПервоначальную(Запрос.ОсновныеСредства) ;
П=Спис.Получить("Перв");
А=Спис.Получить("Прем");
ПБА=Спис.Получить("ПервБА");
Таб.ВывестиСекцию("Строка|Основная");
Если ДопРек=1 Тогда
Таб.ПрисоединитьСекцию("Строка|Доп");
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЦикла;
КонецЕсли;
Итог=Запрос.СуммаКО ;
Таб.ВывестиСекцию("Итог|Основная");

Если ЕстьОтбор=0 Тогда
БИ.ОсновныеИтоги();
БИ.ПериодД(НачГода(Дата1),Дата2);
НарИтог=БИ.КО("Н05.02.0");
Таб.ВывестиСекцию("НарИтог|Основная");
КонецЕсли;

ОтветственныйЗаСоставление = ФИО(?(ПустоеЗначение(Константа.ОтветственныйЗаСоставлениеРегистровНУ)=0,Константа.ОтветственныйЗаСоставлениеРегистровНУ,ТекПользователь.ПолноеИмя));
НижнийКолонтитул=("Регистр сформирован "+ ТекущаяДата()+"  "+ ТекущееВремя());

Таб.ВывестиСекцию("Подвал|Основная");
Таб.ТолькоПросмотр(1);
Таб.Опции(0,0,0,0);
Таб.Показать("");

КонецПроцедуры

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск