Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
28 мар 2024, 12:07

Отчет по кассе

Автор Natalia21, 05 дек 2011, 19:09

0 Пользователей и 1 гость просматривают эту тему.

Natalia21

Помогите пожалуйста. Делаю отчет "Кассовая книга".
1. при формировании отчета выводятся макеты за каждый день, даже если в этот день не было операций
2. не выводятся данные о приходном кассовом ордере (данные должны выводится в область "Строка", как правильно прописать путь?)
3. как сделать чтобы считался приход и расход за день?

Процедура КнопкаСформироватьНажатие(Кнопка)
   ТабДок = Новый ТабличныйДокумент();
   Макет = ЭтотОбъект.ПолучитьМакет("КассоваяКнига");
   
   СледующийДень = КонецДня(ДатаНач);
   Пока СледующийДень <= КонецДня(ДатаКон) Цикл
   
   //тут создаю шапку - дает возможность сделать циклом за каждый день из выбранного периода
       //Вывести область "Заголовок"
ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
ОбластьЗаголовок.Параметры.Заполнить(ЭтотОбъект);
ОбластьЗаголовок.Параметры.ЗаголовокЛиста = "КАССА за ";
ТабДок.Вывести(ОбластьЗаголовок);

//Вывести область "Шапка"
ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
ОбластьШапка.Параметры.Заполнить(ЭтотОбъект);
ТабДок.Вывести(ОбластьШапка);

//Вывести область "Подвал"
ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
ОбластьПодвал.Параметры.Заполнить(ЭтотОбъект);
// ОбластьПодвал.Параметры.ПриходЗаДень =
//      ОбластьПодвал.Параметры.РасходЗаДень =
// ОбластьПодвал.Параметры.ОстатокНаКонец =
    ТабДок.Вывести(ОбластьПодвал);

//Вывести область "Подпись"
ОбластьПодпись = Макет.ПолучитьОбласть("Подпись");
ОбластьПодпись.Параметры.Заполнить(ЭтотОбъект);
ОбластьПодпись.Параметры.Кассир = Константы.Кассир.Получить();
//      ОбластьПодпись.Параметры.КолПриходныхРасходных =
ОбластьПодпись.Параметры.Бухгалтер = Константы.ГлБухгалтер.Получить();
    ТабДок.Вывести(ОбластьПодпись);

ТабДок.ОтображатьСетку = Ложь;
ТабДок.Защита = Ложь;
ТабДок.ТолькоПросмотр = Истина;
ТабДок.ОтображатьЗаголовки = Ложь;
ТабДок.Показать();


      //данные по приходу
      ЗапросПКО = Новый Запрос;
      ЗапросПКО.УстановитьПараметр("ДатаНач",ДатаНач);
      ЗапросПКО.УстановитьПараметр("ДатаКон",СледующийДень);
      ЗапросПКО.Текст = "ВЫБРАТЬ
      |   ПриходныйОрдер1.Номер,
      |   ПриходныйОрдер1.Сумма
      |ИЗ
      |   Документ.ПриходныйОрдер1 КАК ПриходныйОрдер1
      |ГДЕ
      |   ПриходныйОрдер1.Дата МЕЖДУ &ДатаНач И &ДатаКон";
      РезультатПКО = ЗапросПКО.Выполнить().Выбрать();
  Пока РезультатПКО.Следующий() Цикл
//Вывести область "Строка"
ОбластьСтрока = Макет.ПолучитьОбласть("Строка");
ОбластьСтрока.Параметры.Заполнить(ЭтотОбъект);
// ОбластьСтрока.Параметры.НомерДокумента = 
    ТабДок.Вывести(ОбластьСтрока);
      КонецЦикла;
     
      СледующийДень = КонецДня(СледующийДень + 1*60);     
   КонецЦикла;
    КонецПроцедуры

has

1. Цикл не правильно организован, поэтому и выводит лишние данные. Надо выбрать документы ПКО и РКО и уже эту выборку обходить и выводить таблицу
2. Попробовать так
ОбластьСтрока = Макет.ПолучитьОбласть("Строка");
ОбластьСтрока.Параметры.Заполнить(РезультатПКО);

3. Получать данные по приходникам и расходникам, группировать по дням

Natalia21

2. Попробовать так
Код:
ОбластьСтрока = Макет.ПолучитьОбласть("Строка");
ОбластьСтрока.Параметры.Заполнить(РезультатПКО);

Не работает, данные ордера не выводятся(((

Natalia21

Данные ПКО вывела, но почему то отображается эта строка в самом конце, а не в таблице, где она должна быть((

Dethmontt

Наташа, правильно? Можно на ты?
Так вот, Наташа, функция - "ОбластьСтрока.Параметры.Заполнить(РезультатПКО);" - работает в том случае если имена параметров области макета (в твоем случае "СТРОКА") совпадают с именами реквизитов документа(Именами колонок запроса) То есть - Реквизит документа "Номер" ляжет в параметр <Номер> и т.д.
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Natalia21

Да, можно конечно)) С этим я разобралась, данные ПКО у меня выводятся в строку, но почему область эта "Строка" выводится уже в конце документа, а не в самой таблице, где она должна быть...

Dethmontt

Где вызван метод Вывести() там и выводиться. Если ОбластьПодвал.Вывести() раньше области "Строка" то подвал будет выше строки
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Natalia21

подскажите еще пожалуйста как можно сделать чтобы вот в отчете с области "строка" отображались сначала приходные ордера, а потом расходные?
запрос на РКО, такой же примерно как и на ПКО:
ЗапросРКО = Новый Запрос;
    ЗапросРКО.УстановитьПараметр("ДатаНач",ДатаНач);
    ЗапросРКО.УстановитьПараметр("ДатаКон",СледующийДень);
    ЗапросРКО.Текст = "ВЫБРАТЬ
      |   РасходныйОрдер.Номер,
  |   РасходныйОрдер.Выдать,
  |    РасходныйОрдер.КоррСчет,
      |   РасходныйОрдер.СуммаРКО
      |ИЗ
      |   Документ. РасходныйОрдер КАК  РасходныйОрдер
      |ГДЕ
      |    РасходныйОрдер.Дата МЕЖДУ &ДатаНач И &ДатаКон";
    РезультатРКО = ЗапросРКО.Выполнить().Выбрать();
 
Пока РезультатРКО.Следующий() Цикл
КонецЦикла;

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск