Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2, свеженьких 1
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Отчет где то как в касссовой книге          
Yoja Подменю пользователя
сообщение 10.09.14, 10:20
Сообщение #1

Говорящий
***
Группа: Пользователи
Сообщений: 90
Спасибо сказали: 4 раз
Рейтинг: 0

1С:Предприятие 7.7 для SQL (7.70.027)
Конфигурация:
"Бухгалтерский учет" для Украины (7.70.252)

Добрый день!
Давненько было задание сделать отчет по кассам расходные и приходные документы с сортировкой по кассе за период (сделано)
Поля в отчете:
№п/п
Дата
Документ
Касса
Сумма
Примечание

Теперь хотят, что бы добавил еще 4 поля
Остаток на начало периода, дебит, кредит, остаток на конец периода по каждой кассе.

Подскажите пожалуйста, где и как найти информацию, откуда ее выкатить??

Как должен выглядеть отчет


Спасибо


 ! 

Правила, п.3,4,5
 


Сообщение отредактировал logist - 10.09.14, 10:43

mister-x Подменю пользователя
сообщение 10.09.14, 10:31
Сообщение #2

...
Иконка группы
Модератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 3477
Из: Тернопіль
Спасибо сказали: 1417 раз
Рейтинг: 0

Ця задача для програміста, а не для користувача, а тема в розділі для користувачів.

По суті, копайте в сторону бух.запиту в синтакс-помічнику.

Сообщение отредактировал mister-x - 10.09.14, 10:32

Yoja Подменю пользователя
сообщение 10.09.14, 10:54
Сообщение #3

Говорящий
***
Группа: Пользователи
Сообщений: 90
Спасибо сказали: 4 раз
Рейтинг: 0

Спасибо, за перенос темы в правильное русло

Добавлю код, реализации журнала ПКО и РКО
Перем Флаг, i;
Перем Запрос, КодЗапроса;
Перем Таб;

Перем ТабП;     //номер подпункта
Перем ТабД;     //дата документа
Перем ТабДок;   //документ
Перем ТабК;     //касса
Перем ТабЦФО;   //цфо
Перем ТабОДДС;  //оддс
Перем ТабСумма; //сумма документа
Перем ТабПр;    //примечание    

Перем ОстНач;
Перем пДт;
Перем пКт;
Перем ОстКон;

Перем ПутьExcel;
                                                    

                  
Процедура ИмпортExcel()
     //Таб.Записать(КаталогИБ()+"ExtForms\004m.xls", 1);
     //Таб.Показать("Отчет",КаталогИБ()+"ExtForms\004m.xls");
    
ИмяВыбрФайла = "Журнал_"+ТекущаяДата()+".xls";
    Если ФС.ВыбратьФайл(1, ИмяВыбрФайла, ПутьExcel, "Сохранить Excel документ", "Microsoft Excel (*.xls)|*.xls", , ) = 1 Тогда
    Таб.Записать(ПутьExcel+ИмяВыбрФайла,1);

  КонецЕсли;
КонецПроцедуры    

Функция ПроверкаДаты();
     Флаг = 0;
     Если (Число(Дата1) = 0) или (Число(Дата2) = 0) или (Дата1 > Дата2) Тогда
         Сообщить("Не правильно заполнен период","!");
         Возврат Флаг;
     Иначе          
         Флаг = 1;
         Возврат Флаг
     КонецЕсли;
КонецФункции    


//*******************************************

Процедура Сформировать()
     Если (ПроверкаДаты() = 1) Тогда //Начало проверки даты [001]

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

ТаблЗнач.НоваяКолонка("ТабП");
ТаблЗнач.НоваяКолонка("ТабД");
ТаблЗнач.НоваяКолонка("ТабДок");
ТаблЗнач.НоваяКолонка("ТабК");
ТаблЗнач.НоваяКолонка("ТабЦФО");
ТаблЗнач.НоваяКолонка("ТабОДДС");
ТаблЗнач.НоваяКолонка("ТабСумма");
ТаблЗнач.НоваяКолонка("ТабПр");  

