#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда #Область ПрограммныйИнтерфейс // Функция-конструктор для хранения настроек отчета в универсальном формате. // Функция ПустыеПараметрыКомпоновкиОтчета() Экспорт // Общая структура настроек. ПараметрыОтчета = БухгалтерскиеОтчеты.ПустыеПараметрыКомпоновкиОтчета(); ПараметрыОтчета.ИдентификаторОтчета = "ам_ВедомостьАмортизацииОСБухгалтерскийУчет_МСФО"; БухгалтерскиеОтчеты.ДобавитьПоказателиВПараметры(ПараметрыОтчета, ПолучитьНаборПоказателей()); ОтчетОбъект = Отчеты.ам_ВедомостьАмортизацииОСБухгалтерскийУчет_МСФО.Создать(); ПараметрыОтчета.Вставить("Группировка", ОтчетОбъект.Группировка.ВыгрузитьКолонки()); // 0 = В одной колонке, 1 = В отдельных колонках ПараметрыОтчета.Вставить("РазмещениеДополнительныхПолей", БухгалтерскиеОтчетыКлиентСервер.РазмещениеДополнительныхПолей().ВместеСВладельцем); ПараметрыОтчета.Вставить("ДополнительныеПоля", ОтчетОбъект.ДополнительныеПоля.ВыгрузитьКолонки()); Возврат ПараметрыОтчета; КонецФункции // Заполняет структуру настроек универсального формата из реквизитов формы. // // Параметры: // ПараметрыОтчета - Структура - см. ПустыеПараметрыКомпоновкиОтчета() // Форма - УправляемаяФорма - содержит основновной реквизит Отчет . // Процедура ЗаполнитьПараметрыИзФормы(ПараметрыОтчета, Форма) Экспорт БухгалтерскиеОтчеты.ЗаполнитьПараметрыИзФормы(ПараметрыОтчета, Форма); КонецПроцедуры Функция ПолучитьПараметрыИсполненияОтчета() Экспорт Результат = Новый Структура; Результат.Вставить("ИспользоватьПередКомпоновкойМакета", Истина); Результат.Вставить("ИспользоватьПослеКомпоновкиМакета", Истина); Результат.Вставить("ИспользоватьПослеВыводаРезультата", Истина); Результат.Вставить("ИспользоватьДанныеРасшифровки", Ложь); Возврат Результат; КонецФункции Функция ПолучитьТекстЗаголовка(ПараметрыОтчета) Экспорт Возврат НСтр("ru = 'Ведомость амортизации ОС (МСФО)'") + БухгалтерскиеОтчетыКлиентСервер.ПолучитьПредставлениеПериода(ПараметрыОтчета.НачалоПериода, ПараметрыОтчета.КонецПериода); КонецФункции // В процедуре можно доработать компоновщик перед выводом в отчет // Изменения сохранены не будут Процедура ПередКомпоновкойМакета(ПараметрыОтчета, Схема, КомпоновщикНастроек) Экспорт КомпоновщикНастроек.Настройки.Структура.Очистить(); КомпоновщикНастроек.Настройки.Выбор.Элементы.Очистить(); Если ЗначениеЗаполнено(ПараметрыОтчета.НачалоПериода) Тогда БухгалтерскиеОтчетыКлиентСервер.УстановитьПараметр(КомпоновщикНастроек, "НачПериода", НачалоДня(ПараметрыОтчета.НачалоПериода)); БухгалтерскиеОтчетыКлиентСервер.УстановитьПараметр(КомпоновщикНастроек, "НачПериодаОстатков", Новый Граница(НачалоДня(ПараметрыОтчета.НачалоПериода), ВидГраницы.Исключая)); Иначе БухгалтерскиеОтчетыКлиентСервер.УстановитьПараметр(КомпоновщикНастроек, "НачПериодаОстатков", Дата(1,1,1,0,0,1)); КонецЕсли; Если ЗначениеЗаполнено(ПараметрыОтчета.КонецПериода) Тогда БухгалтерскиеОтчетыКлиентСервер.УстановитьПараметр(КомпоновщикНастроек, "КонПериода", КонецДня(ПараметрыОтчета.КонецПериода)); БухгалтерскиеОтчетыКлиентСервер.УстановитьПараметр(КомпоновщикНастроек, "КонПериодаОстатков", Новый Граница(КонецДня(ПараметрыОтчета.КонецПериода))); КонецЕсли; Структура = КомпоновщикНастроек.Настройки; Для каждого ПолеВыбраннойГруппировки Из ПараметрыОтчета.Группировка Цикл Если ПолеВыбраннойГруппировки.Использование Тогда Структура = Структура.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных")); ПолеГруппировки = Структура.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных")); ПолеГруппировки.Использование = Истина; ПолеГруппировки.Поле = Новый ПолеКомпоновкиДанных(ПолеВыбраннойГруппировки.Поле); Если ПолеВыбраннойГруппировки.ТипГруппировки = 1 Тогда ПолеГруппировки.ТипГруппировки = ТипГруппировкиКомпоновкиДанных.Иерархия; ИначеЕсли ПолеВыбраннойГруппировки.ТипГруппировки = 2 Тогда ПолеГруппировки.ТипГруппировки = ТипГруппировкиКомпоновкиДанных.ТолькоИерархия; Иначе ПолеГруппировки.ТипГруппировки = ТипГруппировкиКомпоновкиДанных.Элементы; КонецЕсли; Структура.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных")); Структура.Порядок.Элементы.Добавить(Тип("АвтоЭлементПорядкаКомпоновкиДанных")); КонецЕсли; КонецЦикла; КоличествоПоказателей = БухгалтерскиеОтчетыВызовСервера.КоличествоПоказателей(ПараметрыОтчета); Если КоличествоПоказателей > 1 Тогда ГруппаПоказатели = КомпоновщикНастроек.Настройки.Выбор.Элементы.Добавить(Тип("ГруппаВыбранныхПолейКомпоновкиДанных")); ГруппаПоказатели.Заголовок = НСтр("ru = 'Показатели'"); ГруппаПоказатели.Использование = Истина; ГруппаПоказатели.Расположение = РасположениеПоляКомпоновкиДанных.Вертикально; Для каждого ИмяПоказателя Из ПараметрыОтчета.НаборПоказателей Цикл Если ПараметрыОтчета["Показатель" + ИмяПоказателя] Тогда БухгалтерскиеОтчетыКлиентСервер.ДобавитьВыбранноеПоле(ГруппаПоказатели, "Показатель" + ИмяПоказателя); КонецЕсли; КонецЦикла; КонецЕсли; ГруппаДанныеНаНачало = КомпоновщикНастроек.Настройки.Выбор.Элементы.Добавить(Тип("ГруппаВыбранныхПолейКомпоновкиДанных")); ГруппаДанныеНаНачало.Заголовок = НСтр("ru = 'На начало периода'"); ГруппаДанныеНаНачало.Использование = Истина; ГруппаДанныеНаНачалоСтоимость = ГруппаДанныеНаНачало.Элементы.Добавить(Тип("ГруппаВыбранныхПолейКомпоновкиДанных")); ГруппаДанныеНаНачалоСтоимость.Заголовок = НСтр("ru = 'Стоимость'"); ГруппаДанныеНаНачалоСтоимость.Использование = Истина; ГруппаДанныеНаНачалоСтоимость.Расположение = РасположениеПоляКомпоновкиДанных.Вертикально; ГруппаДанныеНаНачалоАмортизация = ГруппаДанныеНаНачало.Элементы.Добавить(Тип("ГруппаВыбранныхПолейКомпоновкиДанных")); ГруппаДанныеНаНачалоАмортизация.Заголовок = НСтр("ru = 'Амортизация (износ)'"); ГруппаДанныеНаНачалоАмортизация.Использование = Истина; ГруппаДанныеНаНачалоАмортизация.Расположение = РасположениеПоляКомпоновкиДанных.Вертикально; ГруппаДанныеНаНачалоОстаточнаяСтоимость = ГруппаДанныеНаНачало.Элементы.Добавить(Тип("ГруппаВыбранныхПолейКомпоновкиДанных")); ГруппаДанныеНаНачалоОстаточнаяСтоимость.Заголовок = НСтр("ru = 'Остаточная стоимость'"); ГруппаДанныеНаНачалоОстаточнаяСтоимость.Использование = Истина; ГруппаДанныеНаНачалоОстаточнаяСтоимость.Расположение = РасположениеПоляКомпоновкиДанных.Вертикально; ГруппаОбороты = КомпоновщикНастроек.Настройки.Выбор.Элементы.Добавить(Тип("ГруппаВыбранныхПолейКомпоновкиДанных")); ГруппаОбороты.Заголовок = НСтр("ru = 'За период'"); ГруппаОбороты.Использование = Истина; ГруппаУвеличениеСтоимости = ГруппаОбороты.Элементы.Добавить(Тип("ГруппаВыбранныхПолейКомпоновкиДанных")); ГруппаУвеличениеСтоимости.Заголовок = НСтр("ru = 'Увеличение стоимости'"); ГруппаУвеличениеСтоимости.Использование = Истина; ГруппаУвеличениеСтоимости.Расположение = РасположениеПоляКомпоновкиДанных.Вертикально; ГруппаНачислениеАмортизации = ГруппаОбороты.Элементы.Добавить(Тип("ГруппаВыбранныхПолейКомпоновкиДанных")); ГруппаНачислениеАмортизации.Заголовок = НСтр("ru = 'Начисление амортизации (износа)'"); ГруппаНачислениеАмортизации.Использование = Истина; ГруппаНачислениеАмортизации.Расположение = РасположениеПоляКомпоновкиДанных.Вертикально; ГруппаУменьшениеСтоимости = ГруппаОбороты.Элементы.Добавить(Тип("ГруппаВыбранныхПолейКомпоновкиДанных")); ГруппаУменьшениеСтоимости.Заголовок = НСтр("ru = 'Уменьшение стоимости'"); ГруппаУменьшениеСтоимости.Использование = Истина; ГруппаУменьшениеСтоимости.Расположение = РасположениеПоляКомпоновкиДанных.Вертикально; ГруппаСписаниеАмортизации = ГруппаОбороты.Элементы.Добавить(Тип("ГруппаВыбранныхПолейКомпоновкиДанных")); ГруппаСписаниеАмортизации.Заголовок = НСтр("ru = 'Списание амортизации (износа)'"); ГруппаСписаниеАмортизации.Использование = Истина; ГруппаСписаниеАмортизации.Расположение = РасположениеПоляКомпоновкиДанных.Вертикально; ГруппаДанныеНаКонец = КомпоновщикНастроек.Настройки.Выбор.Элементы.Добавить(Тип("ГруппаВыбранныхПолейКомпоновкиДанных")); ГруппаДанныеНаКонец.Заголовок = НСтр("ru = 'На конец периода'"); ГруппаДанныеНаКонец.Использование = Истина; ГруппаДанныеНаКонецСтоимость = ГруппаДанныеНаКонец.Элементы.Добавить(Тип("ГруппаВыбранныхПолейКомпоновкиДанных")); ГруппаДанныеНаКонецСтоимость.Заголовок = НСтр("ru = 'Стоимость'"); ГруппаДанныеНаКонецСтоимость.Использование = Истина; ГруппаДанныеНаКонецСтоимость.Расположение = РасположениеПоляКомпоновкиДанных.Вертикально; ГруппаДанныеНаКонецАмортизация = ГруппаДанныеНаКонец.Элементы.Добавить(Тип("ГруппаВыбранныхПолейКомпоновкиДанных")); ГруппаДанныеНаКонецАмортизация.Заголовок = НСтр("ru = 'Амортизация (износ)'"); ГруппаДанныеНаКонецАмортизация.Использование = Истина; ГруппаДанныеНаКонецАмортизация.Расположение = РасположениеПоляКомпоновкиДанных.Вертикально; ГруппаДанныеНаКонецОстаточнаяСтоимость = ГруппаДанныеНаКонец.Элементы.Добавить(Тип("ГруппаВыбранныхПолейКомпоновкиДанных")); ГруппаДанныеНаКонецОстаточнаяСтоимость.Заголовок = НСтр("ru = 'Остаточная стоимость'"); ГруппаДанныеНаКонецОстаточнаяСтоимость.Использование = Истина; ГруппаДанныеНаКонецОстаточнаяСтоимость.Расположение = РасположениеПоляКомпоновкиДанных.Вертикально; //ЛТВ.МСФО+++ пока только 1 колонка: МСФОГруппаНачислениеАмортизации МСФОГруппаОбороты = КомпоновщикНастроек.Настройки.Выбор.Элементы.Добавить(Тип("ГруппаВыбранныхПолейКомпоновкиДанных")); МСФОГруппаОбороты.Заголовок = НСтр("ru = 'За период (МСФО)'"); МСФОГруппаОбороты.Использование = Истина; //МСФОГруппаУвеличениеСтоимости = МСФОГруппаОбороты.Элементы.Добавить(Тип("ГруппаВыбранныхПолейКомпоновкиДанных")); //МСФОГруппаУвеличениеСтоимости.Заголовок = НСтр("ru = 'Увеличение стоимости (МСФО)'"); //МСФОГруппаУвеличениеСтоимости.Использование = Истина; //МСФОГруппаУвеличениеСтоимости.Расположение = РасположениеПоляКомпоновкиДанных.Вертикально; МСФОГруппаНачислениеАмортизации = МСФОГруппаОбороты.Элементы.Добавить(Тип("ГруппаВыбранныхПолейКомпоновкиДанных")); МСФОГруппаНачислениеАмортизации.Заголовок = НСтр("ru = 'Начисление амортизации (износа) МСФО'"); МСФОГруппаНачислениеАмортизации.Использование = Истина; МСФОГруппаНачислениеАмортизации.Расположение = РасположениеПоляКомпоновкиДанных.Вертикально; //МСФОГруппаУменьшениеСтоимости = МСФОГруппаОбороты.Элементы.Добавить(Тип("ГруппаВыбранныхПолейКомпоновкиДанных")); //МСФОГруппаУменьшениеСтоимости.Заголовок = НСтр("ru = 'Уменьшение стоимости (МСФО)'"); //МСФОГруппаУменьшениеСтоимости.Использование = Истина; //МСФОГруппаУменьшениеСтоимости.Расположение = РасположениеПоляКомпоновкиДанных.Вертикально; //МСФОГруппаСписаниеАмортизации = МСФОГруппаОбороты.Элементы.Добавить(Тип("ГруппаВыбранныхПолейКомпоновкиДанных")); //МСФОГруппаСписаниеАмортизации.Заголовок = НСтр("ru = 'Списание амортизации (износа) МСФО'"); //МСФОГруппаСписаниеАмортизации.Использование = Истина; //МСФОГруппаСписаниеАмортизации.Расположение = РасположениеПоляКомпоновкиДанных.Вертикально; //ЛТВ.МСФО--- Структура = Структура.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных")); Структура.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных")); Структура.Порядок.Элементы.Добавить(Тип("АвтоЭлементПорядкаКомпоновкиДанных")); Для каждого ИмяПоказателя Из ПараметрыОтчета.НаборПоказателей Цикл Если ПараметрыОтчета["Показатель" + ИмяПоказателя] Тогда Если ИмяПоказателя = "БУ" Тогда СуффиксПоказателя = ""; СуффиксАмортизация = "Износ"; Иначе СуффиксПоказателя = ИмяПоказателя; СуффиксАмортизация = ИмяПоказателя; КонецЕсли; БухгалтерскиеОтчетыКлиентСервер.ДобавитьВыбранноеПоле(ГруппаДанныеНаНачалоСтоимость, "НаНачалоПериода.Стоимость" + СуффиксПоказателя + "ОстатокНачПериода"); БухгалтерскиеОтчетыКлиентСервер.ДобавитьВыбранноеПоле(ГруппаДанныеНаНачалоАмортизация, "НаНачалоПериода.Амортизация" + СуффиксАмортизация + "ОстатокНачПериода"); БухгалтерскиеОтчетыКлиентСервер.ДобавитьВыбранноеПоле(ГруппаДанныеНаНачалоОстаточнаяСтоимость, "НаНачалоПериода.ОстаточнаяСтоимость" + СуффиксПоказателя + "НачПериода"); БухгалтерскиеОтчетыКлиентСервер.ДобавитьВыбранноеПоле(ГруппаУвеличениеСтоимости, "ЗаПериод.Стоимость" + СуффиксПоказателя + "Увеличение"); БухгалтерскиеОтчетыКлиентСервер.ДобавитьВыбранноеПоле(ГруппаУменьшениеСтоимости, "ЗаПериод.Стоимость" + СуффиксПоказателя + "Уменьшение"); БухгалтерскиеОтчетыКлиентСервер.ДобавитьВыбранноеПоле(ГруппаНачислениеАмортизации, "ЗаПериод.Амортизация" + СуффиксАмортизация + "Начисление"); БухгалтерскиеОтчетыКлиентСервер.ДобавитьВыбранноеПоле(ГруппаСписаниеАмортизации, "ЗаПериод.Амортизация" + СуффиксАмортизация + "Списание"); БухгалтерскиеОтчетыКлиентСервер.ДобавитьВыбранноеПоле(ГруппаДанныеНаКонецСтоимость, "НаКонецПериода.Стоимость" + СуффиксПоказателя + "ОстатокКонПериода"); БухгалтерскиеОтчетыКлиентСервер.ДобавитьВыбранноеПоле(ГруппаДанныеНаКонецАмортизация, "НаКонецПериода.Амортизация" + СуффиксАмортизация + "ОстатокКонПериода"); БухгалтерскиеОтчетыКлиентСервер.ДобавитьВыбранноеПоле(ГруппаДанныеНаКонецОстаточнаяСтоимость, "НаКонецПериода.ОстаточнаяСтоимость" + СуффиксПоказателя + "КонПериода"); //ЛТВ.МСФО+++ только для БУ Если ИмяПоказателя = "БУ" Тогда БухгалтерскиеОтчетыКлиентСервер.ДобавитьВыбранноеПоле(МСФОГруппаНачислениеАмортизации, "МСФОЗаПериод.МСФОАмортизация" + СуффиксАмортизация + "Начисление"); //Иначе //БухгалтерскиеОтчетыКлиентСервер.ДобавитьВыбранноеПоле(МСФОГруппаНачислениеАмортизации, "МСФОЗаПериод.МСФОАмортизацияИзносНачисление1"); КонецЕсли; //ЛТВ.МСФО--- КонецЕсли; КонецЦикла; БухгалтерскиеОтчетыКлиентСервер.ДобавитьВыбранноеПоле(КомпоновщикНастроек.Настройки, "ОсновноеСредство"); БухгалтерскиеОтчетыКлиентСервер.ДобавитьВыбранноеПоле(КомпоновщикНастроек.Настройки, "ОсновноеСредство.ИнвентарныйНомер"); // Дополнительные данные БухгалтерскиеОтчетыВызовСервера.ДобавитьДополнительныеПоля(ПараметрыОтчета, КомпоновщикНастроек); БухгалтерскиеОтчетыВызовСервера.ДобавитьОтборПоОрганизации(ПараметрыОтчета, КомпоновщикНастроек); КонецПроцедуры Процедура ПослеКомпоновкиМакета(ПараметрыОтчета, МакетКомпоновки) Экспорт МакетШапкиОтчета = БухгалтерскиеОтчеты.ПолучитьМакетШапки(МакетКомпоновки); КоличествоПоказателей = БухгалтерскиеОтчетыВызовСервера.КоличествоПоказателей(ПараметрыОтчета); КоличествоГруппировок = 1; Для Каждого СтрокаГруппировки Из ПараметрыОтчета.Группировка Цикл Если СтрокаГруппировки.Использование Тогда КоличествоГруппировок = КоличествоГруппировок + 1; КонецЕсли; КонецЦикла; КоличествоСтрокШапки = Макс(КоличествоГруппировок, 2); ПараметрыОтчета.Вставить("ВысотаШапки", КоличествоСтрокШапки); КоличествоСтрок = МакетШапкиОтчета.Макет.Количество(); Для ИндексСтроки = 2 По КоличествоСтрок - 1 Цикл СтрокаМакета = МакетШапкиОтчета.Макет[ИндексСтроки]; КоличествоКолонок = СтрокаМакета.Ячейки.Количество(); Для ИндексКолонки = КоличествоКолонок - 10 По КоличествоКолонок - 1 Цикл Ячейка = СтрокаМакета.Ячейки[ИндексКолонки]; БухгалтерскиеОтчетыКлиентСервер.УстановитьПараметр(Ячейка.Оформление.Элементы, "ОбъединятьПоВертикали", Истина); КонецЦикла; КонецЦикла; Если КоличествоПоказателей > 1 Тогда Для ИндексСтроки = 1 По КоличествоСтрок - 1 Цикл СтрокаМакета = МакетШапкиОтчета.Макет[ИндексСтроки]; КоличествоКолонок = СтрокаМакета.Ячейки.Количество(); Ячейка = СтрокаМакета.Ячейки[КоличествоКолонок - 11]; БухгалтерскиеОтчетыКлиентСервер.УстановитьПараметр(Ячейка.Оформление.Элементы, "ОбъединятьПоВертикали", Истина); КонецЦикла; КонецЕсли; // Снимем флаг Игнорировать значение Null для реквизитов основного средства Для Каждого Поле Из МакетКомпоновки.НаборыДанных.НаборДанных1.Поля Цикл Если Лев(Поле.ПутьКДанным, 17) = "ОсновноеСредство." Тогда Поле.Роль.ИгнорироватьЗначенияNULL = Ложь; КонецЕсли; КонецЦикла; МассивДляУдаления = Новый Массив; Для Индекс = КоличествоСтрокШапки По МакетШапкиОтчета.Макет.Количество() - 1 Цикл МассивДляУдаления.Добавить(МакетШапкиОтчета.Макет[Индекс]); КонецЦикла; Для каждого Элемент Из МассивДляУдаления Цикл МакетШапкиОтчета.Макет.Удалить(Элемент); КонецЦикла; КонецПроцедуры Процедура ПослеВыводаРезультата(ПараметрыОтчета, Результат) Экспорт БухгалтерскиеОтчетыВызовСервера.ОбработкаРезультатаОтчета(ПараметрыОтчета.ИдентификаторОтчета, Результат); Если Результат.Области.Найти("Заголовок") = Неопределено Тогда Результат.ФиксацияСверху = ПараметрыОтчета.ВысотаШапки; Иначе Результат.ФиксацияСверху = Результат.Области.Заголовок.Низ + ПараметрыОтчета.ВысотаШапки; КонецЕсли; КонецПроцедуры Функция ПолучитьНаборПоказателей() Экспорт НаборПоказателей = Новый Массив; НаборПоказателей.Добавить("БУ"); НаборПоказателей.Добавить("НУ"); НаборПоказателей.Добавить("ПР"); НаборПоказателей.Добавить("ВР"); НаборПоказателей.Добавить("Контроль"); Возврат НаборПоказателей; КонецФункции #КонецОбласти #КонецЕсли