Вернуться   Бухгалтерский форум www.nado.in > 1C: Предприятие + все конфигурации > 1C: Предприятие + конфигурации для Украины

Ответ
 
Опции темы
Старый 12.02.2013, 12:29   #1
YoungBoy
Новичок
 
Регистрация: 24.01.2012
Сообщений: 1
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
YoungBoy пока не определено
По умолчанию Расчет БИ по каждому контрагенту в разрезе 36 и 63 счетов

Друзья, срочно нужна ваша помощь! Нужно рассчитать дебет/кредит на начало и конец периода для каждого контрагента с справочника контрагентов в разрезе 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";

и т.д.
Оно работает и все правильно считает, но работает МЕДЛЕННО А учитывая, что в справочнике 15000 контрагентов и расчет нужен поквартально за несколько лет, то результаты ждать по сутках... (( Подскажите, пожалуйста, можно ли как-то упростить код и ускорить расчет????? Спасибо!
YoungBoy вне форума   Ответить с цитированием
Старый 14.02.2013, 10:23   #2
ernik
Новичок
 
Регистрация: 23.12.2011
Сообщений: 5
Сказал(а) спасибо: 8
Поблагодарили 144 раз(а) в 4 сообщениях
ernik пока не определено
По умолчанию

ну вот как то так:

спСчетов = "36;63";
ВыбРазделительУчета = Константа.БазФирма;
би1 = СоздатьОбъект("БухгалтерскиеИтоги");
би1.ИспользоватьРазделительУчета(ВыбРазделительУче та);
би1.ИспользоватьСубконто(ВидыСубконто.Контрагенты, ,,1);
би1.ВключатьСубсчета(-1);
би1.ВыполнитьЗапрос(Дата1,Дата2,спСчетов,,,,,);

би1.ВыбратьСубконто();
Пока би1.ПолучитьСубконто()=1 Цикл
ТекКлиент = би1.Субконто(1);
Если ТекКлиент.ЭтоГРуппа()=1 Тогда
Продолжить;
КонецЕсли;
ЗадолженностьН = ТекКлиент.Наименование;
би1.ВыбратьСчета();
Пока би1.ПолучитьСчет()=1 Цикл
ДебЕтовоеСальдо=би1.СНД();
КредитовоеСальдо=би1.СНК();
ДебЕтовоеСальдоКонец=би1.СКД();
КредитовоеСальдоКонец=би1.СКК();
сообщить(ЗадолженностьН+" "+би1.Счет+" СнД = "+ДебЕтовоеСальдо+" СнК = "+КредитовоеСальдо);
КонецЦикла;
КонецЦикла;
ernik вне форума   Ответить с цитированием
Ответ

Любые журналы Актион-МЦФЭР регулярно !!! Пишите https://www.nado.in/private.php?do=newpm&u=12191 или на электронный адрес pantera@nado.ws


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Акт взаиморасчетов (отчет) TamerLan.TK 1C: Предприятие + конфигурации для Украины 1 10.02.2012 23:36


Текущее время: 21:08. Часовой пояс GMT +1.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, vBulletin Solutions, Inc. Перевод: zCarot