Имя: Пароль:
1C
1C 7.7
v7: Как получить проводки документа
,
0 oleg_prg
 
14.04.16
16:34
Добрый день, уважаемые форумчане. Подскажите пожалуйста - как получить проводки по документу с аналитикой? Вот мой код:

Процедура ПриОткрытии()
    
    Проводки.НоваяКолонка("ДокументДата");    
    Проводки.НоваяКолонка("ДокументНомер");    
    Проводки.НоваяКолонка("Дебет");
    Проводки.НоваяКолонка("СубконтоДебет1");
    Проводки.НоваяКолонка("СубконтоДебет2");
    Проводки.НоваяКолонка("СубконтоДебет3");
    Проводки.НоваяКолонка("Кредит");
    Проводки.НоваяКолонка("СубконтоКредит1");
    Проводки.НоваяКолонка("СубконтоКредит2");
    Проводки.НоваяКолонка("СубконтоКредит3");
    Проводки.НоваяКолонка("Количество");
    Проводки.НоваяКолонка("Сумма");
    
КонецПроцедуры
//*******************************************
Процедура Сформировать()
      
    Опер = СоздатьОбъект("Операция");
    Опер.ВыбратьОперацииСПроводками(, , );
    Пока Опер.ПолучитьПроводку() = 1 Цикл
                                  
        Если Найти(СокрЛП(Опер.Документ),"Закрытие месяца") = 0 Тогда
            Продолжить;
        КонецЕсли;                   
        
        Проводки.НоваяСтрока();
        Проводки.ДокументДата  = Опер.Документ.ДатаДок;
        Проводки.ДокументНомер = Опер.Документ.НомерДок;
        Проводки.Дебет = Опер.Дебет.Счет;
        Проводки.СубконтоДебет1 = Опер.Дебет.Субконто1;   //ОШИБКА! КАК ПОЛУЧИТЬ АНАЛИТИКУ?
        Проводки.СубконтоДебет2 = Опер.Дебет.Субконто2;
        Проводки.СубконтоДебет3 = Опер.Дебет.Субконто3;
        Проводки.Кредит = Опер.Кредит.Счет;
        Проводки.СубконтоКредит1 = Опер.Кредит.Субконто1;
        Проводки.СубконтоКредит2 = Опер.Кредит.Субконто2;
        Проводки.СубконтоКредит3 = Опер.Кредит.Субконто3;
        Проводки.Количество = Опер.Количество;
        Проводки.Сумма = Опер.Сумма;        
        
    КонецЦикла;
    
КонецПроцедуры

Заранее спасибо!
1 ДенисЧ
 
14.04.16
16:35
А проводки у операции кто будет выбирать?
2 Mikeware
 
14.04.16
16:37
(1) может, Пушкин?
3 ДенисЧ
 
14.04.16
16:38
(2) А Ваню-то зачем сюда звать? Он 7ку забыл уже давно...
4 oleg_prg
 
14.04.16
16:39
Так проводки выбраны Вот смотрите https://yadi.sk/i/SSO0aq5iqzBwA
5 oleg_prg
 
14.04.16
16:40
не могу поймать аналитику в зависимости от счета
6 Mikeware
 
14.04.16
16:40
(3) Ну, за  хорошие деньги гук запросто...
7 ДенисЧ
 
14.04.16
16:42
(6) За хорошие деньги и я Пушкиным стану.... А могу и Гоголем.
8 oleg_prg
 
14.04.16
16:42
вопрос снят
9 пипец
 
14.04.16
16:42
Если ОС.Выбран() = 1 Тогда
        БИ.ИспользоватьСубконто(ВидыСубконто.ОсновныеСредства,ОС);
    Иначе
        БИ.ИспользоватьСубконто(ВидыСубконто.ОсновныеСредства);
    КонецЕсли;
    Если Дата(КонДата) > КонецРассчитанногоПериодаБИ() Тогда
        Предупреждение("За данный период бухгалтерские итоги не рассчитаны!");
        Возврат;
    КонецЕсли;
    Если БИ.ВыполнитьЗапрос(НачДата,КонДата,"01.1,01.2,02.1,02.2,03.1,03.2,03.3,03.4,010") = 0 Тогда

ЗЫ открой отчет по ОСредствам - вот кусок
10 oleg_prg
 
14.04.16
16:43
(9) да спасибо огромное - уже разобрался. просто с семеркой лет 5 не работал, подзабыл
11 oleg_prg
 
