Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Runtime error при формировании проводок
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 7.7
marveL
Добрый день, столкнулся с проблемой при формировании проводок 1с вылетает с ошибкой Runtime error!
Конфигурация сервера такая: Xeon 5130 2GHz, 2Gb RAM, HDD RAID 1 SAS
База в SQL, MSSQL Server 2000 SP4, размер базы 13,6 Gb
Формирование проводок делается ежедневно, раньше такого не было, разве что если попробовать сформировать проводки за неделю

Покопался в сети, часто спасает удаление журнала - удалил - не помогло
Перенес каталог ИБ в другое место - не помогло
Запускал формирование на другой машине - не помогло (Xeon 5503 2GHz, 24GB RAM, HDD RAID1 SATA 1Tb, MSSQL 2005)
Запускал формирование на сетевой машине - не помогло
Сделал бекап sql базы, очистил каталог информационной базы (оставил MD и DDS)

Остается только выгрузка базы и обратная загрузка... но на таком объеме это займет пару суток и не факт что поможет. Это не выход из ситуации

Как быть? Подозреваю что проблема в нехватке памяти, но в тоже время встает вопрос почему же тогда не формируется на машине с 24 гигами оперативки и 2005 скуле?

Скриншот сделан с сетевой машины, где установлен медок и прочие мелочи жизни. на сервере ничего подобного нет.


 ! 

10 постов уже, пора бы ознакомиться с правилами. Неправильно вставленная картинка удалена.
 


