IE2017

Плагин для лечения выгрузки и загрузки больших баз в 1С 7.7

Программирование - Практика программирования

Плагин позволяет не упаковывать в архив ZIP файл 1Cv77.dat при выгрузке данных 1С:Предприятие. Цель - лечение проблемы с большими (несколько Гб) выгрузками, которые не может правильно обработать штатная библиотека для работы с ZIP-файлами от 1С. Кроме того, плагин сокращает время выгрузки и загрузки (исключается архивирование и разархивирование большого по размеру файла). Приложен исходный код (компилятор - Delphi 6).

Описание проблемы

TasStas пишет: При проведении выгрузки было замечено, что 1сv7, 25 релиз, создает временный файл в каталоге базы данных, который называется 1Cv77.dat. Размер этого файла растет в процессе выгрузки и достигает перед ее окончанием 9.2 гига. После этого получаем в указанном каталоге зипованный файл размером 164 метра. В котором содержатся файлы 1Cv7.md, Users.usr, 1Cv77.dat. Но размер файла 1Cv77.dat в этом случае составляет 1,4 гига. При попытке произвести загрузку получаем сообщение типа "Ошибка базы данных". Думаю, что это проблема встроенного в 1С zip'a - не хочет работать с файлами размером больше 2 гига. Но как изменить встроенный зиповщик не знаю. Может кто встречался с такими проблемами то помогите пожалуйста. Заранее благодарен.



Действия при выгрузке

При окончании выгрузки данных плагин выдаст сообщение (в трее) о том что в архив ZIP попадет пустой файл DAT, а сам файл 1Cv7.dat окажется в каталоге ИБ под именем romix.dat.


Действия при загрузке

При загрузке данных (в ее начале) плагин выдаст окно запроса файла "Укажите файл, откуда взять выгрузку 1Cv77.dat".

Выберите файл (по умолчанию это romix.dat в каталоге информационной базы) и нажмите кнопку "Открыть" в диалоговом окне. Начнется загрузка данных.

При отказе от выбора файла, загрузка данных из файла с расширением ZIP пойдет штатным порядком (то есть, возьмет DAT из архива ZIP).

Программа выдает сообщения о проценте загрузки в трее.

После окончания операций с выгрузками и загрузками я рекомендую отключать плагин в файле ini (в папке plugins, см. описание установки), и тогда он не будет загружаться в 1С.

Тестовая база
Проверьте на тестовой базе, успешно ли проходит выгрузка и загрузка Вашей базы.
В комплект разработки также входит выгрузка большой базы BigBase.rar (она содержит программно сгенерированные данные), которой я пользовался для тестирования разработки. Я пользовался 25 релизом 1С:Предприятие 7.7, для более новых релизов - 26 и 27 - отличий кажется нет.

Порядок установки

Описание установки плагина - в файле readme.txt в папке Patch в комплекте установки.

Возможные проблемы

Во избежание проблем при загрузке сделайте следующие вещи:

1) Создайте пустую (чистую) базу SQL (иначе по окончании загрузки может написать что-то про уникальность ключей и отвалиться).

2) Создайте константу и сохраните конфигурацию (иначе при начале загрузки пишет ошибку). Это проблемы не мои, а исходной 1С.







История изменений

24.02.2007 добавлен перехват SetFilePointer, поскольку этот системный вызов портил картину при загрузке (не получалось загружать данные больше 2 Гб).

21.03.2007 изменены сообщения при выгрузке и загрузке (надеюсь, что в более понятную сторону). При загрузке добавлен диалог выбора файла DAT (чтобы лишний раз не копировать и не перемещать его, если выгрузка и загрузка происходит в пределах одного компьютера).

01.07.2007 Переписаны функции ?GetSinceCheckpoint@CDB7Stream@@QBEJXZ, ?Checkpoint@CDB7Stream@@QAEXXZ' и ?NextChar@CDB7Stream@@UAEXXZ, т.к. они содержали 4-гигабайтное ограничение.

Добавлена индикация процента загрузки, и sleep 1мс каждые 64К считанных данных.

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

28.10.2011: avgreen прислал версию для Windows 7 //infostart.ru/public/96481/

Скачать файлы

