Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа_1C__2_1.doc
Скачиваний:
19
Добавлен:
10.05.2015
Размер:
543.23 Кб
Скачать

2.25 Оборотные ведомости

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

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

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

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

  4. Пропишем процедуры в модуле формы: Процедура ДатаН()   Если ДатаН>ДатаК Тогда     ДатаН=ДатаК;   КонецЕсли; КонецПроцедуры //----------------------------------------------- Процедура ДатаК()   Если  ДатаК<ДатаН Тогда     ДатаК=ДатаН;   ИначеЕсли ДатаК>ПолучитьДатуТА() Тогда     ДатаК=ПолучитьДатуТА();   КонецЕсли; КонецПроцедуры //----------------------------------------------- Процедура Сформировать()   Запрос=СоздатьОбъект("Запрос");   ТекстЗапроса="   |Период с ДатаН по ДатаК;   |Контр = Регистр.Взаиморасчеты.Контрагент;   |Догов = Регистр.Взаиморасчеты.Договор;   |Сумма = Регистр.Взаиморасчеты.Сумма;   |Флаг = Регистр.Взаиморасчеты.ФлагДвижения;   |Функция СуммаНачОст = НачОст(Сумма);   |Функция СуммаПриходТов = Приход(Сумма) когда(Флаг=1);   |Функция СуммаРасходТов = Расход(Сумма) когда(Флаг=2);   |Функция СуммаРасходДен = Расход(Сумма) когда(Флаг=3);   |Функция СуммаПриходДен = Приход(Сумма) когда(Флаг=4);   |Функция СуммаКонОст = КонОст(Сумма);   |Группировка Контр упорядочить по Контр.Код;   |Группировка Догов;";   Если Запрос.Выполнить(ТекстЗапроса)=0 Тогда     Сообщить("Запрос не выполнен");     Возврат;   КонецЕсли;   Таб=СоздатьОбъект("Таблица");   Таб.ИсходнаяТаблица("Таблица");   ИтНачОст=Запрос.СуммаНачОст;   ИтПрихТов=Запрос.СуммаПриходТов;   ИтРасхДен=Запрос.СуммаРасходДен;   ИтРасхТов=Запрос.СуммаРасходТов;   ИтПрихДен=Запрос.СуммаПриходДен;   ИтКонОст=Запрос.СуммаКонОст; // для итогов перед началом прохода по группировкам получаем // значения функций для всей выборки сразу   Таб.ВывестиСекцию("Шапка");   Пока Запрос.Группировка(1)=1 Цикл     Контра=Запрос.Контр;     НачОст=Запрос.СуммаНачОст;     ПрихТов=Запрос.СуммаПриходТов;     РасхДен=Запрос.СуммаРасходДен;     РасхТов=Запрос.СуммаРасходТов;     ПрихДен=Запрос.СуммаПриходДен;     КонОст=Запрос.СуммаКонОст;     Если Контра.ЭтоГруппа()=1 Тогда       Таб.ВывестиСекцию("Группа");     Иначе       Таб.ВывестиСекцию("Контра");       Пока Запрос.Группировка(2)=1 Цикл         Дог=Запрос.Догов;         НачОст=Запрос.СуммаНачОст;         ПрихТов=Запрос.СуммаПриходТов;         РасхДен=Запрос.СуммаРасходДен;         РасхТов=Запрос.СуммаРасходТов;         ПрихДен=Запрос.СуммаПриходДен;         КонОст=Запрос.СуммаКонОст;         Таб.ВывестиСекцию("Дог");       КонецЦикла;     КонецЕсли;   КонецЦикла;   Таб.ВывестиСекцию("Итого");   Таб.ТолькоПросмотр(1);   Таб.ПараметрыСтраницы(1,100,1);   Таб.Показать(""); КонецПроцедуры

  5. Создадим шаблон печатной формы;

  1. Сохраним конфигурацию;

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

  3. Добавим поле ввода ДатаН – тип Дата, формула ДатаН();

  4. Добавим поле ввода ДатаК – тип Дата, формула ДатаК();

  5. Добавим поле ввода Склад – тип С.Склады;

  6. Пропишем процедуры в модуле формы: //----------------------------------------------- Процедура ДатаН()   Если ДатаН>ДатаК Тогда     ДатаН=ДатаК;   КонецЕсли; КонецПроцедуры //----------------------------------------------- Процедура ДатаК()   Если  ДатаК<ДатаН Тогда     ДатаК=ДатаН;   ИначеЕсли ДатаК>ПолучитьДатуТА() Тогда     ДатаК=ПолучитьДатуТА();   КонецЕсли; КонецПроцедуры //----------------------------------------------- Процедура Сформировать()   Если Склад.Выбран()=0 Тогда     Сообщить("Не выбран склад");     Возврат;   КонецЕсли;   Запрос=СоздатьОбъект("Запрос");   ТекстЗапроса="   |Период с ДатаН по ДатаК;   |Скл = Регистр.ОстаткиТоваров.Склад;   |Товар = Регистр.ОстаткиТоваров.Товар;   |Сорт = Регистр.ОстаткиТоваров.Сорт;   |Количество = Регистр.ОстаткиТоваров.Количество;   |ФлагДвижения = Регистр.ОстаткиТоваров.ФлагДвижения;   |Функция КолНачОстС = НачОст(Количество);   |Функция КолПриходК = Приход(Количество) когда(ФлагДвижения=1);   |Функция КолПриходВ = Приход(Количество) когда(ФлагДвижения=2);   |Функция КолРасходВ = Расход(Количество) когда(ФлагДвижения=2);   |Функция КолРасходК = Расход(Количество) когда(ФлагДвижения=1);   |Функция КолКонОстС = КонОст(Количество);   |Группировка Товар упорядочить по Товар.Код;   |Группировка Сорт;   |Условие(Скл=Склад);";   Если Запрос.Выполнить(ТекстЗапроса)=0 Тогда     Сообщить("Запрос не выполнен");     Возврат;   КонецЕсли;   Таб=СоздатьОбъект("Таблица");   Таб.ИсходнаяТаблица("");   Таб.ВывестиСекцию("Шапка");   ИтНачОстС = Запрос.КолНачОстС;   ИтПриходК = Запрос.КолПриходК;   ИтПриходВ = Запрос.КолПриходВ;   ИтРасходВ = Запрос.КолРасходВ;   ИтРасходК = Запрос.КолРасходК;   ИтКонОстС = Запрос.КолКонОстС;   Пока Запрос.Группировка("Товар")=1 Цикл     ТТов=Запрос.Товар;     НачОстС = Запрос.КолНачОстС;     ПриходК = Запрос.КолПриходК;     ПриходВ = Запрос.КолПриходВ;     РасходВ = Запрос.КолРасходВ;     РасходК = Запрос.КолРасходК;     КонОстС = Запрос.КолКонОстС;     Если ТТов.ЭтоГруппа()=1 Тогда       Тов=СокрЛП(ТТов.Наименование);       Таб.ВывестиСекцию("Группа");     Иначе       Тов=СокрЛП(ТТов.Код)+" ("+СокрЛП(ТТов.Наименование)+")";       НачОстС = Запрос.КолНачОстС;       ПриходК = Запрос.КолПриходК;       ПриходВ = Запрос.КолПриходВ;       РасходВ = Запрос.КолРасходВ;       РасходК = Запрос.КолРасходК;       КонОстС = Запрос.КолКонОстС;       Таб.ВывестиСекцию("Товар");       Пока Запрос.Группировка("Сорт")=1 Цикл         Срт=Запрос.Сорт;         НачОстС = Запрос.КолНачОстС;         ПриходК = Запрос.КолПриходК;         ПриходВ = Запрос.КолПриходВ;         РасходВ = Запрос.КолРасходВ;         РасходК = Запрос.КолРасходК;         КонОстС = Запрос.КолКонОстС;         Таб.ВывестиСекцию("Сорт");       КонецЦикла;     КонецЕсли;   КонецЦикла;   Таб.ВывестиСекцию("Итого");   Таб.ТолькоПросмотр(1);   Таб.ПараметрыСтраницы(1,100,1);   Таб.Показать(""); КонецПроцедуры Во многом модуль этого отчета похож на предыдущий.

  7. Создадим шаблон печатной формы;

  1. Сохраним изменения в конфигурации;

  2. Загрузим 1С:Предприятие;

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