Bugsy says (bugsy) wrote,
Bugsy says
bugsy

Category:

Как "свернуть базу" 1С 7.7 , когда уже поздно

Столкнулся с неприятной проблемой: в одной из баз "Бухгалтерский учет 4.5", файл с бухгалтерскими итогами достиг 2 гигабайт. Естественно, ни один документ провести не получается и свернуть базу стандартной обработкой wrap.ert — тоже. При любом пересчете бухгалтерских итогов появлялось сообщение об ошибке записи в 1SBKTTL.DBF (Codebase Error #: -120. Writing to file).

Проблема усугублялась ещё и тем что в этой базе было более 300 тысяч единиц номенклатуры и несколько десятков тысяч документов за два с половиной года. В общем база данных приличного размера.

Так как у меня под рукой был настроеный сервер с MS SQL, то самым простым способом мне показалось "выгрузить данные", загрузить их в SQL, а уже там свернуть той самой стандартной wrap.ert. Более того, я уже так делал пару раз.

Но с SQL-базой не вышло. При загрузке номенклатуры, примерно на 270800-й позиции, выдавалась "ошибка загрузки данных" без объяснения подробностей. А разобраться, какой же там непечатный символ (или ещё что-нибудь) в 840-мегабайтном файле выгрузки не хочет "съесть" SQL, просто не реально.

Точно так же (по непонятным причинам), не сработал и метод с использованием kernel33.dll — файлы отказались расти больше двух гигабайт.

Пришлось решать задачу альтернативными методами.

Для начала нужно было сделать так чтобы 1С ничего не писала в файл с итогами при свёртке базы. Ведь данные об итогах добавляются при записи новых "операций вручную" с остатками. Пришлось доработать wrap.ert, заменив "операции" на непроведённые "бухгалтерские справки". Файл итогов перестал увеличиваться и все документы по вводу остатков сформировались.

Но это ещё не всё! Обработка свёртки начала удалять старые документы и тут внезапно появилась знакомая ошибка записи в 1SBKTTL.DBF. При удалении или распроведении документов в файл бухгалтерских итогов 1С всё равно что-то пишется. Оказалось для того чтобы этого не происходило, нужно "установить расчёт" (управление бухгалтерскими итогами) куда-нибудь назад, чтобы удаляемые документы были позже по дате проведения.

Помечать на удаление несколько десятков тысяч документов пришлось самописной обработкой. Ну а дальше уже всё легко: пометка на удаление всей номенклатуры, удаление помеченых объектов, снятие пометки удаления с оставшейся номенклатуры,  проведение бухгалтерских справок с проводками ввода остатков, полный пересчёт итогов и упаковка таблиц базы данных.

На весь этот "путь к успеху", в моём случае, было потрачено несколько суток, но это в основном из-за большого количества номенклатуры и из-за метода "научного тыка".
Tags: вин, одинэс, ориджинал
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 4 comments