Вход | Регистрация

1С:Предприятие ::

Метки:

Подскажите ошибку

Я
   Platon
 
27.01.04 - 09:53
Уже неделю парюсь с одним отчётом. проблема в том, что он не может найти проводки со чётом дебета например 25.01.02 хотя я точно знаю, что они есть
и даже ставил фильтр специально для этого счёта но увы. Кто знает где я ошибся?
//*******************************************

Процедура Сформировать()
    Перем Запрос, ТекстЗапроса, Таб;
    
    ТЗ=СоздатьОбъект("ТаблицаЗначений");    
    ТЗ.НоваяКолонка("Цех");                                //1

    ТЗ.НоваяКолонка("НомУч");                              //2

    ТЗ.НоваяКолонка("Дт");                                 //3

    ТЗ.НоваяКолонка("СтРасх");                             //4

    ТЗ.НоваяКолонка("Кт");                                 //5

    ТЗ.НоваяКолонка("Сум");                                //6

    ТЗ.НоваяКолонка("СумОткл");                            //7 

    ТЗ.НоваяКолонка("Шифр");                               //8

    ТЗ.УдалитьСтроки(); 

    Опер=СоздатьОбъект("Операция");
//    Опер.ИспользоватьСубконто(ВидыСубконто.ВидыДвиженияМатериалов,"Расход материалов в производство");

    Опер.ВыбратьОперацииСПроводками(ВыбНачПериода, ВыбКонПериода,СчетПоКоду("20.01.02;20.01.03;25.01.01;25.01.02;23.07.00;23.01.03;23.03.00;23.02.00;23.01.03;23.01.04;26.02.00;29.03.02;29.02.01;29.01.01;29.01.03;29.01.06;29.02.05"));
        

    Номер=0;

    Пока Опер.ПолучитьПроводку()=1 Цикл
        Состояние("Обрабатывается документ "+Опер.Документ); 
//        Если (Опер.Документ.Вид()="ТребованиеНакладная") Тогда

//            Если (Опер.Документ.ВидДвижения.Код="51") Тогда
        
        
        
        Если (ПустоеЗначение(ВыбЦех)=1)                                                                  
        или ((ПустоеЗначение(ВыбЦех)=0) и (ВыбЦех.ЭтоГруппа()=1) и (Опер.Дебет.Субконто(2).ПринадлежитГруппе(ВыбЦех)=1))
        или ((ПустоеЗначение(ВыбЦех)=0) и (ВыбЦех.ЭтоГруппа()=0) и (Опер.Дебет.Субконто(2)=ВыбЦех))   Тогда
            ТЗ.НоваяСтрока();
            Номер=Номер+1; 
            
            Если ПустоеЗначение(Опер.Дебет.Субконто(2).Родитель.Родитель)=1 Тогда
                ТЗ.УстановитьЗначение(Номер,1,Опер.Дебет.Субконто(2).Родитель);
            Иначе
                ТЗ.УстановитьЗначение(Номер,1,Опер.Дебет.Субконто(2).Родитель.Родитель);
            КонецЕсли;
            ТЗ.УстановитьЗначение(Номер,3,Опер.Дебет.Счет);
            
            ТЗ.УстановитьЗначение(Номер,5,Опер.Кредит.Счет);
            ТЗ.УстановитьЗначение(Номер,6,Опер.Сумма);
            Если Опер.Кредит.Счет=СчетПоКоду("16.09") Тогда
                ТЗ.УстановитьЗначение(Номер,7,Опер.Сумма);
            Иначе
                ТЗ.УстановитьЗначение(Номер,7,"");
            КонецЕсли;
            Если (Опер.Документ.Вид()="ТребованиеНакладная") Тогда 
             
            
                    КонецЕсли;
                                  Если (Опер.Документ.Вид()="ТребованиеНакладная") Тогда 
            
                    ТЗ.УстановитьЗначение(Номер,8,Сред(СокрЛП(Опер.Дебет.Субконто(1).Код),2,1)); 
                        
        
            
        КонецЕсли;
        КонецЕсли;
    КонецЦикла;
    Таб=СоздатьОбъект("Таблица");
    Таб.ИсходнаяТаблица("Таблица");
    Таб.ВывестиСекцию("Дата");
    Таб.ВывестиСекцию("Заголовок");
    Таб.ВывестиСекцию("Шапка");
    Состояние("Заполнение выходной таблицы...");
    Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);
    ТЗ.Сортировать("+1,+2,+3,+4");
    Сум1=0;
    Сум2=0;
    ТЗ.ВыбратьСтроки();
    Для прм=1 по ТЗ.КоличествоСтрок() Цикл 
        Сум1=Сум1+ТЗ.ПолучитьЗначение(прм,6);
        Сум2=Сум2+ТЗ.ПолучитьЗначение(прм,7);
        Таб.ВывестиСекцию("Строка"); 
        Если ТЗ.КоличествоСтрок()=прм Тогда
            Таб.ВывестиСекцию("Строка"); 
            Таб.ВывестиСекцию("Участок");
         
        ИначеЕсли (ТЗ.ПолучитьЗначение(прм,1)<>ТЗ.ПолучитьЗначение(прм+1,1)) Тогда
            Таб.ВывестиСекцию("Строка"); 
            Таб.ВывестиСекцию("Участок");
            
            Сум1=0;
            Сум2=0;
        ИначеЕсли (ТЗ.ПолучитьЗначение(прм,2)<>ТЗ.ПолучитьЗначение(прм+1,2)) Тогда
            Таб.ВывестиСекцию("Участок"); 
            
            Сум1=0;
            Сум2=0;
        
        КонецЕсли;
    КонецЦикла;  
    Таб.ВывестиСекцию("Цех");
    Таб.ТолькоПросмотр(1);      
    Таб.ПараметрыСтраницы(1,,,7,3,7,3,0,5,1);
    Таб.Показать("Расход материальных ценностей по участкам", "");
