Имя: Пароль:
1C
 
Зависаетпрограмма при обновлении Бухгалтерии 7.7
0 sk251
 
07.10.04
17:42
Второй раз сталкиваюсь с проблемой обновления Типовой Бухгалтерии 7.7. Периодически проводится выгрузка из торговли, в связи, с чем очень большое количество операций, так как накладных за день выписывается не один десяток. После объединения конфигураций и загрузки обновлённой базы в режиме предприятия производиться обновление операций, и оно длится вот уже 4 часа, в результате чего программа зависает. Обновлял 456 ,на 457 так и не удалось, подскажите.
1 Шапокляк
 
07.10.04
17:55
А не могло ее еще в бытность 456 заглючить на чем-то? Что-нибудь вроде пустой даты документа или еще чего-нибудь экстраординарного? Тестирование не пробовали?
2 sk251
 
08.10.04
10:58
Запустил тестирование, действительно были выявлены и исправлены ошибки связанные с временем операций. Спасибо. Запустил повторное обновление, снова производит обновление операций, пока прошло 15 мин. Подожду минут 40, может справиться. Процессор загружен на 100%.
3 sk251
 
08.10.04
12:32
Подождал 50 минут, результат тот же. Производил выгрузку и загрузку. Пару раз проделал тестирование и исправление со всеми режимами, не помогло. Что ещё можно попробовать, как вычислить что ей не хватает?
4 Таня
 
08.10.04
12:34
открой в Отладчике на обработке ОбновлениеИБ и посмотри, может у тебя там что-то зациклилось
5 Шмесный
 
08.10.04
12:38
Когда что-то зацикливается оно становится "нечто".
6 sk251
 
08.10.04
14:05
Выяснил с помощью отладчика, что зависание (или зацикливание) происходит при выполнении следующего цикла. Судя по модулю вроде всё нормально, в чём же может быть причина?
Состояние("Обновление операций");
       Опер = СоздатьОбъект("Операция");
       Опер1 = СоздатьОбъект("Операция");
       Опер.ВыбратьОперации(,);
       Фильтр = "Н02.02,*;*,Н02.02";
       Опер.ВыбратьОперацииСПроводками(,, Фильтр);
       Пока Опер.ПолучитьОперацию() = 1 Цикл
           ОперацияИзменена = 0;
           Опер1.НайтиОперацию(Опер.Документ);
           Опер1.ВыбратьПроводки();
           Пока Опер1.ПолучитьПроводку() = 1 Цикл
               СчетДт = Опер1.Дебет.Счет;
               СчетКт = Опер1.Кредит.Счет;                
               Если Опер1.Дебет.Счет = СчН02_02 Тогда
                   Опер1.Дебет.Счет = СчН02_02_1;
                   ОперацияИзменена = 1;
               КонецЕсли;                
               Если Опер1.Кредит.Счет = СчН02_02 Тогда
                   Опер1.Кредит.Счет = СчН02_02_1;
                   ОперацияИзменена = 1;
               КонецЕсли;
           КонецЦикла;
           Если ОперацияИзменена = 1 Тогда
               Опер1.Записать();
           КонецЕсли;
       КонецЦикла;
9 psk21office
 
08.10.04
14:12
Посмотри аналогичный код в обработке "Обновление ИБ". По Релизам 454-456
10 Мелена
 
08.10.04
14:20
Ну если зацикливается в этом цикле выведи Опер.Документ, посмотри на каком зависает. И вообще посмотри карточку счета H02.02, может что наведет на мысли.
11 Шапокляк
 
08.10.04
14:20
Сложно сказать... Проверьте на наличие этих счетов СчН02_02_1 - вдруг нету?
Я бы поставила отладочную печать в этой обработке на предмет отлова документов, где эта проверка с перезаписью срабатывает - тогда видно, где тормоза. Скорее всего какую-то операцию Опер1.Записать(); не записывает и молча курит. Или бы эту запись делала через попытку исключение, а в исключении обрабатывала бы так: писала "не могу записать..." и шла дальше. В общем, отловила бы все доки с траблами и выяснила в чем дело. На тестовой базе само собой.
12 Таня
 
08.10.04
14:21
а у тебя зацикливание во внешнем цикле или во внутреннем?
13 Шапокляк
 
08.10.04
14:22
Эх, знал бы он где... :-)
14 sk251
 
12.10.04
09:23
Поставил после
Опер1.Записать();
Сообщить(Опер1);
В результате смог отследить процесс обновления, зацикливания не произошло, просто долго обновлялись операции. На 12771 операцию потребовалось около 10 часов, в итоге всё закончилось, и последующие обновления прошли быстро. Спасибо за советы.