При внедрении систем на 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
Гарантия возврата денег
ООО «Инфостарт» гарантирует Вам 100% возврат оплаты, если программа не соответствует заявленному функционалу из описания. Деньги можно вернуть в полном объеме, если вы заявите об этом в течение 14-ти дней со дня поступления денег на наш счет.
Программа настолько проверена в работе, что мы с полной уверенностью можем дать такую гарантию. Мы хотим, чтобы все наши покупатели оставались довольны покупкой.
Для возврата оплаты просто свяжитесь с нами.