ТаблЗнач.НоваяКолонка("ОстНач");
ТаблЗнач.НоваяКолонка("пДт");
ТаблЗнач.НоваяКолонка("пКт");
ТаблЗнач.НоваяКолонка("ОстКон");

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

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

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

     Таб.ВывестиСекцию("ШапкаЗаголовки");
    
     Для i=1 по ТаблЗнач.КоличествоСтрок() Цикл
         ТаблЗнач.ПолучитьСтрокуПоНомеру(i);    

             ТабП     = i;
             ТабД     = ТаблЗнач.ТабД;
             ТабДок   = ТаблЗнач.ТабДок;
             ТабК     = ТаблЗнач.ТабК;
             ТабЦФО   = ТаблЗнач.ТабЦФО;
             ТабОДДС  = ТаблЗнач.ТабОДДС;
             ТабСумма = ТаблЗнач.ТабСумма;
             ТабПр    = ТаблЗнач.ТабПр;
            
         Таб.ВывестиСекцию("Строка");
     КонецЦикла;
    
     Таб.Показать("Журнал операций: ("+Дата1+"-"+Дата2+")");

     КонецЕсли; //Конец проверки даты [001]
КонецПроцедуры

Домовик Подменю пользователя
сообщение 10.09.14, 17:14
Сообщение #4

Ветеран
Иконка группы
Группа: Местный
Сообщений: 975
Из: Киев
Спасибо сказали: 168 раз
Рейтинг: 0

задача сформулирована как-то нетак-то.

у вас обычный журнал же с хронологией? т.е показаны пко и рко по введенным датам?

информацию которую у вас запрашивают, это сведенная уже информация....
Аааа... это они хотят видеть на сколько уменьшает увеличивает кассу каждый документ.


из того что уже есть, можно вычислить эти колонки прямо в тз. К сумме предыдущей строки добавлять/убавлять знач текущей, вычислять тек кон и нач остатки.

в тек строке присваиваете переменным ТекНачОст, ТекДеб, ТекКред, ТекКонОста значения тек строки после ВывестиСтроку()
в месте до ВывестиСтроку() - прибавляете к значениям нужных колонок значения ТекНачОст, ТекДеб, ТекКред, ТекКонОста.


это логическим путем из того , что уже в коде есть.



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




Домовик Подменю пользователя
сообщение 10.09.14, 20:38
Сообщение #5

Ветеран
Иконка группы
Группа: Местный
Сообщений: 975
Из: Киев
Спасибо сказали: 168 раз
Рейтинг: 0

поправлю себя же:


НачОстаток=КонОстаток предыдущей строки таблицы.
Дт - (это 30 счет), сумма ПКО
Кт - сумма РКО
КонОстаток=НачОстаток+Дт-Кт


НачОстаток первой строки таблицы, остаток начальный Дт по счету (30) по указанной кассе на дату документа(РКО,ПКО) первой строки таблицы.


Yoja Подменю пользователя
сообщение 12.09.14, 10:56
Сообщение #6

Говорящий
***
Группа: Пользователи
Сообщений: 90
Спасибо сказали: 4 раз
Рейтинг: 0

т.е. мои действия:

1. Определяемся с периодом (НачДата, КонДата), задаем через форму
2. Определяемся с кассой по которой хотим посмотреть остаток на начало дня, конец дня, дебет и кредит


     //задаем фирму
       Фирма = глВосстановитьЗначение(,"БазФирма");
      
       //задаем кассу
       //но так как это пока для тестов, то укажу кассу в ручную
   Касса = СоздатьОбъект("Справочник.НашиДенежныеСчета");
             Касса.ИспользоватьВладельца(Фирма);
             Касса.НайтиПоНаименованию("Касса Д2",0);
      
   //забираем периоды с формы
   НачДата = Дата1;
         КонДата = Дата2;

//создаем объект бухгалтерские итоги
<tt>БухИт = СоздатьОбъект("БухгалтескиеИтоги");
       БухИт.ИспользоватьазделительУчета(Фима);
       БухИт.ВклчатьСубсчета(-1);  
       
       
       Сообщить(БухИт.СНД("С"));</tt>


Правильно? У меня всегда в сообщении вывода 0(ноль)

Домовик Подменю пользователя
сообщение 12.09.14, 11:44
Сообщение #7

Ветеран
Иконка группы
Группа: Местный
Сообщений: 975
Из: Киев
Спасибо сказали: 168 раз
Рейтинг: 0

механическая ошибка Фима вместо Фирма.

Кассу нужно взять из первой строки таблицы:

