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

Кассовая книга

Автор Natalia21, 26 ноя 2011, 22:34

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

Natalia21

Вот я делаю отчет "КассоваяКнига", сделала макет "КассоваяКнига".
Реквизиты формы: "ДатаНач" и "ДатаКон".
1. Как сделать чтобы в элемент макета "Строка" вносились данные из документов "ПриходныйОрдер" и "РасходныйОрдер" (есть журнал "Касса", в котором отражаются данные ордера).
2. Как сделать отображение "ОстатокНаНачало"
3. Как прописать количество приходных и расходных ордеров в графу "КолПриходныхРасходных" (т.е. например должно отображаться "2 приходных ордера, 5 расходных ордеров")
4. Как поставить конкретную дату в ЗаголовкеЛиста из определенного временного промежутка, введенным пользователем. и соответственно если в этом промежутке несколько дат в которых проводились операции то должно быть несколько вкладных листов книги...
Просто я первый раз делаю отчет и не очень еще в них разобралась, помогите пожааалуйста!!!!

Natalia21

Вот еще скрин макета кассовой книги, думаю так легче будет...

Еще вот что я прописала в модуле формы:
Процедура КнопкаСформироватьНажатие(Кнопка)
   ТабДок = Новый ТабличныйДокумент();
   Макет = ЭтотОбъект.ПолучитьМакет("КассоваяКнига");
   
    //Вывести область "Заголовок"
   ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
   ОбластьЗаголовок.Параметры.Заполнить(ЭтотОбъект);
//   ОбластьЗаголовок.Параметры.ЗаголовокЛиста = "КАССА за ";
   ТабДок.Вывести(ОбластьЗаголовок);
   
   //Вывести область "Шапка"
   ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
   ОбластьШапка.Параметры.Заполнить(ЭтотОбъект);
   ТабДок.Вывести(ОбластьШапка);
   
   //Вывести область "ОстатокНаНачало"
   ОбластьОстатокНаНачало = Макет.ПолучитьОбласть("ОстатокНаНачало");
   ОбластьОстатокНаНачало.Параметры.Заполнить(ЭтотОбъект);
//   ОбластьОстатокНаНачало.Параметры.ОстатокНаНачало =
   ТабДок.Вывести(ОбластьОстатокНаНачало);
   
   //Вывести область "Строка"
   ОбластьСтрока = Макет.ПолучитьОбласть("Строка");
   ОбластьСтрока.Параметры.Заполнить(ЭтотОбъект);
//   
    ТабДок.Вывести(ОбластьСтрока);
   
   //Вывести область "Подвал"
   ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
   ОбластьПодвал.Параметры.Заполнить(ЭтотОбъект);
//   ОбластьПодвал.Параметры.ПриходЗаДень =
//  ОбластьПодвал.Параметры.РасходЗаДень =
//   ОбластьПодвал.Параметры.ОстатокНаКонец =
    ТабДок.Вывести(ОбластьПодвал);
   
   //Вывести область "Подпись"
   ОбластьПодпись = Макет.ПолучитьОбласть("Подпись");
   ОбластьПодпись.Параметры.Заполнить(ЭтотОбъект);
   ОбластьПодпись.Параметры.Кассир = Константы.Кассир.Получить();
//  ОбластьПодпись.Параметры.КолПриходныхРасходных =
   ОбластьПодпись.Параметры.Бухгалтер = Константы.ГлБухгалтер.Получить();
    ТабДок.Вывести(ОбластьПодпись);
   
   ТабДок.ОтображатьСетку = Ложь;
   ТабДок.Защита = Ложь;
   ТабДок.ТолькоПросмотр = Истина;
   ТабДок.ОтображатьЗаголовки = Ложь;
   ТабДок.Показать()

sergeevds

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

А что касается остатков, то скажи, в каком регистре у тебя хранятся данные о розничной выручке?

Natalia21

пока еще не в каком, я не могу понять принцип работы регистров(((
как я понимаю это будет регистр накоплений - назвала его "Выручка"

sergeevds

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

Natalia21

1.
Цитата: sergeevds от 28 ноя 2011, 14:01
      //тут создаешь шапку - это даст тебе возможность сделать циклом за каждый день из выбранного периода

т.е. тут надо вставить вот это:
       //Вывести область "Заголовок"
   ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
   ОбластьЗаголовок.Параметры.Заполнить(ЭтотОбъект);
   ОбластьЗаголовок.Параметры.ЗаголовокЛиста = "КАССА за ";    
   ТабДок.Вывести(ОбластьЗаголовок);   
   //Вывести область "Шапка"
   ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
   ОбластьШапка.Параметры.Заполнить(ЭтотОбъект);
   ТабДок.Вывести(ОбластьШапка);
   //Вывести область "Подвал"
   ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
   ОбластьПодвал.Параметры.Заполнить(ЭтотОбъект);
//   ОбластьПодвал.Параметры.ПриходЗаДень =
//  ОбластьПодвал.Параметры.РасходЗаДень =
//   ОбластьПодвал.Параметры.ОстатокНаКонец =
    ТабДок.Вывести(ОбластьПодвал);
   
   //Вывести область "Подпись"
   ОбластьПодпись = Макет.ПолучитьОбласть("Подпись");
   ОбластьПодпись.Параметры.Заполнить(ЭтотОбъект);
   ОбластьПодпись.Параметры.Кассир = Константы.Кассир.Получить();
//  ОбластьПодпись.Параметры.КолПриходныхРасходных =
   ОбластьПодпись.Параметры.Бухгалтер = Константы.ГлБухгалтер.Получить();
    ТабДок.Вывести(ОбластьПодпись);
   
   ТабДок.ОтображатьСетку = Ложь;
   ТабДок.Защита = Ложь;
   ТабДок.ТолькоПросмотр = Истина;
   ТабДок.ОтображатьЗаголовки = Ложь;
   ТабДок.Показать();
так? либо все области выводить надо которые есть в макете???

2." СледующийДень = КонецДня(НачПериода);"
тут возникает ошибка что переменная НачПериода не определена, а также переменная КонПериода тоже не определена, как ее определить?


Natalia21

со вторым вопросом уже разобралась))) надо было просто названия поменять))

Natalia21

еще при запросе в программе данного отчета выскакивает ошибка:

{Отчет.КассоваяКнига.Форма.ФормаОтчета(68)}: Ошибка при вызове метода контекста (Выполнить): {(5, 4)}: Таблица не найдена "Документ.ПриходныйКассовыйОрдер"
<<?>>Документ.ПриходныйКассовыйОрдер КАК ПриходныйКассовыйОрдер
      РезультатПКО = ЗапросПКО.Выполнить().Выбрать();
по причине:
{(5, 4)}: Таблица не найдена "Документ.ПриходныйКассовыйОрдер"
<<?>>Документ.ПриходныйКассовыйОрдер КАК ПриходныйКассовыйОрдер

has

Конструктором запрос стройте

Natalia21

с конструктором еще не понятнее становится что куда и как(((

Теги:

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

Рейтинг@Mail.ru

Поиск