Наименование Файл Версия Размер
-
.1197539775 303,40Kb
05.04.12
1403
.1197539775 303,40Kb 1403 Скачать бесплатно

См. также

Комментарии
1. chicago (chicago) 13.12.07 13:22 Сейчас в теме
2. VasilyKushnir (vasilykushnir) 13.12.07 13:41 Сейчас в теме
Вещь знакомая по мисте. Но поскольку там не принято оценивать - ставлю плюсик с чувством исполненного долга. Вещь оббалденная!
3. cs25 (cs25) 80 13.12.07 14:32 Сейчас в теме
4. dolly_ev (Dolly_EV) 13.12.07 17:43 Сейчас в теме
Плюсую сразу, без проверки. Где ж ты был раньше!! точнее, чегож я раньше не был на infostarte...
5. Александра Пьянкова (Alexandra) 14.12.07 05:01 Сейчас в теме
помню эту штуку еще по Мисте. Успешно пользую.
Большое спасибо!
6. Михаил Семенов (Shaman100M) 1179 14.12.07 11:48 Сейчас в теме
Спасибо, romix.
Успехов в этом и в Новом!
7. Аркадий Кучер (Abadonna) 3683 17.12.07 19:35 Сейчас в теме
Ваще молодец! Некоторые пытаются паролить дешевые отчетики из 15 строчек, а тут солидные исходники. +1
8. Юрий Немченко (nemchenko) 5 07.01.08 11:49 Сейчас в теме
Столкнулся с описанной проблемой, попробовал плагин. Проблему решает :-) Однако все же есть замечание - выгрузка требует наличие человека чтобы нажать кнопочку "Да". А если выгрузка выполняется ночью в пакетном режиме? Хотелось бы иметь возможность настройки выполнения плагина в диалоговом или автоматическом режиме. А в остальном супер! плюсую.
9. MTM (BOZKURT) 22.02.08 22:50 Сейчас в теме
10. romix (romix) 597 26.02.08 21:15 Сейчас в теме
(nemchenko) На праздниках я обновил разработку - теперь она не останавливается при выгрузке, а выдает все сообщения не окном с кнопкой ОК, а в трее. Я несколько раз потестил, но прошу отозваться у кого все хорошо заработает.

Также обновил индикацию при загрузке - она тоже в трее (так кажется лучше - иначе пропадало отображение на белом экране).
11. Дмитрий (sdemon72) 2 06.03.08 11:42 Сейчас в теме
А можно, что бы то же самое работало для выгрузки УРБД?
12. Дмитрий (sdemon72) 2 07.03.08 10:43 Сейчас в теме
Плюсую. Помогло при создании новой периферийной БД. Выгрузку сделать удалось без помощи посторонних средств (перехватил файл 1Cv77.dat) , а вот загрузку я бы без плагина не сделал.
13. JLab13 (jlab13) 27.03.08 11:26 Сейчас в теме
При загрузке данных в DBF версию зависает на 2 009Мб. Выгрузка проходит нормально!
14. romix (romix) 597 28.03.08 00:23 Сейчас в теме
(jlab13) Так и должно быть - потому что DBF-версия 1С содержит ограничение в 2 гига в расчете на каждый файл DBF.
То есть каждый файл DBF не может быть больше двух гигов.
Есть и еще одно ограничение - один гиг при многопользовательской работе (адреса свыше 1 гига 1С использует для блокировок).
Снятием такого рода ограничений занимался Hogik (на данном сервере есть его разработки и патчи для улучшения DBF-версии).
В SQL версии размер базы не ограничен.
15. JLab13 (jlab13) 08.04.08 12:17 Сейчас в теме
(romix) Проверил на SQL базе созданной с нуля! Застряло на 2 038 из 2 113 (96,42%)!
16. JLab13 (jlab13) 08.04.08 14:27 Сейчас в теме
(romix) Сори все отработало только очень долго после (96,42%) около двух часов!
17. malex80 (malex) 16.06.08 07:18 Сейчас в теме
Есть ли какое - то решение для УРБД?
18. Роман (Rom99) 17.06.08 11:06 Сейчас в теме
Пользуюсь уже полгода,СПАСИБО!! А можно ли сделать чтоб в имени файла romix.dat была дата? чтобы не переименовывать его вручную
19. Евгений (Joh) 04.10.08 17:45 Сейчас в теме
Выгрузил базу из SQL файл дат получился больше 2 Гб
не могу базу загрузить в дбф. помогите, плиз!
20. mariman88 (mariman88) 10.12.08 15:06 Сейчас в теме
К сожалению не могу скачать, приведенные ссылки все битые, а опробовать очень хочеться, может кто-нибудь поделиться? Заранее благодарен...
21. Михайло Боршовський (momiko) 04.03.09 17:01 Сейчас в теме
Просто дуже класна утилітка.Дякую!!!!
22. Данияр Есбатыров (dan777) 12.03.09 16:25 Сейчас в теме
"Также обновил индикацию при загрузке - она тоже в трее (так кажется лучше - иначе пропадало отображение на белом экране)."