ТаблЗнач.ПолучитьСтрокуПоНомеру(1);
ПерваяКасса=ТаблЗнач.ТабК;


в коде в таблицу вы присваиваете Наименование кассы, а не ссылка на элемент справочника. Учитывайте это.




работа с бух итогами:

СНД(<Счет>,<ТипСуммы>,<Валюта>,<Субконто1...>)


НачОстаток=БухИт.СНД("301","С",СсылкаНаПервуюКассу);


где СсылкаНаПервуюКассу находите по значению переменной ПерваяКасса в справочнике НашиДенежныеСчета.











чтобы рассчитать итоги на произвольный период. (у вас произвольный, задается вручную). нужно еще использовать метод
Рассчитать(<НачалоПериода>,<КонецПериода>,<ФильтрПоСчетам>,<ТолькоСинтетика>,<ПланСчетов>,<РазделительУчета>)

перед обращением к итогам, т. е. перед строкой СНД().

Сообщение отредактировал Домовик - 12.09.14, 11:45

Yoja Подменю пользователя
сообщение 12.09.14, 12:02
Сообщение #8

Говорящий
***
Группа: Пользователи
Сообщений: 90
Спасибо сказали: 4 раз
Рейтинг: 0

Спасибо, попробую отпишусь

alex040269 Подменю пользователя
сообщение 12.09.14, 12:12
Сообщение #9

Крутой
Иконка группы
Группа: Местный
Сообщений: 1626
Из: Гуляйполе
Спасибо сказали: 236 раз
Рейтинг: 0

ВыполнитьЗапрос(<НачалоПериода>,<КонецПериода>,<Счет>,<КоррСчет>,<Валюта>,<ТипИтогов>,<Периодичность>,<ТипСуммы>)
ВыбратьПериоды(<ФлагВсе>,<ФлагДК>,<Номер>,<РазвСальдо>)
ПолучитьПериод(<Номер>,<ДатаНачалаПериода>)


Signature
Никогда не бойся делать то, что не умеешь, помни - Ноев ковчег был построен любителем, профессионалы построили Титаник.
ЗиУП

Yoja Подменю пользователя
сообщение 22.09.14, 8:45
Сообщение #10

Говорящий
***
Группа: Пользователи
Сообщений: 90
Спасибо сказали: 4 раз
Рейтинг: 0

Добрый день!
Спасибо всем кто помогал, советовал... (я попутал Таблицу значений и просто таблицу)
Я конечно тормозил, тупил, но желаемый результат достигнут, может конечно эксперты скажут что достигнут топорным способом..

1. что нужно было получить? Журнал ПКО, РКО за период по кассам с остатками на начала и конец периода, а также дебит и кредит по этим кассам (рисунок)


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

//дописываем в таблицу значений значениями расходных документов (РКО)
         ДокРК = СоздатьОбъект("Документ.РасходныйКассовый");
         ДокРК.ВыбратьДокументы(Дата1,Дата2);    
         ДокРК.УстановитьФильтр(1,0);
         
         Пока ДокРК.ПолучитьДокумент() = 1 Цикл
         Если ДокРК.ПометкаУдаления() <> 0 Тогда Продолжить КонецЕсли;
         
             ТаблЗнач.НоваяСтрока();
             ТаблЗнач.ТабП     = row;
             ТаблЗнач.ТабД     = СокрЛП(ДокРК.ДатаДок);  
             ТаблЗнач.ТабДок   = СокрЛП(ДокРК.НомерДок);
             ТаблЗнач.ТабК     = СокрЛП(ДокРК.РСчет.Наименование);
             ТаблЗнач.ТабЦФО   = СокрЛП(ДокРК.ЦФО.Наименование);
             ТаблЗнач.ТабОДДС  = СокрЛП(ДокРК.ОДДС.Наименование);
             ТаблЗнач.ТабСумма = СокрЛП(ДокРК.СуммаВал);
             ТаблЗнач.ТабПр    = СокрЛП(ДокРК.Примечание);
             
         
         row=row+1;//переходим на следующую строку
         КонецЦикла;
         