14.04.16
16:43
Оп = СоздатьОбъект("Операция");
   БухИт = СоздатьОбъект("БухгалтерскиеИтоги");
    БухИт.ВключатьСубсчета(-1);
    БухИт.ВыполнитьЗапрос( НачальныйПериод , КонечныйПериод ,"10",,,,"Операция",);
    БухИт.ВыбратьПериоды();
    Пока БухИт.ПолучитьПериод() = 1 Цикл
        Оп .НайтиОперацию (БухИт.Операция.Документ);
        Оп .ВыбратьПроводки();
        Пока Оп .ПолучитьПроводку() =1 Цикл
            Если ( Оп .Дебет.Счет. ПринадлежитьГруппе (СчетПОКОду ("10")) =1)  Или (Оп .Кредит.Счет. ПринадлежитьГруппе (СчетПОКОду ("10")) =1 ) Тогда
                Оп .Дебет.Субконто(2, ЗначениеСубконто);
            КонецЕсли;
        КонецЦикла;  
        Оп .Записать();
    КонецЦикла;
12 HawkEye
 
14.04.16
16:44
(0)  Опер.Дебет.Субконто(НОМЕРСУБКОНТО)
13 oleg_prg
 
14.04.16
16:53
Вот рабочий код, вдруг кому понадобится

//*******************************************
Процедура ПриОткрытии()
    
    Проводки.НоваяКолонка("ДокументДата");    
    Проводки.НоваяКолонка("ДокументНомер");    
    Проводки.НоваяКолонка("Дебет");
    Проводки.НоваяКолонка("СубконтоДебет1");
    Проводки.НоваяКолонка("СубконтоДебет2");
    Проводки.НоваяКолонка("СубконтоДебет3");
    Проводки.НоваяКолонка("Кредит");
    Проводки.НоваяКолонка("СубконтоКредит1");
    Проводки.НоваяКолонка("СубконтоКредит2");
    Проводки.НоваяКолонка("СубконтоКредит3");
    Проводки.НоваяКолонка("Количество");
    Проводки.НоваяКолонка("Сумма");
    
КонецПроцедуры
//*******************************************
Процедура Сформировать()
      
    Опер = СоздатьОбъект("Операция");
    БухИт = СоздатьОбъект("БухгалтерскиеИтоги");
    БухИт.ВключатьСубсчета(-1);
    БухИт.ВыполнитьЗапрос(Дата("01.01.2000"),ТекущаяДата(),,,,,"Операция",);
    БухИт.ВыбратьПериоды();
    Пока БухИт.ПолучитьПериод() = 1 Цикл
    
        Опер.НайтиОперацию (БухИт.Операция.Документ);
        Опер.ВыбратьПроводки();
    
        Пока Опер.ПолучитьПроводку() =1 Цикл
        
            Если Найти(СокрЛП(Опер.Документ),"Закрытие месяца") = 0 Тогда
                Продолжить;
            КонецЕсли;            
            
            Проводки.НоваяСтрока();
            Проводки.ДокументДата  = Опер.Документ.ДатаДок;
            Проводки.ДокументНомер = Опер.Документ.НомерДок;
            Проводки.Дебет = Опер.Дебет.Счет;
            Проводки.СубконтоДебет1 = Опер.Дебет.Субконто(1);
            Проводки.СубконтоДебет2 = Опер.Дебет.Субконто(2);
            Проводки.СубконтоДебет3 = Опер.Дебет.Субконто(3);
            Проводки.Кредит = Опер.Кредит.Счет;
            Проводки.СубконтоКредит1 = Опер.Кредит.Субконто(1);
            Проводки.СубконтоКредит2 = Опер.Кредит.Субконто(2);
            Проводки.СубконтоКредит3 = Опер.Кредит.Субконто(3);
            Проводки.Количество = Опер.Количество;
            Проводки.Сумма = Опер.Сумма;             
            
        КонецЦикла;                           
    
    КонецЦикла;
    
КонецПроцедуры
//*******************************************
14 Alexor
 
14.04.16
16:57
(13) Писец код.

Просто перебрать все закрытия месяца и по ним проводки выбрать не судьба?
15 HawkEye
 
14.04.16
16:58
(13) такой... нет
Опер.НайтиОперацию (БухИт.Операция.Документ); - зачем искать то что уже есть?
16 HawkEye
 
14.04.16
16:59
(14) это же быстро... а так можно сказать: "смотрите какую я работу автоматизировал... компьютер только полдня считает..."
17 oleg_prg
 
14.04.16
17:08
да ладно вам - придумаете сейчас, обработка одноразовая, пишу на 1С8... На 1С77 раз в пять лет понадобилось проводки выгрузить. Делаю для знакомого - бесплатно, так что никому не буду говрить смотрите какую работу проделал. Реально как бабы - развели полемику.
18 oleg_prg
 
14.04.16
17:09
сделано на оте@ись