А не можете индикацию при выгрузке в трее отображать, а то 1С при переключении на другое приложение перестает в статусной строке что либо отображать.
23. n0isy (n0isy) 09.04.09 11:01 Сейчас в теме
24. Вячеслав (slawa) 24 06.07.09 02:46 Сейчас в теме
При установленном плагине, при завершении конфигуратора, происходит сворачивание 1С-ки в коврик.
Это только у меня одного ? (нет ни одного сообщения на эту тему)
Посмотрел исходники.
ИМХО
Это происходит из-за того, что при загрузке плагина, перехватываются функции из kernel32.dll, а при завершении конфигуратора, ни какого обратного действия не происходит.
Думаю нужно отменить перехват.
Подскажите, пожалста, как можно получить управление в плагине при завершении работы конфигуратора ?
25. Михаил Куликов (mvgrob1) 04.12.09 13:39 Сейчас в теме
26. Looking Кречетов (Looking) 81 17.06.10 22:47 Сейчас в теме
В Windows7 плагин не работает, или я что-то не так сделал? Может какие-то другие действия нужны, или 1С надо как-то по другому запускать - режим совместимости и т.д.
user_vin; +1 Ответить
27. 123 (13hohol) 05.07.10 16:46 Сейчас в теме
Никто не встречал ошибку перед загрузкой = "Ошибка чтения из архива"?
а то я даже демо базу не смог прогрузить, а очень надо .
buy_sale; +1 Ответить
28. Дмитрий Иванов (viddik) 175 08.09.10 09:56 Сейчас в теме
(13hohol) При загрузке указывай архив zip, который указывал при выгрузке. Там конфигурация и пустой .dat. После загрузки конфы плагин у тебя спросит, откуда брать romix.dat
29. Андрей Нагыев (NagNag) 04.11.10 19:12 Сейчас в теме
Два дня назад делал загрузку с отображением процента загрузки через терминал на одном из серверов!
Сегодня делаю на другом сервере тоже через терминал - и обычный белый экран без процентов загрузки! С чем связано - не знаю! :cry:
Базы можно загружать через romix только ради этого прогресс бара 8-) :)

Сейчас потестил на небольшой базе на своем компе! Прогресс бар выдается не стабильно!
И при повторной загрузке выдает ошибку<Ошибка загрузки>! Чтобы повторно загрузить, нужно выйти из 1С и войти повторно!
30. Владимир (hogik) 420 04.11.10 21:09 Сейчас в теме
(29)
А вот тут я поставлю минус под сообщением!
Т.к. на аналогичное ("бредовое") сообщение под своей разработкой ставить минус не очень тактично.
http://infostart.ru/public/77617/?PAGEN_1=1#comm398883
31. mosAdm (mosAdm) 131 03.02.11 22:58 Сейчас в теме
Спасибо. Очень спасло.

Вчера была рутина, обновлял бух. 77 типовую, перед обновлением (почти случайно :-) сделал копию методом "выгрузить данные"). Сегодня звонит бух. и говорит "полетел мол справочник такой-то, что делать?". Ну сильно не заморачиваясь отвечаю: "восстановите данные из копии которую вчера делали". Админ местный начинает восстанавливать сразу в рабочую. Звонят через часа два: все висит, база не восстановилась. Ищем с администратором ближайшие резервные копии, их есть за октябрь месяц прошлого года. Забираю архив к себе начинаю танцы с бубном. Есть архив -не восстанавливается, была рабочая база с битым справочником - и уже нету. Гружу на сервер с SQL - висит. Загрузил восстановлением два сервера - ничего. Ближе к обеду нашел публикацию на ИС, запустил, и случилось, можно сказать, чудо - база восстановлена.

