Внешний вид сайта:

Глава 9

Полезность страницы:
0/100

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

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

    1. Создаем новый отчет "ОбороткаПоДолгам";
    2. Добавим поле ввода ДатаН – тип Дата, формула ДатаН();
    3. Добавим поле ввода ДатаК – тип Дата, формула ДатаК();


    1. Пропишем процедуры в модуле формы:


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

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


    1. Сохраним конфигурацию;
    2. Создаем новый отчет "ОбороткаПоСкладу";
    3. Добавим поле ввода ДатаН – тип Дата, формула ДатаН();
    4. Добавим поле ввода ДатаК – тип Дата, формула ДатаК();
    5. Добавим поле ввода Склад – тип С.Склады;


    1. Пропишем процедуры в модуле формы:


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

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


  1. Сохраним изменения в конфигурации;
  2. Загрузим 1С:Предприятие;
  3. Создадим несколько новых документов, проведем старые и посмотрим, что выдадут нам наши отчеты;


 

2.26 Отчет по прибыли с товара.

В регистре "ОстаткиТовара" мы хранили такую информацию, как сумма поступления и сумма реализации. Создадим отчет, показывающий прибыль, которую мы получили в результате нашей хозяйственной деятельности.

    1. Создаем новый отчет "Прибыль";
    2. Добавим поле ввода ДатаН – тип Дата, формула ДатаН();
    3. Добавим поле ввода ДатаК – тип Дата, формула ДатаК();
    4. Добавим поле ввода Склад – тип С.Склады;
    5. Добавим кнопку [Х]. Пропишем в поле Формула свойств кнопки Склад="", этой кнопкой мы будем очищать поле "Склад";


    1. Пропишем процедуры в модуле формы:


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

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



 

2.27 Отчет по обороту товара.

Сформируем отчет по товарообороту. Для него мы возьмем данные из регистра "ОборотыТоваров".

    1. Создаем новый отчет "ТоварооборотПоСкладу";
    2. Добавим поле ввода ДатаН – тип Дата, формула ДатаН();
    3. Добавим поле ввода ДатаК – тип Дата, формула ДатаК();
    4. Добавим поле ввода Склад – тип С.Склады;
    5. Добавим кнопку [Х]. Пропишем в поле Формула свойств кнопки Склад="", этой кнопкой мы будем очищать поле "Склад";


    1. Пропишем процедуры в модуле формы:


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

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


  1. Теперь мы можем загрузить 1С:Предприятие и посмотреть, что нам выдадут наши отчеты;
Дополнить страницу Вы можете помочь другим людям дополнив эту страницу вашими знаниями по данному вопросу!
04:48

Комментарии

Нет комментариев. Ваш будет первым!