+ к попыткам: отключил DEP - эффекта ноль
marveL
Перезалил скрин по-правилам
marveL
Сделал не проведенными документы которые идут в начале дня - проводки сформировались, но по этим документам они тоже нужны :-(
Vofka
А если их теперь снова провести?
marveL
Разбил документы на которых начались проблемы на 2 части... смотрю что получится :-(

Цитата(Vofka @ 13.05.13, 16:47) необходимо зарегистрироваться для просмотра ссылки
А если их теперь снова провести?

Если их провести - они проведутся, но при формировании проводок опять вылетит ошибка
Vofka
Возможно проблема в 1 каком-то документе. Можно попробовать его найти (перебором, распроводя поочередно и проверяя работоспособность системы) и просто ввести такой же документ заново, а проблемный удалить.

Да, кстати, всё хочу спросить: а что вы подразумеваете под термином "формирование проводок"?
DartRomanius
Цитата(Vofka @ 13.05.13, 16:57) необходимо зарегистрироваться для просмотра ссылки
Возможно проблема в 1 каком-то документе. Можно попробовать его найти (перебором, распроводя поочередно и проверяя работоспособность системы) и просто ввести такой же документ заново, а проблемный удалить.

Да, кстати, всё хочу спросить: а что вы подразумеваете под термином "формирование проводок"?


Торг->Бух в комплексной?? наверное....
alex040269
Цитата(marveL @ 11.05.13, 12:38) необходимо зарегистрироваться для просмотра ссылки
Как быть? Подозреваю что проблема в нехватке памяти, но в тоже время встает вопрос почему же тогда не формируется на машине с 24 гигами оперативки и 2005 скуле?

нехватка памяти где? на лошадке - тогда сервер вообще не причем 1с - 32бит и у нее потолок 2GB. Если запускать под 64-бит ОС, то ей выделят 4GB, но не факт, что 1С сможет этим воспользоваться!

Если на сервере, то 2005 не Express?, тогда у него свои ограничения на железо и плевать ей сколько там мозгов!

Если ..... тогда не знаю...

PS может еще в журнале регистрации что-то полезное есть? на каком объекте выпадает?
marveL
Цитата(Vofka @ 13.05.13, 16:57) необходимо зарегистрироваться для просмотра ссылки
Возможно проблема в 1 каком-то документе. Можно попробовать его найти (перебором, распроводя поочередно и проверяя работоспособность системы) и просто ввести такой же документ заново, а проблемный удалить.

Да, кстати, всё хочу спросить: а что вы подразумеваете под термином "формирование проводок"?

Да, Торг->бух в комплексной

Попытка разбить документ не увенчалась успехом, на последней части постоянно вылетала ошибка. Да, возможно проблема с товаром в части, буду вычислять дальше. Но посже. Сейчас пытаюсь провести хоть както, пусть без пары документов (если только пары), чтоб вычислить проблемный кусок, потом буду кромсать документ пока не найду на чем стопорится.

На моей памяти была такая ошибка когда я пытался проводить торг->бух не за 1 день, а за неделю, потом пару дней. Отсюда и подозрения на железо, но тогда не было возможности проверить на более мощной системе.

Цитата(alex040269 @ 13.05.13, 17:39) необходимо зарегистрироваться для просмотра ссылки
PS может еще в журнале регистрации что-то полезное есть? на каком объекте выпадает?

В журнале регистрации все печально.
При начале проведения запись
Документ записан - Документ.ФормированиеПроводокТорговля ((000)274256)
При окончании проведения (если процесс завершился удачно)
Документ проведен - Документ.ФормированиеПроводокТорговля ((000)274256)

Кстати один умный человек подсказал мысль, что можно сделать чтоб при проведении выводились сообщения, ну и как раз увидеть на каком объекте происходит вылет (через Сообщить()). Только вот в 1с я не силен, а человек тот занят сейчас. Может подскажите что и куда можно вписать? Фрагмент кода приведу ниже:

Процедура ОбработкаДокументов()
    //Проверка пометки на удаление пропустил

    ДатаНач=глНачалоПериодаФормированияПроводок(Контекст);
    Начало=ДатаНач;
    Если (МонопольныйРежим()=0) и (ПолучитьДатуТА()<Начало) Тогда
        Начало=ПолучитьПозициюТА();
    КонецЕсли;
    
    Попытка

        Если Модифицированность()=1 Тогда
            Если Вопрос("Записать документ?", "ОК+Отмена")<>"ОК" Тогда
                Возврат;
            КонецЕсли;
            ПриЗаписиПерепроводить(0);
            Записан=Записать();
            ПриЗаписиПерепроводить(1);
            Если Записан=0 Тогда
                Предупреждение("Формирование проводок не выполнено!");
                Возврат;
            КонецЕсли;
        КонецЕсли;
        
        ПозицияГраницыОсновнойПоследовательности = Последовательность.ОсновнаяПоследовательность.ПолучитьПозицию();

        НачатьТранзакцию();

        Объект=СоздатьОбъект("Документ");
        Объект.УстановитьФильтр(1, 0, 0, 2, 1, 2);
        Объект.ВыбратьПоЗначению(Начало, ДатаДок,"Фирма",Фирма);
        Пока Объект.ПолучитьДокумент()=1 Цикл
            
            Если (Метаданные.Документ(Объект.Вид()).ОперативныйУчет = 0) или
                 (Метаданные.Документ(Объект.Вид()).БухгалтерскийУчет = 0) Тогда
                Продолжить;
            КонецЕсли;
        
            Если Лев(Объект.Вид(),2) <>"Т_" Тогда
                // налоговые не перепроводим
                Продолжить;
            ИначеЕсли (Объект.СравнитьТА()=1) Тогда
                // перепроводятся все документы за ТА
                
            ИначеЕсли (Метаданные.Документ(Объект.Вид()).БухгалтерскийУчет<>1) Тогда
                Продолжить;
            ИначеЕсли (Объект.ДатаДок<ДатаНач) ИЛИ (Объект.Фирма<>Фирма) ИЛИ (Объект.ТипУчета=Упр) Тогда
                Продолжить;
            ИначеЕсли (Детализация=Перечисление.ФормированиеПроводок.Детальные) Тогда
                // перепроводятся все документы
            ИначеЕсли (Объект.СуществуетОперация()=глНужныДетальныеПроводки(Объект, Контекст)) Тогда
                Продолжить;
            КонецЕсли;
            
            Если Объект.Провести()=0 Тогда
                ОтменитьТранзакцию();
                Предупреждение("Формирование проводок не выполнено!");
                Возврат;
            КонецЕсли;
            
            Если Объект.ПолучитьПозицию() < ПозицияГраницыОсновнойПоследовательности Тогда
                Последовательность.ОсновнаяПоследовательность.Установить(ПозицияГраницыОсновнойПоследовательности);
            КонецЕсли;

        КонецЦикла;

        ЗафиксироватьТранзакцию();
        
        Если Провести()=0 Тогда
            Предупреждение("Формирование проводок не завершено!");
        Иначе    
            Предупреждение("Формирование проводок завершено.");
        КонецЕсли;

    Исключение
        ПриЗаписиПерепроводить(1); // если не удачная попытка Записать();
        глКомментарий(ОписаниеОшибки());
        Предупреждение("Формирование проводок не выполнено!");
    КонецПопытки;
    
КонецПроцедуры // ОбработкаДокументов()
marveL
Вручную набрал накладную на которой происходит вылет и нихрена. Попробовать другим видом документа сделать и опять же ничего (был ОтчетКА сделал розничной накладной)

Что может быть, есть идеи?
Vofka
В голову сейчас приходят только стандартные процедуры:
- сделать Тестирование и исправление базы;
- сделать выгрузку/загрузку базы;
- переустановить платформу. Какой релиз, кстати? Надо 27 чтоб был;
- что, если попробовать на другом компе развернуть базу и все это сделать?
Ardi
Цитата(marveL @ 14.05.13, 16:00) необходимо зарегистрироваться для просмотра ссылки
Что может быть, есть идеи?

В бухгалтерской проводке не указан счет по дебету или кредиту.
marveL
Цитата(Ardi @ 14.05.13, 16:08) необходимо зарегистрироваться для просмотра ссылки
В бухгалтерской проводке не указан счет по дебету или кредиту.

По идее проводки я только формирую, но на всякий случай проверю


Цитата(Vofka @ 14.05.13, 16:07) необходимо зарегистрироваться для просмотра ссылки
В голову сейчас приходят только стандартные процедуры:
- сделать Тестирование и исправление базы;
- сделать выгрузку/загрузку базы;
- переустановить платформу. Какой релиз, кстати? Надо 27 чтоб был;
- что, если попробовать на другом компе развернуть базу и все это сделать?

- Тестирование и исправление делал
- Стоит 27 релиз
- Это 3-й комп на котором пытаюсь провести. База распределенная, одна из периферий является полной копией центральной, там изначально проводим торг-бух, когда выяснилось что там не взлетает, начал пробовать на сервере в центральной базе, когда стало ясно что и там не работает, сделал копию на 3-й комп и на нем экспериментирую
marveL
Не помогла и выгрузка-загрузка
Сделал проверку диска и тоже нифига
marveL
Решено.
Проблема была в транзакции, сделаем ее отключаемой и дальше радоваться жизни.

Всем спасибо за помощь.
Vofka
Т.е. где-то было указано НачатьТранзакцию(), вы это убрали и заработало?
marveL
да
Vofka
Понятно. Ну, поздравляю smile.gif .
marveL
Рано радовался... копаю дальше.
marveL
Проблема отключением транзакции не решилась. Вероятно нехватка памяти или неумение v77 правильно работать с памятью.
Решением проблемы возможно будет проведение частями, но как делать это с торг-бухом не понятно. Если кому интересно ветка обсуждения дублировалась здесь: необходимо зарегистрироваться для просмотра ссылки
Случай пока единичный, будем искать решение проблемы дальше.

Возможно на x64 работало бы... но не факт. Сменой платформы мы оптимизируем работу sql, а 1с как была так и останется работать в 32-х битном режиме.
Ardi
Так а проводки сводные или детальные?
marveL
Сводные
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.