0
slimuz
10.07.20
✎
10:33
|
Добрый день.
1С 7.7. Отчёт "Регистр-расчет амортизации основных средств".
В отчете выводятся первоначальная стоимость по НУ, амортизационная премия по каждому ОС. Обычно всё нормально, но за январь 2020, почему-то с сортировкой по коду до 22 позиции суммы выводится правильно сальдо как в оборотке, а после 22ой позиции выводятся итоговые суммы сальдо по счетам. А с сортировкой по наименованию до 288 позиции суммы корректные, после итоговые суммы.
//______________________________________________________________________________
Процедура ПриОткрытии()
Дата1=НачМесяца(ДобавитьМесяц(ТекущаяДата(),-1));
Дата2=КонМесяца(Дата1);
Группировка=1 ;
Сортировка=1 ;
Форма.ТолькоИтоги.Доступность(0);
КонецПроцедуры
//______________________________________________________________________________
Процедура ОбработкаТолькоИтоги()
Если ТолькоИтоги=1 Тогда
ДопРек=0 ;
Форма.ДопРек.Доступность(0);
Иначе
Форма.ДопРек.Доступность(1);
КонецЕсли;
КонецПроцедуры
//______________________________________________________________________________
Процедура ОбработкаГруппировка()
Если Группировка=1 Тогда
ТолькоИтоги=0 ;
Форма.ТолькоИтоги.Доступность(0);
ОбработкаТолькоИтоги();
Иначе
Форма.ТолькоИтоги.Доступность(1);
ОбработкаТолькоИтоги();
КонецЕсли;
КонецПроцедуры
//______________________________________________________________________________
Процедура ОбработкаПринимаемые()
Если ПринНалог=1 Тогда
ВР="" ;
Форма.ВР.Доступность(0);
Иначе
Форма.ВР.Доступность(1);
КонецЕсли;
КонецПроцедуры
//______________________________________________________________________________
Процедура ОчиститьОтборы()
ВР="" ;
АГ="" ;
БСч="" ;
Подр="" ;
ИФ="" ;
СК=0 ;
ПринНалог=0 ;
Форма.ВР.Доступность(1);
КонецПроцедуры
//______________________________________________________________________________
Функция ОпределитьПервоначальную(ОС)
Спис=СоздатьОбъект("СписокЗначений");
БИ.ПолучитьСубконто(,,ОС);
БИ.ВыбратьСчета();
БИ.ПолучитьСчет(,СчетПоКоду("Н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);
Таб.Показать("");
КонецПроцедуры
|
|