//Сортируем по трем столбцам
         ТаблЗнач.Сортировать("ТабК+, ТабД+, ТабДок+");    
                  
             //Теперь заполняем последние столбцы, Дт, Кт, ОстатокНаНачало ОстатокНаКонец периода
         Для i=1 по ТаблЗнач.КоличествоСтрок() Цикл
             ТаблЗнач.ПолучитьСтрокуПоНомеру(i);
                 //проверяем Дебит И Кредит по файлам
                 //ПКО11 и РКО10
                 Если Лев(ТаблЗнач.ПолучитьЗначение(i,3),3) = "ПКО" Тогда
                     ТаблЗнач.УстановитьЗначение(i,11,ТаблЗнач.ТабСумма);    
                 КонецЕсли;
                 
                 Если Лев(ТаблЗнач.ПолучитьЗначение(i,3),3) = "РКО" Тогда
                     ТаблЗнач.УстановитьЗначение(i,10,ТаблЗнач.ТабСумма);    
                 КонецЕсли;    
    
             
                 Если i = 1 Тогда                                                    
                     ТаблЗнач.УстановитьЗначение(i,9,ВозвНачОстатка(ТаблЗнач.ТабК));    
                 КонецЕсли;
                 
                 Если i > 1 Тогда
                     Если ТаблЗнач.ТабК <> ТаблЗнач.ПолучитьЗначение(i-1,4) Тогда
                         ТаблЗнач.УстановитьЗначение(i,9,ВозвНачОстатка(ТаблЗнач.ТабК));
                         //прКО = прКО - ТаблЗнач.ПолучитьЗначение(i,10) + ТаблЗнач.ПолучитьЗначение(i,11);
                     КонецЕсли;
                 КонецЕсли;
             
         КонецЦикла;
    
                   
         Для i=1 по ТаблЗнач.КоличествоСтрок() Цикл
             ТаблЗнач.ПолучитьСтрокуПоНомеру(i);
                  
         Если i = ТаблЗнач.КоличествоСтрок() Тогда
             //Если ТаблЗнач.ТабК <> ТаблЗнач.ПолучитьЗначение(i-1,4) Тогда
                 ТаблЗнач.УстановитьЗначение(i,12,ВозвКонОстатка(ТаблЗнач.ТабК));
             //КонецЕсли;
         КонецЕсли;    
             
         Если i < ТаблЗнач.КоличествоСтрок() Тогда
             Если ТаблЗнач.ТабК <> ТаблЗнач.ПолучитьЗначение(i+1,4) Тогда
                 ТаблЗнач.УстановитьЗначение(i,12,ВозвКонОстатка(ТаблЗнач.ТабК));
                 //прКО = прКО - ТаблЗнач.ПолучитьЗначение(i,10) + ТаблЗнач.ПолучитьЗначение(i,11);
             КонецЕсли;
         КонецЕсли;    
    
         КонецЦикла;
    
    
    
         Таб = СоздатьОбъект("Таблица");      
         Таб.ИсходнаяТаблица("RU_Таблица");
                                                                 
         Состояние("Заполнение выходной таблицы...");
    
         Таб.ВывестиСекцию("ШапкаЗаголовки");
         
    
         
         Для i=1 по ТаблЗнач.КоличествоСтрок() Цикл
             ТаблЗнач.ПолучитьСтрокуПоНомеру(i);    
    
                 ТабП     = i;
                 ТабД     = ТаблЗнач.ТабД;
                 ТабДок   = ТаблЗнач.ТабДок;
                 ТабК     = ТаблЗнач.ТабК;
                 ТабЦФО   = ТаблЗнач.ТабЦФО;
                 ТабОДДС  = ТаблЗнач.ТабОДДС;
                 ТабСумма = ТаблЗнач.ТабСумма;
                 ТабПр    = ТаблЗнач.ТабПр;  
    
    
                 ОстНач   = ТаблЗнач.ОстНач;
                 пДт      = ТаблЗнач.пДт;
                 пКт      = ТаблЗнач.пКт;
                 ОстКон   = ТаблЗнач.ОстКон;
                 
             Таб.ВывестиСекцию("Строка");
         КонецЦикла;
         
         
         Таб.Показать("Журнал операций: ("+Дата1+"-"+Дата2+")");        
        
    
         
     КонецЕсли; //Конец проверки даты [001]
    
     КонецПроцедуры



Тема ЗАКРЫТА

Сообщение отредактировал Vofka - 22.09.14, 18:23

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 07.05.24, 13:50
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!