КонецПроцедуры 
//**************************

Процедура ПриОткрытии()     
    ВыбНачПериода=НачМесяца(РабочаяДата());
    ВыбКонПериода=КонМесяца(РабочаяДата());    
КонецПроцедуры
 
  Рекламное место пустует
   Львенок
 
1 - 27.01.04 - 09:55
Ох, ё... Это для скунки работа. Я не могу читать такие длиные тексты. Если бы что-то конкретнее было сформулированно почему жизнь не удалась, кусочек где именно не работает приведен, строчек 10ть. А тут, сорри, нет времени.
___
Искренне Ваш, Львенок.
   skunk
 
2 - 27.01.04 - 10:08
у меня бухии нет с базой, что бы погонять, вечером если что посмотрю
   Platon
 
3 - 27.01.04 - 10:38
Мне кажется загвоздка здесь хотя могу ошибаться
 Опер=СоздатьОбъект("Операция"); 
//    Опер.ИспользоватьСубконто(ВидыСубконто.ВидыДвиженияМатериалов,"Расход материалов в производство"); 

   Опер.ВыбратьОперацииСПроводками(ВыбНачПериода, ВыбКонПериода,СчетПоКоду("20.01.02;20.01.03;25.01.01;25.01.02;23.07.00;23.01.03;23.03.00;23.02.00;23.01.03;23.01.04;26.02.00;29.03.02;29.02.01;29.01.01;29.01.03;29.01.06;29.02.05"));
   Bzzzzz
4 - 27.01.04 - 17:19
Интересно, а что ты задаешь в качестве параметра для СчетПоКоду(...)???
   Bzzzzz
5 - 27.01.04 - 17:23
Это в какой конфе???
   Львенок
 
6 - 27.01.04 - 17:33
ДНК?
___
Искренне Ваш, Львенок.
   Bzzzzz
7 - 27.01.04 - 17:41
СчетПоКоду принимает только ОДИН код счета,а ты туды кучу запихиваешь!!!!
Вот смотри как сделано в 1С:Бух:
Фильтр "50.1,*;50.2,*;50.11,*;51,*;52,*;55.1,*;55.4,*;55.11,*;55.44,*";

Опер = СоздатьОбъект("Операция");  
Опер.ВыбратьОперацииСПроводками(НачДата, КонДата, Фильтр,,,);

Например, "50, *" — все проводки в дебет 50 счета;
Вообще, подробнее посмотри в желтой книжке ;-)
   345
8 - 27.01.04 - 22:09
Вообще то (7) частично прав ... насчет СчетПоКоду....

А задача из (0) решается обычным бух запросом ...

К тому же ТЗ создается неверно ... для дальнейшей обработки она малопригодна.... некоторые методы работать не будут ...

Перебирать все операции - моветон .... К тому же они в примере - НЕ ПЕРЕБИРАЮТСЯ....

Ну и так далее .....

Сухой остаток - надо почитать ЖКК... И изучить хотя бы типовые отчеты в бухии ....
   Platon
 
9 - 28.01.04 - 07:44
Ну а как сделать чтобы не по одному счету перебиралось а по нескольким например такой способ работае но с одним счётом
Опер=СоздатьОбъект("Операция");
Опер.ВыбратьОперацииСПроводками(ВыбНачПериода, ВыбКонПериода,СчетПоКоду("25.01.02 "));    
Пока Опер.ПолучитьПроводку()=1 Цикл
Если Опер.Дебет.Счет=СчетПоКоду("25.01.02 ") Тогда    
Сообщить("Дебет "+Опер.Дебет.Счет);
КонецЕсли;
КонецЦикла;
   Bzzzzz
10 - 28.01.04 - 08:32
Проводки со Сч дебета 25.01.02:
Опер.ВыбратьОперацииСПроводками(ВыбНачПериода, ВыбКонПериода,СчетПоКоду("25.01.02,*"));
 
  Рекламное место пустует
   345
11 - 28.01.04 - 09:11
Странные номера счетов.... похожи на даты ....


Не, всетаки чела надо послать.... читать ЖКК....
   Bzzzzz
12 - 28.01.04 - 09:47
Я тоже сначала про дата подумал :-)
Но вроде все-таки настругали счетов с субсчетами :-))
   Platon
 
13 - 28.01.04 - 10:13
Без ЖКК я даже в туалет не хожу :) но на практике не всегда гладко получается я раньше всегда отчёты делал с помощью стандартного мастера запросов но в этом случае решил познакомится с ТЗ и написанием в ручную такчто не судите строго ибо неопытен


Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Ветка сдана в архив. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует