Имя: Пароль:
1C
1C 7.7
v7: Включить документы в РИБ без перепроведения
0 sbvoshod
 
22.08.16
18:18
Доброго Всем времени суток.
Есть необходимость включить некоторые уже проведенные документы в обмен, т.е. что бы они повторно пришли в центральную базу, но при этом без их перепроведения.
Просто возникла следующая проблема: не знаю что и как случилось, но в центральной базе вылетела реализация! Причем ВСЯ! Видимо где то физически удалили или повредили файл. Т.е. до определенного дня во всей реализации исчезли контрагенты и некоторые другие реквизиты в шапках документов, т.ч. при этом все на месте. И все это с 2012 года по сегодня. После этого числа документы, уже вновь поступающие из переферийных баз нормальные. Перепроводить доки в торговле думаю все знают, что черевато однозначно. да еще и за столько лет. Сами движения документов при этом остались на месте. тестирование и исправление, переиндексацию не предлагать естественно, уже пробовал.
1 Зая Бусечка
 
22.08.16
18:24
В типовых обычно есть обработка "регистрация изменений"
2 sbvoshod
 
22.08.16
18:42
Это в 1С 7.7? база не типовая, полностью написана с нуля. Я знаю, что в 1С 8 есть такая штука, в 7.7 не могу найти такого. Это как программно выглядит непосредственно в коде?
3 youalex
 
22.08.16
18:56
(2) Таблица 1SUPDTS вроде, удалял регистрацию однажды по одному доку.
4 Зая Бусечка
 
22.08.16
19:07
(2) Пардон, не заметила. Просто в 77 это называется УРБД.
Прямым запросом в Updts пропиши нужные документы.
5 sbvoshod
 
22.08.16
19:11
Так, народ, ВСЕМ большое спасибо, я нашел метод. Все оказалось банально и просто донельзя. Программная перезапись документа не вызывает его пререпроведения! :)

Если вдруг кому пригодиться, то вот банальный простейший код - делает что нужно. Все доки восстановились с обменом.

Процедура Сформировать()
    ДокРН = Создатьобъект("Документ.РасходнаяНакладная");
    начатьтранзакцию();
    дата1 = дата(2000,01,01);
    дата2 = дата(2016,06,30);
    ДокРН.ВыбратьДокументы(дата1,дата2);    
    счет = 0;
    Пока ДокРН.ПолучитьДокумент()=1 Цикл
        счет = счет + 1;
        ДокРН.Записать();  
        если счет%10=0 тогда
            Состояние(Строка(ДокРН.ДатаДок));
        конецесли;
    КонецЦикла;      
    Состояние("Запись транзакции...");
    зафиксироватьтранзакцию();  
              
    Сигнал();
    предупреждение("Обработка завершена! Обработано: "+СокрЛП(Счет)+" документов.",0);
КонецПроцедуры

Не стал морочиться сильно с работой транзакции, все запихал в одну, этого вполне хватает. Главное - есть необходимый результат. Обработка обрабатывает 10.000 документов буквально за 15 секунд. Но обмен конечно потом очень долго их грузит, но куда ж без этого.

ВСЕХ БЛАГОДАРЮ ЗА ПОДСКАЗКИ!!!
6 Это_mike
 
22.08.16
20:31
Имхается мне, что проблема всего лишь в индексах.