Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Кузнецова Дипломный проект 1С отчет.doc
Скачиваний:
59
Добавлен:
16.02.2016
Размер:
845.82 Кб
Скачать

2.6 Универсальный отчет

Рассмотрим реквизиты, элементы формы и процедуры модулей универсальных отчетов. Состав реквизитов, функций у отчетов несколько отличаются, поэтому отличия «Список / кросс таблица (ОтчетСписокКроссТаблица)» от «Отчет остатки и обороты (ОтчетОстаткиИОбороты)» будем приводить ниже описания общих реквизитов, функций, элементов формы. Реквизиты универсального отчета:

  • «ИмяРегистра» - строка, наименование регистра накопления из которого получаем данные

  • «ДатаНач» – дата, с которой начинается выборка данных

  • «ДатаКон» – дата, по которую производится выборка данных. Т.е. период формирования отчетов с «ДатаНач» по «ДатаКонк»

  • «ПостроительОтчета» – тип ПостроительОтчета, данный реквизит содержит в себе экземпляр объекта ПостроительОтчета с помощью которого формируется вывод информации в табличную часть, производится управление настройками отчета (группировками, отборами, сортировкой), а также происходит управление внешним видом отчета (вывод итогов по всем уровням, раскрашивание группировок)

  • «ИспользоватьСвойстваИКатегории» – булево, предназначен для уточнения выборки данных отчета по свойствам и категориям объектов. После указания данного параметра в настройках отчета предоставляется возможность выбирать те или иные свойства и категории объектов для группировок, отборов и упорядочивания

  • «СохраненныеНастройки» – структура, в которую помещаются настройки,  которые сохраняются при закрытии отчета и восстанавливаются при последующем открытии

  • «РаскрашиватьИзмерения» – булево, установка данного реквизита в Истина указывает на то что нужно при выводе строк группировок и полей их раскрашивать для лучшего представления информации на экране

  • «ВыводитьПоказателиВСтроку» – булево, указывает на возможность выводить группировки в одну строку

  • «ВыводитьДополнительныеПоляВОтдельнойКолонке» – булево, если в настройках отчета указаны дополнительные поля их нужно выводить в разных колонках

  • «ВыводитьИтогиПоВсемУровням» – булево, для некоторых группировок можно специально запретить выводить цифры по показателям, данный реквизит снимает данный запрет

  • «ПоказыватьЗаголовок» – булево, указывает выводить или не выводить заголовок на экран (регулируется кнопкой «Заголовок» на форме отчета)

  • Табличная часть «Показатели» - содержит в себе список выводимых на экран показателей.

2.7. Отчет просроченная задолженность

Основные характеристики отчета:

  1. Учет в разрезе организаций.

  2. Возможность отчета по документам расчетов.

  3. Дни задолженности из: из поля договора, из свойства контрагента

  4. Уровни детализации: по контрагентам, по договорам, по сделкам (только по сделкам)/договорам, по документам расчетов/договорам.

  5. Дебетовая и кредитовая задолженности.

  6. Управленческая и валюта взаиморасчетов.

  7. Отбор по свойствам контрагентов.

  8. Дополнительная информация: оплата за период, продажи за период,    процент просроченной задолженности, дней просрочено, дней с задолженности, средневзвешенной число дней долга, допустимое число дней задолженности, долг по таре.

  9. Вывод расшифровки в отдельной вкладке.

  10. Сравнение 2х период (и вывод разницы показателей).

  11. Получение отчетов за произвольное число дат и вывод в одной таблице.

Процедура Сформировать()

Перем Запрос, ТекстЗапроса, Таб;

СпрДоговора = СоздатьОбъект("Справочник.Договоры");

Таб = СоздатьОбъект("Таблица");

Таб.ИсходнаяТаблица("Отчет");

Док = СоздатьОбъект("Документ");

ДокОплата = СоздатьОбъект("Документ");

//Тз = СоздатьОбъект("ТаблицаЗначений");

Тз.НоваяКолонка("Покупатель");

