Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ИСиТ. Методичка.doc
Скачиваний:
25
Добавлен:
04.11.2018
Размер:
745.47 Кб
Скачать

10. Лабораторная работа №9

10.1. Создание отчета "ОбороткаПоДолгам"

Учет не имеет смысла без отчетности. У нас уже есть отчеты, которые показывают состояние остатков и долгов на конкретную дату. Необходимо создать два отчета: один покажет изменение долгов за какой-то период, а второй -движение по складу товаров.

  1. Создать новый отчет "ОбороткаПоДолгам".

  2. Добавить поле ввода ДатаН - тип Дата, формула ДатаН().

  3. Добавить поле ввода ДагаК — тип Дата, формула ДатаК().

  4. Прописать процедуры в модуле формы:

Процедура ДатаН() ДатаК=П о луч ить Дату Т А(); Если

ДатаН>ДатаК Тогда ДатаН=ДатаК; КонецЕсли; КонецПроцедуры //

Процедура ДатаК() Если ДатаК<ДатаН Тогда ДатаК=ДатаН;

ИначеЕсли ДатаК>ПолучитьДатуТА() Тогда

ДатаК=ПолучитьДатуТА();

КонецЕсли;

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

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

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

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

|Период с ДатаН по ДатаК;

|Контр = Регистр.Взаиморасчеты.Контрагент;

|Догов = Регистр.Взаиморасчеты.Договор;

|Сумма «в Регистр.Взаиморасчеты.Сумма;

|Флаг = Регистр.Взаиморасчеты.ФлагДвижения;

|Функиия СуммаНачОст = НачОст(Сумма);

|Функция СуммаПриходТов = Приход(Сумма) когда(Флаг=1);

|Функция СуммаРасходТов = Расход(Сумма) когда(Флаг=2);

|Функция СуммаРасходДен = Расход(Сумма) когда(Флаг=3);

[Функция СуммаПриходДен = Приход(Сумма) когда(Флаг=4);

^Функция СуммаКонОст = КонОст(Сумма);

[Группировка Контр упорядочить по Контр.Код;

[Группировка Догов;";

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

Сообщить("Запрос не выполнен");

Возврат;

КонецЕсли;

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

Табл и ца"); ИтНачОст=Запрос.СуммаНачОст;

ИтПри\Тов=Запрос.СуммаПриходТов;

ИтРасхДен=Запрос.СуммаРасходДен;

ИтРасхТов=Запрос.СуммаРасходТов;

ИтПрихДен-Запрос.СуммаПриходДен;

ИтКонОст=Запрос.СуммаКонОст;

// для итогов перед началом прохода по группировкам получаем

// значения функций для всей выборки сразу

Таб.ВывестиСекцию("Шапка");

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

Контра-Запрос. Контр;

НачОст=Занрос.СуммаНачОст;

ПрихТов-Запрос.СуммаПриходТов;

РасхДен=Запрос.СуммаРасходДен;

РасхТов~ Запрос.СуммаРасходТов;

Г1рихДен=Запрос.СуммаПриходДен;

КонОст=Запрос.СуммаКонОст;

Если Контра.ЭтоГруппа()=1 Тогда

Таб.ВывестиСекцию("Группа");

Иначе

Таб.ВывестиСекцию( "Контра");

Пока Запрос.Груипировка(2)=1 Цикл

Дог=Запрос. .Догов;

НачОст=Запрос.СуммаНачОст;

ПрихТовЗапрос.СуммаПриходТов;

РасхДен-Запрос.СуммаРасходДен;

РасхТов=Запрос.СуммаРасходТов;

ПрихДен Запрос.СуммаПриходДен;

КонОст=Запрос.СуммаКонОст;

Габ.ВывестиСекцию("Дог");

КонецЦикла;

КонецЕсли;

КонецЦикла;

Таб. ВывестиСекцию( "Итого"); Габ.'ГолькоПросмотр( 1);

Таб.ПараметрыСтраницы(1,100,1); Таб. Показать("");

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

  1. Создать шаблон печатной формы.

  2. Сохранить конфигурацию.

10.2. Создание отчета "ОбороткаПоСкладу"

  1. Создать новый отчет "ОбороткаПоСкладу".

  2. Добавить поле ввода ДатаН — тип Дата, формула ДатаН().

  3. Добавить поле ввода ДатаК - тип Дата, формула ДатаК().

  4. Добавить поле ввода Склад - тип С.Склады.

  5. Прописать процедуры в модуле формы:

Процедура ДатаН()

ДатаК=ПолучитьДатуТА();

Если ДатаН>ДатаК Тогда

ДатаН=ДатаК;

КонецЕсли;

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

//--—

Процедура ДатаК() Если ДатаК<ДатаН Тогда ДатаК> ДатаН;

ИначеЕсли ДатаК>ПолучитьДатуТА() Тогда

ДатаК=ПолучитьДатуТА();

КонецЕсли;

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

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

Если Склад.Выбран()=0 Тогда

Сообщить("Не выбран склад");

Возврат;

КонецЕсли;

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

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

|Период с ДатаН по ДатаК;

|Скл = Регистр.ОстаткиТоваров. Склад;

|Товар = Регистр.ОстаткиТоваров.Товар;

|Количество = Регистр.ОстаткиТоваров.Количество;

|ФлагДвижения = Регистр.ОстаткиТоваров.ФлагДвижения;

|Функция КолНачОстС = НачОст(Количество);

[Функция КолПриходК = Приход(Количество) ко-

гда(ФлагДвижения=1);

|Функция КолРасходК = Расход(Количество) ко-

гда(ФлагДвижения=1);

|Функция КолКонОстС = КонОст(Количество); |Группировка Товар

упорядочить по Товар.Код;

|Условие(Скл=Склад);";

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

Сообщить("3апрос не выполнен");

Возврат;

КонецЕсли;

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

Таб.ВывестиСекцию("Шапка"); ИгНачОстС = Запрос.КолНачОстС;

ИтПриходК = Запрос. КолПриходК; ИтРасходК =

Запрос.КолРасходК; ИгКонОстС = Запрос. КолКо нОстС; Пока

Запрос.Группировка("Товар")~"1 Цикл ГТов=Запрос. Товар;

НачОстС = Запрос.КолНачОстС; ПриходК = Запрос.КолПриходК;

РасходК = Запрос.КолРасходК; КонОстС ~ Запрос.КолКонОстС;

Если ТТов.ЭтоГруппа()— 1 Тогда Тов=СокрЛП(ТТов.

Наименование); Таб.ВывестиСекцию("Группа"); Иначе

Тов=СокрЛП(ТТов.Код)+" ("+СокрЛП(ТТов.Наименованис)+")";

НачОстС ~ Запрос.КолНачОстС;

ПриходК = Запрос.КолПриходК;

РасходК = Запрос.КолРасходК;

КонОстС = Запрос.КолКонОстС;

I аб.ВывестиСекцию( "Товар");

КонецЕсли;

КонецЦикла;

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

Таб.ТолькоПросмотр( 1);

Таб.Парам етрыСтраницы( 1,100,1);

Таб.Показать("");

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

  1. Создать шаблон печатной формы.

  2. Сохранить изменения в конфигурации.

  3. Загрузить 1С:Предприятие.

  4. Создать несколько новых документов, провести старые и посмотреть, что выдадут отчеты.