Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Расчет БИ по каждому контрагенту в разрезе 36 и 63 счетов
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 7.7
TNR
Друзья, срочно нужна ваша помощь! Нужно рассчитать дебет/кредит на начало и конец периода для каждого контрагента с справочника контрагентов в разрезе 361, 362, 631 и 632 счетов. Я написал отчет со следующим алгоритмом:
1. Перебираю циклом справочник контрагентов.
2. Для каждого контрагента в цикле перебираю нужные 4 счета
3. Для каждого счета делаю запрос к БИ.

//....
Для прклСчет=1 По 4 Цикл
        
Если прклСчет=1 Тогда Счет="361";
        
    би1 = СоздатьОбъект("БухгалтерскиеИтоги");
    би1.ИспользоватьСубконто(ВидыСубконто.Контрагенты,ТекКонтрагент,,1);
    би1.использоватьсубконто(видысубконто.заказы,,,1);
    би1.ВыполнитьЗапрос(Дата1,Дата2,Счет,,,,,);
        би1.ВыбратьСубконто();
    
    Пока би1.ПолучитьСубконто()=1 Цикл  
        ЗадолженностьН = Строка(би1.Субконто(2));
        ДебитовоеСальдо=би1.СНД(Счет);
        КредитовоеСальдо=би1.СНК(Счет);
        ДебитовоеСальдоКонец=би1.СКД(Счет);
        КредитовоеСальдоКонец=би1.СКК(Счет);
    КонецЦикла;
        
ИначеЕсли прклСчет=2 Тогда Счет="362";
    би2 = СоздатьОбъект("БухгалтерскиеИтоги");
//....
//и т.д.


Оно работает и все правильно считает, но работает МЕДЛЕННО А учитывая, что в справочнике 15000 контрагентов и расчет нужен поквартально за несколько лет, то результаты ждать по сутках... (( Подскажите, пожалуйста, можно ли как-то упростить код и ускорить расчет????? Спасибо!
alex040269
би1 = СоздатьОбъект("БухгалтерскиеИтоги");
    би1.ИспользоватьСубконто(ВидыСубконто.Контрагенты,ТекКонтрагент,,1);
    би1.использоватьсубконто(видысубконто.заказы,,,1);
    би1.ВыполнитьЗапрос(Дата1,Дата2,"361, 362, 631, 632 ",,,,,);
        би1.ВыбратьСубконто();
       Пока би1.ПолучитьСубконто()=1 Цикл  
            би1.ВыбратьСчета();
  
            Пока би1.ПолучитьСчет() = 1 Цикл
                   //что-то сделать....


        ЗадолженностьН = Строка(би1.Субконто(2));
        ДебитовоеСальдо=би1.СНД(Счет);
        КредитовоеСальдо=би1.СНК(Счет);
        ДебитовоеСальдоКонец=би1.СКД(Счет);
        КредитовоеСальдоКонец=би1.СКК(Счет);
    КонецЦикла;
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.