12.
Ёпрст
1065
14.08.09 12:21
Сейчас в теме
Вот это:
.Процедура расчет(фирмаН,фирмаК)
// МД , ИТ_ - локальная переменная, иначе процессы не закрываются.
//Кто-то спрашивал, что делать с процессами ...
мд="";
мд=CreateObject("v77.application");
if мд.initialize(МД.rmtrade,"/d"+фирмаК+" /N"+Логин+" /P"+Пароль,"NO_Splash_Show")=0 then
сообщить("Ошибка открытия базы "+фирмаН);
мд="ЗакрытМД";
возврат;
endif;
Если ДатаПпо > мд.КонецРассчитанногоПериодаБИ() Тогда
сообщить("Работа с "+фирмаН+" Бух итоги на "+ДатаПпо+" не рассчитаны !");
мд.ExecuteBatch("ЗавершитьРаботуСистемы(0)");
мд="ЗакрытМД";
Возврат ; //не будем ничего заполнять, если итоги не рассчитаны
КонецЕсли;
Период="";
Если фШаг=1 тогда // месяц
Период="Месяц";
ИначеЕсли фШаг=2 тогда // неделя
Период="Неделя";
ИначеЕсли фШаг=3 тогда // день
Период="День";
КонецЕсли;
Фи=сокрлп(мд.константа.базфирма.наименование);
Сч_="40,45,46,421,422,43,38,12,133,154,442,423,424,425,441,141,79";
//-------------------------------------------
Если фПер=1 Тогда
ит_=мд.CreateObject("БухгалтерскиеИтоги");
Ит_.ВыполнитьЗапрос(ДатаПс, ДатаПпо, Сч_, , , 1, Период);
ит_.выбратьсчета();
Пока ит_.получитьсчет()=1 Цикл
счет__=строка(ит_.счет.код);
сумСч=ит_.скд()-ит_.скк();
Если сумСч=0 Тогда
продолжить;
КонецЕсли;
Ит_.выбратьпериоды(1,,2);
Пока ит_.получитьпериод(2)=1 Цикл
Период__=Ит_.кондата;
сум=ит_.скд()-ит_.скк();
Если счет__="79" Тогда
Если Период__<>конмесяца(Период__) Тогда
продолжить;
КонецЕсли;
КонецЕсли;
т.новаястрока();
т.фирмаИмя=Фи;
т.окпо=сокрлп(мд.константа.БазФирма.ЕДРПОУ);
т.ДатаТек=Период__;
Если счет__="79" Тогда // их прикол
Если сум<0 Тогда
т.Счет="441";
иначе
т.Счет="442";
КонецЕсли;
иначе
т.Счет=счет__;
КонецЕсли;
т.сумма =мод_(сум);
КонецЦикла;
КонецЦикла;
КонецЕсли;
ит__=мд.CreateObject("БухгалтерскиеИтоги");
Ит__.ВыполнитьЗапрос(ДатаПс, ДатаПпо, Сч_, , , 1,);
ит__.выбратьсчета();
Пока ит__.получитьсчет()=1 Цикл
сум=ит__.скд()-ит__.скк();
Если сум=0 Тогда
продолжить;
КонецЕсли;
счет__=строка(ит__.счет.код);
тфирма.новаястрока();
тфирма.фирмаИмя=Фи;
тфирма.кат_=фирмаК;
Если счет__="79" Тогда // их прикол
Если сум<0 Тогда
тфирма.Счет="441";
иначе
тфирма.Счет="442";
КонецЕсли;
иначе
тфирма.Счет=счет__;
КонецЕсли;
тфирма.сумма =мод_(сум);
КонецЦикла;
сообщить(фирмаН+"");
мд.ExecuteBatch("ЗавершитьРаботуСистемы(0)");
мд="ЗакрытМД";
КонецПроцедуры //--------------------------------------------
По определению не может выполнятся меньше секунды...
Даже на "неприлично крутом" сервере...
Одна только инициализация Бухии больше времени занимает..