gifts2017

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

Опубликовал romix (romix) в раздел Программирование - Практика программирования

Плагин позволяет не упаковывать в архив 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 http://infostart.ru/public/96481/

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

Наименование Файл Версия Размер
- 1154
.1197539775 303,40Kb
05.04.12
1154
.1197539775 303,40Kb Бесплатно

См. также

Подписаться Добавить вознаграждение
Комментарии
1. chicago (chicago) 13.12.07 13:22
2. VasilyKushnir (vasilykushnir) 13.12.07 13:41
Вещь знакомая по мисте. Но поскольку там не принято оценивать - ставлю плюсик с чувством исполненного долга. Вещь оббалденная!
3. cs25 (cs25) 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) 14.12.07 11:48
Спасибо, romix.
Успехов в этом и в Новом!
7. Аркадий Кучер (Abadonna) 17.12.07 19:35
Ваще молодец! Некоторые пытаются паролить дешевые отчетики из 15 строчек, а тут солидные исходники. +1
8. Юрий Немченко (nemchenko) 07.01.08 11:49
Столкнулся с описанной проблемой, попробовал плагин. Проблему решает :-) Однако все же есть замечание - выгрузка требует наличие человека чтобы нажать кнопочку "Да". А если выгрузка выполняется ночью в пакетном режиме? Хотелось бы иметь возможность настройки выполнения плагина в диалоговом или автоматическом режиме. А в остальном супер! плюсую.
9. MTM (BOZKURT) 22.02.08 22:50
10. romix (romix) 26.02.08 21:15
(nemchenko) На праздниках я обновил разработку - теперь она не останавливается при выгрузке, а выдает все сообщения не окном с кнопкой ОК, а в трее. Я несколько раз потестил, но прошу отозваться у кого все хорошо заработает.

Также обновил индикацию при загрузке - она тоже в трее (так кажется лучше - иначе пропадало отображение на белом экране).
11. Дмитрий (sdemon72) 06.03.08 11:42
А можно, что бы то же самое работало для выгрузки УРБД?
12. Дмитрий (sdemon72) 07.03.08 10:43
Плюсую. Помогло при создании новой периферийной БД. Выгрузку сделать удалось без помощи посторонних средств (перехватил файл 1Cv77.dat) , а вот загрузку я бы без плагина не сделал.
13. JLab13 (jlab13) 27.03.08 11:26
При загрузке данных в DBF версию зависает на 2 009Мб. Выгрузка проходит нормально!
14. romix (romix) 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С при переключении на другое приложение перестает в статусной строке что либо отображать.
24. Вячеслав (slawa) 06.07.09 02:46
При установленном плагине, при завершении конфигуратора, происходит сворачивание 1С-ки в коврик.
Это только у меня одного ? (нет ни одного сообщения на эту тему)
Посмотрел исходники.
ИМХО
Это происходит из-за того, что при загрузке плагина, перехватываются функции из kernel32.dll, а при завершении конфигуратора, ни какого обратного действия не происходит.
Думаю нужно отменить перехват.
Подскажите, пожалста, как можно получить управление в плагине при завершении работы конфигуратора ?
25. Михаил Куликов (mvgrob1) 04.12.09 13:39
26. Looking Кречетов (Looking) 17.06.10 22:47
В Windows7 плагин не работает, или я что-то не так сделал? Может какие-то другие действия нужны, или 1С надо как-то по другому запускать - режим совместимости и т.д.
27. 123 (13hohol) 05.07.10 16:46
Никто не встречал ошибку перед загрузкой = "Ошибка чтения из архива"?
а то я даже демо базу не смог прогрузить, а очень надо .
buy_sale; +1 Ответить
28. Дмитрий Иванов (viddik) 08.09.10 09:56
(13hohol) При загрузке указывай архив zip, который указывал при выгрузке. Там конфигурация и пустой .dat. После загрузки конфы плагин у тебя спросит, откуда брать romix.dat
29. Андрей Нагыев (NagNag) 04.11.10 19:12
Два дня назад делал загрузку с отображением процента загрузки через терминал на одном из серверов!
Сегодня делаю на другом сервере тоже через терминал - и обычный белый экран без процентов загрузки! С чем связано - не знаю! :cry:
Базы можно загружать через romix только ради этого прогресс бара 8-) :)

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

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

Еще раз спасибо.
32. Сергей Михайлов (MihSerg) 10.02.11 15:34
ПОставили Винду 2008 x64 и SQL 2008 x64 на старом серваке спасибо плагину всё выгрузи, а вот в новом загрузить не можем не работает плагин x64 может что подскажете?
33. Андрей Казарский (anri123) 27.05.11 11:12
Идея и воплощение выше всяких похвал!
Только возникла маленькая загвоздка: для выгрузки террабайтной базы, надо где-то радобыть ещё террабайт свободного места на том же диске :)
Нельзя ли добавить выбор места для *.dat файла?
34. Igor Александрович (igor_1c) 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) 28.10.11 14:55
villy пишет:

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

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

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

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

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

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

По хорошему эту проблему нужно один раз решить на уровне фирмы 1С, со своей стороны я готов предоставить фирме 1С все свои наработки по этой теме, если потребуется, - безвозмездно, а для этого нужно от кого-то из пользователей (например от Вас) с этой проблемой письмо с идентификационным номером в линию поддержки hline@1c.ru. Там изменение таково: убрать через ини-файл архивирование файла дат и заменить функции чтения-записи текстовой строки в файл на простые системные, где нет ограничения 2 или 4 Гб.
59. Вадим Янчук (vadimlp77) 04.01.13 23:52
(58) romix, Вряд ли они станут заморачиваться. Они развивают 8.3, а с 7.7 связываться не будут, имхо.
60. romix (romix) 05.01.13 00:29
(59) Решение именно этой проблемы поспособствует развитию обеих систем, т.к. выгружают большие базы обычно в SQL, а где SQL там и 8.3. Альтернативой являются ежегодные обрезания базы, а обрезанные базы не создают благоприятных предпосылок к переходу на более мощное аналитическое ПО.
61. Иван Кречко (Ivan.Krechko) 31.03.13 00:32
romix,
спасибо Вам большое за все Вашы труды - очень помогли в сложных ситуациях. Слава Богу, что есть такой человек. :)
62. zuza (zuza) 14.07.13 13:58
Не могу понять ,почему то при загрузке вылетает конфигуратор... :( мож кто знает в чем причина?
63. romix (romix) 17.07.13 19:47
(61) Спасибо :-)
(62) Ну может константу там нужно в пустой базе создать (как написано в инструкции). Или попробовать на более старой версии ОС выполнить загрузку (у меня тестировалось на Windows XP).
64. Андрей Ковальчук (AndKovalchuk) 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 символов), который как раз оказался последним.
и как только опустил общий реквизит Комментарий и сделал его последним. выгрузка пошла дальше