Еще раз спасибо.
32. Сергей Михайлов (MihSerg) 4 10.02.11 15:34 Сейчас в теме
ПОставили Винду 2008 x64 и SQL 2008 x64 на старом серваке спасибо плагину всё выгрузи, а вот в новом загрузить не можем не работает плагин x64 может что подскажете?
33. Андрей Казарский (anri123) 27.05.11 11:12 Сейчас в теме
Идея и воплощение выше всяких похвал!
Только возникла маленькая загвоздка: для выгрузки террабайтной базы, надо где-то радобыть ещё террабайт свободного места на том же диске :)
Нельзя ли добавить выбор места для *.dat файла?
34. Igor Александрович (igor_1c) 12 22.08.11 12:46 Сейчас в теме
Отличная штука. В последнем релизе отключено предупреждение и по умолчанию файл остается в каталоге в виде romix.dat, а можно ли как нить сделать, чтобы он всё таки запаковывался и удалялся из каталога - т.е. штатно
35. villy (vitaliy.ermolenko) 29.09.11 15:15 Сейчас в теме
планируется ли поддержка windows 7 и/или windows 2008?
36. witea (AlexB.) 30.09.11 06:38 Сейчас в теме
Спасибо, скачал для подстраховки. К счастью помогло удаление помеченных на удаление объектов, выгрузил штатным способом.
37. Александр Гринюк (avgreen) 71 28.10.11 14:55 Сейчас в теме
villy пишет:

планируется ли поддержка windows 7 и/или windows 2008?

Проблему с Win7 решил. Как только получу разрешение автора - опубликую здесь, или рядом.....
Если это конечно еще актуально.
38. Ivan Ivanov (ZabbaZabba) 31.10.11 22:28 Сейчас в теме
Очень-очень актуально!!!
Никак не могу на win 2008 загрузить большую базу выгруженную!
39. Александр Гринюк (avgreen) 71 01.11.11 10:15 Сейчас в теме
ZabbaZabba пишет:

Очень-очень актуально!!!

Никак не могу на win 2008 загрузить большую базу выгруженную!

