Добрый день.
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); Таб.Показать(""); КонецПроцедуры |