Выгрузка БОЛЬШИХ объемов из 7.7 конвертацией данных

Обмен - Перенос данных из 1С7.7 в 1C7.7

Стандартная выгрузка из 7.7 V77Exp не умеет выгружать файлы более 2 Гб. У меня со скрипом 1.5 еле получалось. Данная доработка без проблем формирует файлы по 3Гб и более. Теперь и для ЗиК!

При внедрении систем на 8 довольно часто ставится задача по переносу данных из 7.7. Иногда этих данных бывает сильно много.

Стандартная систуация - написали правила, выгрузить не можем - падает. Нехватка памяти.

Для универсальной выгрузке у меня практический предел файла был 1.5 - 1.8Гб. Причем к концу перед вылетом тормозило неимоверно. Причины: Ограничения объема памяти для приложения в 2 Гб. В имеющейся модели файл со всеми узлами формируется в памяти, поэтому при большом объеме еще и тормозит.

Стандартные варианты решения:

1. Разбивать выгрузку на части

2. Использовать прямое подключение к БД

Разбитие на части подходит не всегда. Если есть несколько НЕпересекающихся или слабо пересекающихся областей данных оно оптимально - можно разбить по метаданным сначало то, потом это. Если же разделить по метаданным не выходит - имеем непропорциональное увеличение времени выгрузки и загрузки. Например большой справочник номенклатуры. При выгрузке отдельно приходных и расходных документов он выгрузится по ссылкам дважды. При делении на периоды аналогично. А при выгрузке он может занимть приличный объем.

Способ 2 является частным случаем 1 сведенным до уровня одного объекта. Выгрузил документ - сразу загрузил, следующий. Способ того требует доработки универсальных обработок обмена. Сам не пробовал, но у кого-то получалось. Еще минус - одновременно заняты база источника и приемника.

Перепробовав несколько вариантов удалось решить проблему формирования больших выгрузок. Доработка встроена в КД (обработку выгрузки правил), поэтому совершенно прозрачна для пользователя. Формировались файлы свыше 3 Гб, причем память процесса не превышала 500М. Файлы получаются стандартные и грузятся обычной универсальной загрузкой.

Ограничение: размер непрерывного блока текста - 32К. (см обновление)

При использовании надо внести изменения в обработку выгрузки V77Exp, чтобы заменить ее код, на код формируемый КД. А именно стереть все и вставить 1 строку:

#ЗагрузитьИзфайла МодульВыгрузки.txt

Где МодульВыгрузки.txt - то, как вы назвали файл с формируемым кодом.

Обновление 31.10.2012:

1. При выгрузке правил в файл обмена не выгружаются тексты алгоритмов, не используемых при загрузке. Например в правилах з ЗиК-ЗУП есть довольно длинные алгоритмы более 32К, которые не могут быть записаны. Анализируем признак и не пишем в файл. На загрузку это влияния не оказывает.

2. Переход на версию 2.1.6.4

В файле архив:

1. Измененая полная CF Конвертация данных, редакция 2.1 (2.1.6.4)

2. Измененная обработка ВыгрузкаКонвертации.epf



Новый вопрос

E-mail*
Тема (вопрос)*

См. также