Сейчас пытаюсь выложить. Оформил публикацию - модераторы завернули "из-за отсутствия картинки, описания" и внимание!!!! - "СКРИНШОТОВ". Сделать им снимок окна конфигуратора что-ли? :)
40. Александр Гринюк (avgreen) 71 01.11.11 13:28 Сейчас в теме
41. Ivan Ivanov (ZabbaZabba) 01.11.11 13:48 Сейчас в теме
ОООО, спасибо тебе, добрый человек!!! Всю ночь промучкался. Причем выгрузка у меня прошла. А загрузка не работает. Я пытаюсь файл подпихивать - он начинает грузить, а когда доки грузит - вылетаяет с ошибкой "Ошибка в поиске в неизвестном файле". Вылечится это , как думаете?
42. Александр Гринюк (avgreen) 71 01.11.11 14:21 Сейчас в теме
(41) ZabbaZabba, А как ты умудрился выгрузить и при загрузке файл подкинуть? 1С ведь там паузы не делает. Ну выгрузку чисто теоретически можно поймать на том, когда он начала архивировать но еще не удалил DAT. Хотя это нужно еще тем терпением запастись. А при загрузке как? Тоже "ловить момент"?
А вылечится или нет ..... у меня выгрузка нормально проходила и загрузка тоже. Но загрузку я пробовал еще под WiinXP. Хотя теперь разницы быть не должно - принцип там один и не зависит от версии ОС.
43. Ivan Ivanov (ZabbaZabba) 01.11.11 18:14 Сейчас в теме
выгрузил я с помощью плагина.
а на новом сервере винда 2008. там плагин не работал. а когда делаешь загрузить данные - указываешь откуда, он спрашивает "что все данные будут замещены" итп. Так в этот момент - оказывается 1с уже zip файл распаковала в каталог иб/uz0000 - там 3 файла - md, dat и usr. Так вот здесь то я его и подменял.
44. Ivan Ivanov (ZabbaZabba) 04.11.11 15:21 Сейчас в теме
45. Алексей Козленков (ukgh) 07.11.11 07:40 Сейчас в теме
Молодец! Некоторые пытаются паролить дешевые отчетики из 15 строчек, а тут солидные исходники. +1
46. Вячеслав (Kurya) 10 12.11.11 11:39 Сейчас в теме
Здравствуйте уважаемые!
Столкнулся со следующей проблеммой: База ДБФ 12Гиг комплексная (это не я ее довел, я только три недели работаю в этой конторе). Выгружаю с помощью плагина от Romix. Получается дат файл 5.5 гиг. Гружу в SQL базу (SQL 2005 enterprise). Загрузка проходит нормально, без ошибок, файл mdf получается 12 гиг (как бы маловато будет). ЗАхожу в загруженную 1С - а там пусто. Ни документов, ни итогов, ни справочников. Смотрю таблицы в SQL - записи есть. Сейчас запустил ТиИ, но ждать результата часов 10-15.
Может кто сталкивался с подобной ситуацией и подскажет куда копать?
47. Владимир (hogik) 420 12.11.11 18:46 Сейчас в теме
(46)
Вячеслав (Kurya).
Попробуйте загрузить в пустую DBF-ную базу. Чего получится?
48. Вячеслав (Kurya) 10 12.11.11 23:56 Сейчас в теме
Спс. Проблемма решена. Как говорится сам дурак. Скопирорвал в папку с загруженной конфигурацией различные папки и файлы из старой. В том числе и cfg :)
Естественно при запуске 1С создались пустые файлы ДБФ.
49. Андрей (ssaapp) 13.11.11 15:39 Сейчас в теме
Добрый день
Дайте ссылку на публикацию
50. Александр Сергеевич (Ronnie81) 17.12.11 13:59 Сейчас в теме
Где скачать плагин Ромикса?
51. Татьяна (tana1257) 2 16.08.12 09:47 Сейчас в теме
Подгружала плагин Romix. Загрузка в пробную базу прошла. У меня Win2008 64, sql 2008 64. 1с v7.7 релиз 27. bkend пропатченный, но выгрузка не работает, так же дает ошибку - ошибка при чтении файла, вообщем как и без плагина. Ваш плагин еще не опробовала, так как хочется услышать мнение тех, у кого этот плагин заработал.
52. Степашка Никулин (Styvi) 5 11.09.12 14:07 Сейчас в теме
Пришёл и мой час :) - буду пробовать обойти гограничение в 2 Гб для файла .DAT
Спасибо romix за информацию - а то я уж думал, что иначе как обрезать базу других вариантов не будет...
53. Вадим Янчук (vadimlp77) 26 17.09.12 13:48 Сейчас в теме
У меня не получается выгрузить переферийную базу первый раз (большая выгрузка). Плагин кажись не срабатывает в этом случае. Так ли это? Кто то пробовал выгружать базу не из меню "Администрирование/Выгрузка данных", а из "Администрирование/Распределенная ИБ/Управление/Выгрузить данные" для конкретной переф. базы ??
54. Денис Кирса (kirsenn) 30.10.12 05:38 Сейчас в теме
Отлично! Спасибо, все работает. Windows Server 2008 R2 x64 база 6 гигов!
55. Степашка Никулин (Styvi) 5 31.10.12 10:39 Сейчас в теме
Замечательно плагин работает, правда, ускорения процесса по причине отказа от архивирования не заметил, но это и не важно...
Спасибо за разработку...
56. Роман Сюзев (sorb) 04.11.12 13:47 Сейчас в теме
(53) vadimlp77:
У меня не получается выгрузить переферийную базу первый раз (большая выгрузка). Плагин кажись не срабатывает в этом случае. Так ли это? Кто то пробовал выгружать базу не из меню "Администрирование/Выгрузка данных", а из "Администрирование/Распределенная ИБ/Управление/Выгрузить данные" для конкретной переф. базы ??

Та же проблема. Может кто-нить уже разобрался? Жутко не хочется ставить дельфи и ковырять исходники...
57. Владимир Владимир (knight) 04.01.13 13:03 Сейчас в теме
те на выгрузку в периферийную базу этот плагин не распространяется?
58. romix (romix) 597 04.01.13 23:36 Сейчас в теме
(knight)
Меня несколько раз спрашивали, можно ли применить к созданию периферийной базы УРБД, но мне как-то не удавалось сосредоточиться как следует на этой теме, да и пользователи обходили проблему другими средствами (как вариант - можно отгружать в первой выгрузке не все метаданные сразу).