Тз.НоваяКолонка("Город");

Тз.НоваяКолонка("КредДок");

Тз.НоваяКолонка("СуммаНакл","Число",15,2);

Тз.НоваяКолонка("ПрСумма","Число",15,2);

Тз.НоваяКолонка("ДнОтсрочки");

Тз.НоваяКолонка("Долг");

Запрос = СоздатьОбъект("Запрос");

ТекстЗапроса =

"//{{ЗАПРОС(Сформировать)

|с ВыбНачПериода по ВыбКонПериода;

|Покупатель = Регистр.РасчетыСПокупателями.Контрагент;

|Город = Регистр.РасчетыСПокупателями.Контрагент.Город;

|Долг = Регистр.РасчетыСПокупателями.Долг;

|Функция ДолгКонОст = КонОст(Долг);

|Группировка Покупатель;

|"//}}ЗАПРОС

;

Если ВыбПокупатель.Выбран() = 1 Тогда

ТекстЗапроса = ТекстЗапроса + "Условие(Покупатель в ВыбПокупатель);";

КонецЕсли;

Если ВыбГород.Выбран() = 1 Тогда

ТекстЗапроса = ТекстЗапроса + "Условие(Город = ВыбГород);";

КонецЕсли;

Если спсПокупателей.РазмерСписка() > 0 Тогда

ТекстЗапроса = ТекстЗапроса + "Условие(Покупатель в спсПокупателей);";

КонецЕсли;

Если ВидКонтрагента.Выбран() = 1 Тогда

Сообщить("Выбран!");

ТекстЗапроса = ТекстЗапроса + "Условие(Покупаетль.ВидКонтрагента = ВидКонтрагента);";

КонецЕсли;

Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда

Сообщить("Ошибка при выполнении запроса!","!");

Возврат;

КонецЕсли;

//Таб.ВывестиСекцию("Заголовок");

//Таб.Опции(0,0,Таб.ВысотаТаблицы(),0);

Пока Запрос.Группировка("Покупатель") = 1 Цикл

Если (Запрос.Покупатель.Покупатель = 0) или (Запрос.ДолгКонОст <=0 ) Тогда

Продолжить; КонецЕсли;

ТекПокупатель = Запрос.Покупатель;

СпрДоговора.ИспользоватьВладельца(ТекПокупатель);

Если СпрДоговора.НайтиПоРеквизиту("НаПоставку",Да,1) = 1 Тогда

ДнОтсрочки= СпрДоговора.ГлубинаКредита;

КонецЕсли;

//Док.ОбратныйПорядок(1);

Док.ВыбратьПоЗначению(ВыбНачПериода,ВыбКонПериода,"Контрагент",Тз.Покупатель);

Пока Док.ПолучитьДокумент() = 1 Цикл

Если (Док.Вид() <> "РасходнаяНакдладная") Тогда

Продолжить; КонецЕсли;

Предел = Док.ДатаДок + ДнОтсрочки;

Если Предел<=ВыбКонПериода тогда

Продолжить; КонецЕсли;

ТекДокумент = Док.ТекущийДокумент();

ДокОплата.ВыбратьПодчиненныеДокументы(ВыбНачПериода,ВыбКонПериода,ТекДокумент);

Оплачено = 0;

Пока ДокОплата.ПолучитьДокумент() > 0 Цикл

Оплачено = Оплачено + ДокОплата.Сумма;

КонецЦикла;

Контроль = ТекДокумент.Итог("Сумма") - Оплачено;

Если Контроль<=Оплачено Тогда

Продолжить; КонецЕсли;

Тз.НоваяСтрока();

Если ПоГородам = 1 Тогда

Тз.Город = ТекПокупатель.Город;

КонецЕсли;

Тз.УстановитьЗначение(Тз.НомерСтроки,"Покупатель",ТекПокупатель);

Тз.УстановитьЗначение(Тз.НомерСтроки,"КредДок",ТекДокумент);

Тз.ДнОтсрочки = ДнОтсрочки;

КонецЦикла;

КонецЦикла;