По хорошему эту проблему нужно один раз решить на уровне фирмы 1С, со своей стороны я готов предоставить фирме 1С все свои наработки по этой теме, если потребуется, - безвозмездно, а для этого нужно от кого-то из пользователей (например от Вас) с этой проблемой письмо с идентификационным номером в линию поддержки hline@1c.ru. Там изменение таково: убрать через ини-файл архивирование файла дат и заменить функции чтения-записи текстовой строки в файл на простые системные, где нет ограничения 2 или 4 Гб.
59. Вадим Янчук (vadimlp77) 26 04.01.13 23:52 Сейчас в теме
(58) romix, Вряд ли они станут заморачиваться. Они развивают 8.3, а с 7.7 связываться не будут, имхо.
60. romix (romix) 597 05.01.13 00:29 Сейчас в теме
(59) Решение именно этой проблемы поспособствует развитию обеих систем, т.к. выгружают большие базы обычно в SQL, а где SQL там и 8.3. Альтернативой являются ежегодные обрезания базы, а обрезанные базы не создают благоприятных предпосылок к переходу на более мощное аналитическое ПО.
61. Иван Кречко (Ivan.Krechko) 1 31.03.13 00:32 Сейчас в теме
romix,
спасибо Вам большое за все Вашы труды - очень помогли в сложных ситуациях. Слава Богу, что есть такой человек. :)
62. zuza (zuza) 320 14.07.13 13:58 Сейчас в теме
Не могу понять ,почему то при загрузке вылетает конфигуратор... :( мож кто знает в чем причина?
63. romix (romix) 597 17.07.13 19:47 Сейчас в теме
(61) Спасибо :-)
(62) Ну может константу там нужно в пустой базе создать (как написано в инструкции). Или попробовать на более старой версии ОС выполнить загрузку (у меня тестировалось на Windows XP).
64. Андрей Ковальчук (AndKovalchuk) 37 25.02.14 10:06 Сейчас в теме
Самый большой недостаток этой библиотеки в том, что ее нельзя запустить опционально. У нас наряду с большой зарплатной базой есть куча мелких баз. И очень неудобно каждый раз выгрузку переделывать. Переименовывать romix.dat и сохранять файл в архив выгрузки под именем 1cv77.dat
65. popiksergey (popiksergey) 31.10.14 16:33 Сейчас в теме
у меня тоже база весит 10 гигов, при выгрузке получилось 4,3 гига, в SQL сначала пробовал в связке секретный релиз 7.7.027.1, не получалось, после 3% просто процесс загрузки базы останавливался. ПО на котором пытался загружать базу (выгрузка из DBF базы прошла без проблем) Win 7 + 1C 7.7.27.1 + MS SQL 2014 (2008 совместимость).
я решил что в пропатченом BkEnd.dll дело, поднял виртуалку с WinXP + MS SQL 2000 PE + 1C 7.7.025 (потому как разработчик использовал именно 25 релиз при тестировании), но и тут не выходило ничего приложение 1С просто вылетало на том же самом месте.

и только благодаря комментам в этой ветке я нашел решение своей проблемы загрузки.
у меня был добавлен еще один общий реквизит (строковый реквизит ограниченной длины 50 символов), который как раз оказался последним.
и как только опустил общий реквизит Комментарий и сделал его последним. выгрузка пошла дальше
67. Николай Шок (user794773) 14.07.17 11:29 Сейчас в теме
Сделал все по иструкции не выгружается в dat ! в чем проблема , выгружается база в простой стд ZIP , не могу понять куда копать , файл патчил , др файл подкладывал , папку плагин создавал , по идее плагин запускается , проверял подменой пути , он сразу ругается , но при выгрузке получаю на выходе стд ZIP.... помогите ....
68. Виталий Сергеевич (Slypower) 26.07.17 16:39 Сейчас в теме
(67) в этой папке вы получаете zip, а в папки с базой у вас лежит файл romix.dat.
Оставьте свое сообщение