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

0 romix
 
модератор
23.02.07
15:06
Плагин выводит предупреждение MessageBox перед открытием (при чтении) и перед закрытием (при записи) файла 1Cv77.dat. Цель - лечение проблемы с большими (несколько Гб) выгрузками, которые не может правильно обработать штатная библиотека для работы с ZIP-файлами от 1С.

Книга знаний: Плагин для лечения выгрузки и загрузки больших баз в 1С 7.7
2 FreeFin
 
23.02.07
15:17
(0) Маладца, как всегда! Но а когда сам паковать/распаковывать будет, иль на том и остановишься?
3 pavel_tr
 
23.02.07
15:19
Спасибо огромное! Очень нужная штука!!!
4 leshikkam
 
23.02.07
15:46
Спасибо!
5 romix
 
23.02.07
16:14
(2) затрудняюсь найти правильную DLL для ZIP. Они вообще есть в природе? :-)
6 Злопчинский
 
23.02.07
16:18
правильную - это какую?
7 Злопчинский
 
23.02.07
16:20
есть бесплатные компоненты
Перевел систему на бесплатные компоненты UnRar.dll и zLibEx.
может это то что надо?
8 mikecool
 
23.02.07
16:23
(0) еще 5 баллов в копилку.
Научи еще систему разбивать дат на куски и отдельно запаковывать :-)
9 FreeFin
 
23.02.07
16:37
(5) Покопать на http://www.compression.ru, прочем, кому я советую)))
10 toypaul
 
гуру
23.02.07
17:43
полезная штука
11 toypaul
 
гуру
23.02.07
17:47
написал у себя в новостях :)
http://www.1csql.ru/materials/news.html~39a00f29-395c-2da0-4680-09be28cf08c1
12 romix
 
23.02.07
17:52
Блин подождите рекламировать еще проверить надо. :-)
13 ASV
 
23.02.07
18:02
1С использует  http://www.zlib.net/
14 romix
 
23.02.07
18:26
Сейчас попробую на большой (3 Гб выгрузка SQL) базе запустить (на маленькой-то все работает...).
15 andrey995
 
23.02.07
21:47
Роман, респект !!!
16 romix
 
23.02.07
22:26
Потестил на большой базе - предел оказался не превышен (из трехгиговой базы получился текстовик DAT 438К). Все вроде без ошибки жужжит.
Попробую нагенерить если никто (например TasStas) отзыв не напишет, работает ли с неск.-гиговой выгрузкой.
17 Gepard
 
24.02.07
09:52
(0) а разве подменой это лечится?
18 Gepard
 
24.02.07
09:56
(17) + или 1С сама в конце этот файл портит?
19 VasilyKushnir
 
24.02.07
11:13
Если база 9,2 гига устроит могу протестировать. Только вот сколько времени эта бодяга у меня шаманить будет?
20 pavel_tr
 
24.02.07
12:51
База 25 Гб, SQL. Щас потестим...
21 romix
 
24.02.07
13:50
(17) Если проблема только в зипе (а не где-то еще глубже в 1С), то она должна вылечиться.

(19, 20) Если получится это запустить, то будет здорово.
22 ASV
 
24.02.07
14:03
(20) щас 25 в один гиг свернет :)
23 pavel_tr
 
24.02.07
14:06
(22) Не :-) Выгрузила щас все справочники + 4й док, ДАТ уже 2,7 Гб. Полдела сделано, джём-с
24 pavel_tr
 
24.02.07
15:39
Итак, всё не так просто оказалось!
Выгрузил базу, ДАТ файл получился 3,71 Гб. Далее стал загружать в пустую базу ДБФ. Загрузила справочники, на втором виде доков выдала ошибку:

---------------------------
Конфигуратор
---------------------------
Ошибка поиска в файле an unnamed file
---------------------------
OK  
---------------------------

Вспомнил! Поднимал тему ошибка поиска в файле an unnamed file Теперь ясно однозначно, проблема именно в том, как 1С загружает данные! Ограничение архиватора преодолимо(либо патчем, либо как я делал в той теме), но при загрузке всё одно вывалит ошибку
25 romix
 
24.02.07
15:55
(24) А если в пустую базу SQL? Может, там ограничение на гиговый размер файла DBF срабатывает?
26 pavel_tr
 
24.02.07
15:56
(25) сейчас попробую в SQL
27 pavel_tr
 
24.02.07
15:57
+(25) хотя загруженная ДБФка (самая большая) - всего 590 Мб =\
28 romix
 
24.02.07
16:03
"При этом если система эксплуатируется в однопрограммном режиме, то размер файла может быть 2 гигабайта, однако если появится второй пользователь, а файл будет больше 1 гигабайта, то система 1С начинает сбоить по ЧТЕНИЮ" (с) hogik
29 pavel_tr
 
24.02.07
16:08
(28) вот ведь! У нас так и случилось на ДБФ! А все твердили про 2Гб-ограничение =\
Гружу в SQL, пока нормально
30 romix
 
24.02.07
16:08
(27) А CDX?
31 pavel_tr
 
24.02.07
16:10
CDX при загрузке 1С создаёт ПОСЛЕ того как загружены ВСЕ данные. До индексации даже не дошла - выдала (24) и осталась в конфигураторе
32 pavel_tr
 
24.02.07
16:11
+(31) возможно индекс для 590Мб ДБФки был бы больше 1 Гб, и 1Сина это просчитала? Думаю, загрузка в SQL должна прояснить
33 romix
 
24.02.07
18:24
Ну как накернилось на SQL?
34 pavel_tr
 
24.02.07
21:10
Интересно! Вылетела на том же документе, по счетчику загрузила раза в два его больше (для ДБФ было значение 37 000, сейчас 60 000), и сообщение другое:

---------------------------
Конфигуратор
---------------------------
   Ошибка загрузки данных!
---------------------------
OK  
---------------------------
35 Gepard
 
24.02.07
21:20
(25) Раньше пробовали менять файл, все равно с ошибкой вылетала, так что здесь проблема в 1С, а не только в сжатии... Такое ощущение, что она и не пытается загрузить данные более 2GB (т.е. начинает, а как начинает грузить более этого размера выдает ошибку)
36 Ангел- Хоронитель
 
24.02.07
22:09
(0)ай да romix!!! ай да.... МОЛОДЕЦ!!!! :)
37 romix
 
24.02.07
22:34
(34) Обломинго. Попробую излечить...
38 pavel_tr
 
25.02.07
00:37
(37) надеюсь получицца. Проблема очень насущная, и очень уж давно известна... Рад буду потестить ещё
39 romix
 
25.02.07
02:08
Там многократно вызывается SetFilePointer
с шагом 512 байт. Относительно позиции FILE_BEGIN. :-)
Может его отрубить тогда все сработает :-)
40 romix
 
25.02.07
02:09
Пробую отрубать, вроде все загружает :-)
41 Злопчинский
 
25.02.07
02:18
Не, просто втупую отрубить - это сильно..
а вдруг где косяк вылезет...
там что, при "суммировании" по 512 байт идет где-то "переполнение"...? и указатель позиционируется не туда куда надо...?
42 romix
 
25.02.07
02:44
(41) Проверил (сравнивал пред. и след. позицию), там суммирование идет по 512 байт.

Вызовы идут примерно так:
SetFilePointer(handle, 0, 0, FILE_CURRENT);
SetFilePointer(handle, 0, 0, FILE_CURRENT);
SetFilePointer(handle, 0, 0, FILE_CURRENT);
SetFilePointer(handle, 512, 0, FILE_BEGIN);

SetFilePointer(handle, 0, 0, FILE_CURRENT);
SetFilePointer(handle, 0, 0, FILE_CURRENT);
SetFilePointer(handle, 0, 0, FILE_CURRENT);
SetFilePointer(handle, 1024, 0, FILE_BEGIN);
...
SetFilePointer(handle, КонецФайла, 0, FILE_BEGIN);
SetFilePointer(handle, КонецФайла, 0, FILE_BEGIN);

То есть, все вызовы SetFilePointer - бесполезные...
Исходят из mfc42.dll
Можно отрубать имхо.
43 Злопчинский
 
25.02.07
12:38
ну так результат-то какой?
все ок?
44 romix
 
25.02.07
13:33
Выложил обновленную версию, в которой отрублен вызов (42), т.к. чтение там строго последовательное.
Ссылка прежняя.
Можно обновить только plugin_unload_dat_fix.dll
Проверил на своей базе (к сожалению у меня нет большой базы с неск-гиговым DAT).
45 NuF
 
25.02.07
14:09
(0)(44) !!!!!!!!! Ай, молодца!!
46 pavel_tr
 
26.02.07
00:49
(44) отлично! Сейчас запущу загрузку, завтра напишу что получилось
47 Злопчинский
 
26.02.07
01:44
(46) Внимательно следим за вестями с фронта
48 Obed
 
26.02.07
03:05
(0) Ну давай зачотку, поставлю пятак!
(46) ждемс...
49 romix
 
26.02.07
06:44
Я нагенерил данных, DAT 2,5 гига.

При выгрузке надо переименовывать DAT (когда появится окно предупреждения) и подставить вместо него пустой (или почти пустой) файл с тем же именем.

При загрузке надо подставить вместо него правильный DAT.

Выгрузка и загрузка в одну и ту же базу у меня не получалась, пока я не создавал базу заново, или не делал Детач-Аттач.

Обновил немножко еще dll - убрал отключение SetFilePointer в режиме записи (выгрузки) DAT. Ссылка та же.
50 Морозов Александр
 
26.02.07
06:51
как-то все недоделано... ну уже бы прикрутил бы и запуск стороннего архиватора
51 Морозов Александр
 
26.02.07
06:51
за разработку тройка тебе :-))
52 zaki
 
26.02.07
09:53
Лучше бы настройку запуска внешнего батника сделал бы чтобы не ручками подменять DAT файл
53 pavel_tr
 
26.02.07
10:04
+(46) Гружу ДАТ из (24). В новую ДБФ базу загрузилось! Никаких ошибок не выдавала, всё в порядке. Сейчас считает регистры, думаю прервать и попробовать в новую SQL базу подгрузить. ДБФ-файл движения (самый большой) получился 1,5 Гб, так что думаю, что ждать пересчёта смысла нет - всё равно вылетит. Про SQL потом расскажу
54 romix
 
26.02.07
10:09
(50) Архивировать большие базы не всегда хорошо... Ждать порой долго, и место на винте (если все происходит в пределах одного компа) не экономится, а наоборот...

(52) Могу запрос имени DAT-файла сделать при загрузке, и вопрос писать его в ZIP или переименовывать/замещать пустышкой при выгрузке.
55 zaki
 
26.02.07
10:38
(54) ну обычно потом архивы на болванку пишутся а не на диске хранятся а так можно и сжать по быстрому ....
56 romix
 
26.02.07
11:20
(55) Ну дык большие базы полезнее архивировать сиквельными средствами...
При этом юзеров не надо выгонять, и можно делать фоновые архивы в течение дня.
57 pavel_tr
 
26.02.07
11:30
ИМХО выгрузка-загрузка для больших баз нужна только для лечения глюков в данных, и архивирование тут вообще ни к чему
58 romix
 
26.02.07
11:43
(57) Ну и перенос в сиквель тоже, когда база до DBF-ного предела дорастает. :-)
59 pavel_tr
 
26.02.07
11:47
(58) лишь бы не переросла :-)
60 romix
 
26.02.07
12:19
По идее 32 бита - это же 4 гига, а приколы лезут уже с 2-х или с 1-го.
61 pavel_tr
 
26.02.07
12:37
У нас как только регистр остатков (RG) перевалил за 1 Гб, перестал открываться период, ругалась на битый индекс.
+(53) Загрузила! Индексует щас... Не знаю, сколько ещё ждать, пока регистры посчитает (дождусь), но думаю, что уже можно ставить разработке 5+! Спасибо огромное, Роман, каждый патч - просто как бальзам на жирное туловище платформы!
62 romix
 
26.02.07
13:03
:-)
63 andrewalexk
 
26.02.07
16:33
(0)
:)
а у меня запуск, выгрузка нормально,
а при загрузке произвольной выгрузкой, после замены дат файла
начинает создавать процедуры, но после "загрузка системной информацией"
выдает ошибку загрузки..
и в readme файле ничего про начальный файл загрузки нет..
"что я не так делаю?"(с)
64 romix
 
26.02.07
16:43
(63) Если в ту же базу SQL загружаешь, то у меня она валится если не сделать детач-аттач, или не пересоздать базу SQL. Перезагрузка компа не помогает. Что это за явление, я затрудняюсь сходу сказать.
65 romix
 
26.02.07
16:43
А после детач-аттач все работает.
66 andrewalexk
 
26.02.07
16:50
(64)
:)
я в новую и чистую гружу..
а ты под какой выгрузкой начинаешь загружать?
67 romix
 
26.02.07
16:58
Я начинаю загружать выгрузку с пустышкой (размер 1 байт) вместо dat.
68 romix
 
26.02.07
16:58
(66) Т.е. в зипе не файл dat, а одноименная пустышка размером 1 байт.
69 romix
 
26.02.07
16:59
А потом когда появляется окно, делаю подмену на нормальный dat.
70 pavel_tr
 
26.02.07
16:59
(67) я вообще MD-шник скопировал и в DAT переименовал, потом в архив сунул. Разницы же нет, всё равно подменяем его
71 romix
 
26.02.07
17:00
Я наверное лучше автоматизирую этот процесс (переименование DAT и подкладывание вместо него пустышки), а то я сам не сразу допер что надо делать :-)
72 andrewalexk
 
26.02.07
17:11
(71)
:)
золотые слова!
большинство же ожидает возможности автоматизации
73 Вильям
 
26.02.07
17:38
(0) очередной раз респект и уважуха. Большое тебе спасибо.
74 andrey995
 
27.02.07
08:25
вместо апа... ждем новостей...
75 Obed
 
28.02.07
10:26
ну и я апну на всякий случай :)
76 belant1c
 
21.03.07
18:06
(71) Реально помогло и главное в кон :), огромное спасибо
77 romix
 
модератор
22.03.07
09:36
Я обновил программу, там сейчас идет выгрузка DAT (по запросу) в определенный файл (в ZIP остается пустышка от DAT).

При загрузке можно выбрать этот файл DAT (отказ от выбора файла = штатное поведение 1С).
78 andrewalexk
 
22.03.07
11:16
(77)
:)
бета тестирование начинается!
79 Sasha_H
 
23.03.07
14:15
CODEBASE ERROR
Error# : -120
Writing to File
C:\Test\RA3612.DBF

Уже загрузило много и так лохонутся.
80 romix
 
модератор
23.03.07
17:47
(79) Может место на диске кончилось? Или файл превысил 2Гб (или 1 Гб, там какой-то предел есть).
81 pavel_tr
 
25.03.07
00:17
Чего-то третья версия плугина не сработала! До этого тестил вторую, на копии всё безупречно отрабатывало. Сейчас третью пробовал (текущую) - очень удобно с диалогами, это да. Файл выгрузки получился 4,01 Гб (до этого был 3,71 Гб), см (24), и в самом конце загрузки на предпоследнем доку выдала "Ошибка загрузки данных". Это чтож, получается есть ещё и ограничение на ДАТ-файл в 4 Гб??
romix, у тебя не осталось второй версии плугина? Может с ним загрузит правильно, у меня его не осталось =\
82 pavel_tr
 
26.03.07
00:04
+(81) Предел существует. Сделал удаление помеченных объектов (как раз накопились), снова сделал выгрузку (ДАТ файл получился ровно 4 Гб). При загрузке выдала ту же ошибку, но тот вид дока, что вылетел в прошлой загрузке - загрузился, ошибка вышла на последнем документе. Самое обидное, что по счётчику (в строке состояния) не хватило буквально чуть-чуть =\ (при выгрузке он поднимался до 700, при загрузке тоже поднялся до 700 и отвалился, видимо совсем коппек не хватило).
Роман, можно с этим что-нибудь сделать?
83 romix
 
26.03.07
01:09
(82) Нашел более старую версию, сейчас ее выложу туда же...
84 romix
 
модератор
26.03.07
01:26
(+83) Там теперь внутри папка v2 с более старой (и более простой) версией DLL.
85 romix
 
26.03.07
04:30
(82) А файловая система- NTFS?
А то у FAT32 по-моему предел 4 гига...
86 Sasha_H
 
26.03.07
09:27
(79) Насколько я понял, то предела недолжно быть ... Дат файл весит 3,7Гб вконце как и говорится в инструкции спросило Ромикс использовать при сохранении я говорю да все, оно запаковало и в конце сказало, что в архив бросило пустой файл, потом делал загрузку и вот тебя пожалуйста ошибка. Так что именно ты переборол, я думал, что независимость размера ДАТ-файла :) места на диске хватает, разве он распаковывается на 50Гб :) система НТФС.
87 Морозов Александр
 
26.03.07
09:32
Error# : -120

Writing to File
C:\Test\RA3612.DBF

Ошибка записи в файл... причем здесь Dat файл?
88 Морозов Александр
 
26.03.07
09:36
скороей всего как Ромикс сказал в 80 посте...
89 Лефмихалыч
 
26.03.07
09:52
(0) к трёпу про сжатие. Ежли subj на дельфях, то вот халявная ВКЛ-ина которая крют зипом
http://www.componentace.com/zip_component_zip_delphi_zipforge.htm
90 pavel_tr
 
26.03.07
10:22
(85) Да, конечно NTFS. Попробую со второй версией и отпишу о результатах
91 romix
 
модератор
26.03.07
10:37
(90) А база сиквельная, куда загружаешь? А то в DBF-ной ограничение то ли на 2 гига, то ли на 1 гиг (как утверждает некто hogik) на каждый файл.
92 pavel_tr
 
26.03.07
10:42
(91) гружу в чистую SQL-базу. Потому и заговорил про ограничение:
1.При ДАТ-файле 3,71 Гб загрузилось
2.При ДАТ-файле 4,01 Гб вылетело на предпоследнем виде дока
3.При ДАТ-файле 4 Гб вылетело на последнем виде дока. Т.е. предпоследний был загружен целиком (а их мало в базе, этих доков, и последнего, и предпоследнего, их относительно недавно ввели, ещё нашлёпать юзвери не успели в большом количестве), а последний (причём не в полном объёме) оказался уже за каким-то "пределом"
93 Лефмихалыч
 
26.03.07
10:45
(92) да суета это все и не серьезно, на таких объемах проще скульным BACKUP/RESTORE DATABASE пользоваться и не лохматить бабушку. И быстре и правильнее
94 pavel_tr
 
26.03.07
10:53
(92) выгрузка и загрузка это не то же самое, что BACKUP/RESTORE, вот в чём проблема!
95 pavel_tr
 
26.03.07
10:58
+(91) начал загрузку второй версией плагина. Посмотрим что получится
96 romix
 
модератор
26.03.07
11:03
(93) Да, но иногда надо переносить из большой DBF в SQL.
97 Лефмихалыч
 
26.03.07
11:06
(96) иногда - надо, только вот как (0) в этом поможет камраду pavel_tr?..
98 pavel_tr
 
26.03.07
11:54
(97) я объясню как. У нас базой достаточно долго никто не занимался, поэтому когда переходили на SQL она стала уже слишком большой для выгрузки-загрузки. Выкрутились тем, что убили 2 доп.регистра (ДАТ-файл был ровно 2 Гб, успели в самый последний момент - плагина тогда не было ещё), а потом перепроводили документы за 2 года (тогда были введены эти регистры). Сейчас живём на сиквеле, встал вопрос об обрезке. В принципе и сейчас можно обрезать, на копии уже всё оттестировал, но к примеру - в одном регистре (измерения: накладная,вид оплаты, клиент + ресурс: сумма) есть глючные данные (начиная с 1997 года по остаткам переходит сумма по клиенту, которая хз откуда взялась, а поле накладная пустое). Соответственно, при свёртке по этому клиенту остатки получаются неправильными. Если сделать выгрузку-загрузку конкретно этот, и многие подобные глюки можно вылечить
99 pavel_tr
 
26.03.07
13:02
Невероятно!!!!!! Со второй версией плагина (грузил тот же самый 4 Гб-шный ДАТник) индикатор дошёл до того же самого дока, что и в (82) И ПРОСТО ЗАКРЫЛСЯ! Нкаких сообщений об ошибке не было, молча отвалился и привет!
Роман, какие будут предположения?
100 pavel_tr
 
26.03.07
13:05
+(99) в смысле конфигуратор закрылся, вот :-(
101 pavel_tr
 
26.03.07
13:18
Интересное кино, а в процессах 1Ска висеть-то осталась... Весело она отвалилась!
102 pavel_tr
 
26.03.07
15:07
Со второй попытки со старой версией плагина отвалилась уже не молча, а с той же ошибкой, что и раньше. Неужели нельзя этот глюк преодолеть?
103 romix
 
модератор
26.03.07
15:16
(99) ОК буду смотреть.
(102) А полностью текст ошибки как выглядит? (если взять его в буфер по Ctrl-C)
104 pavel_tr
 
26.03.07
15:22
(103) Пасибо!
Могу 3й раз попробовать загрузить, если надо, но в (81) это дословно было:
Красный кружочек с крестиком (т.е. сообщение об ошибке), текст: "Ошибка загрузки данных" и кнопка ОК, больше ничего.
Попробуй, если есть возможность, сделай ДАТ файл больше 4 Гб, увидишь. Буду рад потестить новую версию плагина ;-)
105 romix
 
модератор
26.03.07
15:26
(104) ок
106 sliders
 
26.03.07
16:41
Привет.
База в DBF 3,2Gb
Хочу перевести в SQL
Вот сейчас и потренеруемся :)

p.s запустил тест. и испр. пока...
107 pavel_tr
 
26.03.07
16:51
(106) ИМХО такая база выгрузится стандартными средствами 1С, ДАТ-файл явно меньше 2 Гб должен получиться
108 pavel_tr
 
28.03.07
13:04
Ну что, нет пока новостей?
109 mcltd
 
29.03.07
17:12
хорошая ветка, только вот где окончание? получилось или нет?
110 mcltd
 
30.03.07
17:07
АП
111 romix
 
модератор
30.03.07
18:08
э-э-э приеду домой посмотрю как оно выгружается...
112 pavel_tr
 
02.04.07
11:29
ап
113 Иде я
 
02.04.07
11:31
А плагин ускоряет выгрузку или тока лечит ?
114 pavel_tr
 
02.04.07
11:33
Лечит. Но пока вылетает на ДАТ-файле > 4 Гб. Ждём вердикта Романа, взлетит или нет
115 Vinny
 
02.04.07
11:40
Поясните практический смысл ращработки...
Ну выгрузил я базу 15 Гб в 1С архив (2 часа времени, против 30 минут SQL архивированием)...
А поднимать я ее буду 1,5 суток, да??
И на фиг?
Цифры названы близкие к реалиям ...
116 Vinny
 
02.04.07
11:41
Тока если переходить с ДБФ...
117 romix
 
модератор
02.04.07
13:20
(114) На выходных ковырял - вылет действительно на 4 гб.
Есть подозрение что она все загружает, но на закрытии файла делает какое-то доп. действие (типа позиционирования в конец файла). Сегодня еще посмотрю.
118 pavel_tr
 
02.04.07
13:21
(117) пасибо большое! С нетерпением жду результатов
119 pavel_tr
 
02.04.07
13:22
(115) у нас база SQL. Ценность см (98)
120 pavel_tr
 
02.04.07
13:23
+(117) да, всё она не загружает! См. раньше посты - на ДАТнике в 4,01 Гб вылетала на ПРЕДПОСЛЕДНЕМ доке, т.е. грузила не до конца
121 pavel_tr
 
03.04.07
23:08
апну
122 romix
 
модератор
03.04.07
23:36
а-а-а надо делать а не получается. Ладно сейчас отключусь повтыкаю еще.
123 OlegNA
 
03.04.07
23:41
Может быть материально какнибудь помочь?
124 pavel_tr
 
04.04.07
10:19
(123) поддерживаю
125 pavel_tr
 
05.04.07
12:14
вверх
126 mcltd
 
05.04.07
15:33
up
127 pavel_tr
 
06.04.07
16:38
вверх
128 pavel_tr
 
09.04.07
15:58
Ну что, списываем проблему как неподдающуюся лечению? :-(((
129 romix
 
модератор
09.04.07
16:10
(128) А данные точно не загружаются?
Например если загрузить, дождаться вылета, и сделать тестирование и исправление?
130 pavel_tr
 
09.04.07
16:15
Честно говоря, после вылета не тестировал, ориентировался только на счётчик при загрузке. До завтра могу попробовать на копии, отписать (хотя уверен почти на 100%, что не догружает)
131 romix
 
модератор
09.04.07
16:21
Я пытаюсь заменять функции
CBufdFile::Open(char const *,unsigned int,class CFileException *)
CBufdFile::Read(void *,unsigned int)
Че-то вылетает, но по идее должно работать.
Сейчас еще попробую.
132 pavel_tr
 
09.04.07
16:24
Ты сюда запость как выложишь обновлённую версию, я сразу оттестирую. Тот ДАТник вылетучий храню (для чистоты эксперимента)
133 romix
 
модератор
09.04.07
16:32
(132) ОК
134 mcltd
 
11.04.07
17:34
up
135 pavel_tr
 
12.04.07
23:15
всплываем
136 andrewalexk
 
13.04.07
10:33
(135)
:)
да что зря апать - ромикс как сделает так и продолжим..
137 pavel_tr
 
13.04.07
11:01
дык просто не терпится, понимаю, что только ждать и остаётся пока ;-)
138 andrewalexk
 
13.04.07
11:09
(137)
:)
что у нас там Бендер (который Остап) говорил
в ответ на "хочется же побыстрее.."(с)?
;)
139 romix
 
модератор
13.04.07
11:35
а-а-а
У меня че-то глухо...
Почему он валится - непонятно, ведь предел 2 гига у SetFilePointer...
Я отрубил этот SetFilePointer, теперь валится на 4 Гб. А где это может быть ограничение..

Там еще один возможный путь - перехватить и подменить функции более высокого уровня ("получить следующий символ"), вот это наверное прокатит...
Только она цуко валится все время...
140 pavel_tr
 
13.04.07
12:04
(139) а молодцы одинеснеги! Столько багов в одной служебной операции... :-(
141 mcltd
 
14.04.07
16:01
up
142 SnarkHunter
 
14.04.07
16:15
(139)На какой файловой системе работаешь?
143 ildus
 
15.04.07
23:34
надо требовать от нуралиева открыть исходники 1С 77, если не захочет по доброму - может забастовку всех одинеснегов и франчей устроим?
144 mcltd
 
17.04.07
13:22
up
145 Иде я
 
17.04.07
13:30
Кому нужон ентот 1С и его исходники ? Им платят деньги - пусть сами и исправляют
146 1Снег
 
17.04.07
13:51
romix => А не получиться разбивать выгрузку и загрузку на несколько DAT-файлов меньших 2 Gb ????
147 1Снег
 
17.04.07
13:53
т.е. при загрузке после 1Cv77.dat "подсказать" 1С обрабатывать еще и файлы 1Cv77_01.dat, 1Cv77_02.dat
148 romix
 
модератор
17.04.07
14:11
а-а-а
там видимо надо заменять класс для работы с файлами в type32.dll - щас немножко тут разрулю конфу засяду...
149 pavel_tr
 
17.04.07
18:01
Надежда теплится! :-)
150 Злопчинский
 
18.04.07
00:21
Зрителии на треке с интересом наблюдают как Шумахер содится в болид
151 Darly
 
18.04.07
08:26
Привет!
Странные дела - база DBF 3,2 гига выгружается с патчем и без...
Только у меня без проблем?
Есть, правда, своя заморочка - потом в SQL сальдо по некоторым счетам не так считает.
152 SnarkHunter
 
18.04.07
08:28
>> база DBF 3,2 гига

Проблема не в размере базы, а в размере получаемого файла выгрузки...
153 Darly
 
18.04.07
08:35
Выгрузка штатно - 72,1Mb (.zip), с патчем - 736 Mb (dat)
154 SnarkHunter
 
18.04.07
08:37
И что?
155 Unforgiven
 
18.04.07
08:39
(153)Сожми ДАТ и увидешь результат
ГЫ стиишок (с)
156 1Снег
 
20.04.07
08:44
=> Romix  Есть ли результаты?
157 mcltd
 
20.04.07
21:11
up
158 romix
 
модератор
20.04.07
22:00
а-а-а щас еще помучаю
159 pavel_tr
 
21.04.07
00:40
Жми, Рома!!!! :-)))
161 user314159
 
23.04.07
17:11
Выражаю благодарность создателю. Выручил. SQL база размером 5,5Гб 1Cv77.dat 2,5Гб все прошло удачно.
162 mcltd
 
24.04.07
20:37
romix
как движется?
163 mcltd
 
27.04.07
16:23
up
164 pavel_tr
 
28.04.07
14:10
поднимем
165 mcltd
 
30.04.07
13:54
up
166 mcltd
 
03.05.07
20:44
up
167 andrewalexk
 
04.05.07
10:49
(166)
:)
зануда
не виси у ромикса над душой..
как сделает так и апнет
168 mcltd
 
14.05.07
14:44
up
169 mcltd
 
21.05.07
14:55
up
170 mcltd
 
25.05.07
13:08
Romix! Скажите пожалуйста, как у вас продвигаются дела!!!
171 Мулька
 
25.05.07
13:10
Эко придавило. Невтерпеж прям :))
172 mcltd
 
25.05.07
18:58
да не придало!!!!
но все может быть в этой жизни!!
173 mcltd
 
04.06.07
12:39
up
174 romix
 
модератор
04.06.07
12:50
(173) Вы с этим сталкиваетесь? (выгрузка > 4Гб)
175 ildus
 
04.06.07
22:37
ИМХО чтобы замутить вугрузку-загрузку > 4Гб, проще всего написать для этого альтернативную утилиту, чем ковыряться в бинарниках 1С
176 pavel_tr
 
05.06.07
01:42
(175) это просто мнение или обещание реализовать? ;-)
177 mcltd
 
05.06.07
10:55
(174) возможно скоро столкнусь
178 ildus
 
05.06.07
11:59
(176) мнение, т.к. мне это пока не нужно
179 mcltd
 
25.06.07
17:07
up
180 romix
 
модератор
25.06.07
17:34
Разобрался я вчера с MFC (пока писал вопрос на wasm.ru - все сам понял).
Волшебная сила форума...
Книга знаний: Символьная информация из MFC42.dll в отладчике SoftICE
Насколько я понял там библиотека MFC не поддерживает файлы длиной > 4Гб.
Функцию BkEnd!?NextChar@CDB7Stream@@UAEXXZ попробую щас подменить простым побайтовым чтением файла.
Там возвращает считанный символ в [ecx+38h].
Хэндл файла принимает в [ecx+04] по смещению 4.
181 Sasha_H
 
25.06.07
17:47
Угумс... сообщишь. А то у меня получилось так, что файл больше 1Гб или 2Гб и все выдает ошибку (79)
182 mcltd
 
25.06.07
20:13
ждем
183 romix
 
модератор
26.06.07
03:45
Функцию заменил (заодно слип вставил, чтобы остальные задачи не тормозило)...
Проверяю загрузку большой базы...
184 mcltd
 
26.06.07
12:30
молодец
185 ZanderZ
 
26.06.07
12:31
(183) когда провериться то ???????
186 andrewalexk
 
26.06.07
12:46
(185)
:)
"быстро только кошки родятся.."(с)
187 ZanderZ
 
26.06.07
12:48
(186) протсто очень актуальный вопрос для меня на сейчас :)
188 andrewalexk
 
26.06.07
13:07
(187)
:)
как и для  mcltd..
но быстро только сказка сказывается..
;)
189 romix
 
модератор
26.06.07
13:12
Если файл выгрузки (DAT) до 4 Гб, то загрузка работает.
190 romix
 
модератор
26.06.07
13:13
Я сейчас ковыряю - замену функции сделал, где-то она под конец все равно падает цуко, при закрытии что ли.
191 ildus
 
26.06.07
21:59
какую функцию чем заменил? из какой библиотеки?
192 romix
 
модератор
26.06.07
22:39
(191) Полностью переписал

//Функция-перехватчик ?NextChar@CDB7Stream@@UAEXXZ
//public: virtual void __thiscall CDB7Stream::NextChar(void)

Вроде работает. Почему валится на 4-гиговых выгрузках в конце загрузки, непонятно. Щас еще перехват на SetFilePointer верну проверю - не вызывается ли где-то в конце.
193 romix
 
модератор
26.06.07
22:50
С маленькой базой все четко прошло. Поставил загружаться большую.
Что хорошо - теперь загрузка проц не так сильно вешает (я вставил слип). :-)
194 romix
 
модератор
27.06.07
00:45
Где-то лезет исключение, причем до конца файла не доходит.
Видимо, где-то есть счетчик байтов, который переполняется при достижении границы 4 гига.
195 pavel_tr
 
27.06.07
02:04
таки проблема остаётся нерешённой?
196 FlashC
 
27.06.07
02:20
romix - я конечно дилетант, но мне кажется что проблема не в Тебе, а в "4 гига" и 1С! Повторяюсь что "дилетант" но может разбить?!
197 FlashC
 
27.06.07
02:22
+(196) Просто никто не замечал, что 77 не любит большие объёмы, особенно >4гигов!
198 romix
 
модератор
27.06.07
12:08
(195) Исключения искать трудно.

Там можно поступить так: поскольку выдает текстовую строку с сообщением об ошибке, можно поставить прерывание на обращение к этой строке.

Другой вариант: поскольку ошибка воспроизводится, поставить прерывание на все операторы вызова исключения (их там может быть несколько) и смотреть адрес точки вызова в стеке.
199 SnarkHunter
 
27.06.07
12:24
(198)Я уже как-то раз спрашивал... На какой файловой системе все это тестируется?
200 romix
 
модератор
27.06.07
12:31
NTFS. Сам файл размером примерно 4,5 гига на диске лежит.
201 ildus
 
27.06.07
18:02
(192) так можно и весь dbeng32 переписать со всеми классами
202 romix
 
модератор
27.06.07
18:44
(201) Щас домой приду буду искать где вылезает исключение.
Самобан что ли попросить чтобы не отвлекаться. :-)
203 smaharbA
 
27.06.07
18:47
(202) Нет уж ты давай не отлынивай, а кто нам будет про Луну рассказывать ))
204 victuan1
 
29.06.07
06:19
Ну и? Никак?
205 romix
 
модератор
02.07.07
09:56
Добил я ошибку с 4-гиговыми базами (меню Администрирование - Загрузить данные)!

Миста почему-то у меня была недоступна для меня в выходные...
Действовал по (198-2), нашел функции которые имеют 4-гигабайтное ограничение, переписал их

?Checkpoint@CDB7Stream@@QAEXXZ
?GetSinceCheckpoint@CDB7Stream@@QBEJXZ

Заодно добавил индикацию процента загрузки в трее (например, 45,8%) и слип (1 мс каждые 64 килобайт), чтобы загрузка не подвешивала систему...
206 romix
 
модератор
02.07.07
11:06
Нуралиеву что ли письмо написать...
207 mcltd
 
02.07.07
12:08
(206) можно поздравить со снятием ограничения и в 4Гб?
208 ildus
 
02.07.07
12:19
>> Миста почему-то у меня была недоступна для меня в выходные...
(205) сам же самобан просил в (202) :)
209 romix
 
модератор
02.07.07
12:22
(207) Ага
(208) Вряд ли...
В любом случае это подействовало. :-)
210 ildus
 
02.07.07
12:34
теперь на очереди избавление от появления нулевых записей в таблицах итогов регистров rg*.dbf
211 romix
 
модератор
02.07.07
13:37
Мне понравился сервер вопросов пользователей Яндекса к Путину, когда популярные вопросы (например, "как вы относитесь к медведу") выделяются большим шрифтом. Может то же самое пора сделать для пожеланий к 1С...
212 mcltd
 
02.07.07
14:48
(211) ПОЗДРАВЛЯЮ!!!
то есть можно качать полноценный комплект по ссылке вверху?
213 romix
 
модератор
02.07.07
15:28
(212) Да, попробуйте пож. кому интересно выгрузить и загрузить большую базу.
Я тестировал на той базе, которая там приложена в комплекте (BigBase.rar).
214 pavel_tr
 
03.07.07
14:02
Ура! Огромное спасибо автору!! Сейчас будем тестить...
215 ILIAS
 
04.07.07
10:13
Установил плагин v5, но при выгрузке SQL базы 14гб все равно выдает ошибку :(
216 romix
 
модератор
04.07.07
12:01
(215) Проверяю...
217 romix
 
модератор
04.07.07
12:44
(215) База в комплекте выгрузилась и загрузилась нормально...
Там когда задаст вопрос надо ответить "Да" (иначе попытается упаковывать DAT в ZIP).
218 Malegor
 
04.07.07
15:47
Установил плагин v5, но при загрузке базы все равно выдает ошибку. dat-овский файл 1.5 гб.вся база 6 гб.
219 romix
 
модератор
04.07.07
15:51
(218) А тот DAT что идет в комплекте - загружается нормально?
220 romix
 
модератор
04.07.07
15:52
Может у нас разный релиз? У меня 25-й..
221 ILIAS
 
04.07.07
15:52
(217) Спасибо !
С ответом "Да" база выгрузилась - уже хорошо.
Хотел загрузить ее в формате DBF, но вышла ошибка CODEBASE - файл 1SENTRY больше 2х гигов. Это к сожалению уже не победить :(
222 romix
 
модератор
04.07.07
15:54
(221) А в сиквельную загружается?
223 romix
 
модератор
04.07.07
16:37
(221) Я вот думаю, а ведь предел-то должен быть 4 гига на DBF файл. А там 2 гига.
Думаю а не поправить ли SetFilePointer, если там идет
dwMoveMethod=FILE_BEGIN
и отрицательное смещение в lDistanceToMove (которое на самом деле - значения от 2 до 4 гигов).
224 Malegor
 
04.07.07
17:07
у меня база дбф-ная не загружается не в сиквельную не в дбф-ную релиз 25 вылетает во время загрузки справочника контрагенты. Ошибка загрузки данных.
225 romix
 
модератор
04.07.07
17:36
(224) Попробуй создать заново пустую базу SQL, создать в конфигурации константу и сохранить конфигурацию. После этого должно нормально загружаться.

DAT файл такого объема по идее поддерживает и стандартная 1С без изменений (предел 2 гига).
226 ildus
 
04.07.07
18:43
(223) даже не 2 а 1 в разделенном режиме.
227 romix
 
модератор
04.07.07
20:00
(226) hogik в Kernel33 перехватывает LockFile и UnlockFile и делает следующее:


; BOOL __stdcall LockFile(HANDLE hFile,
                          DWORD dwFileOffsetLow,
                          DWORD dwFileOffsetHigh,
                          DWORD nNumberOfBytesToLockLow,
                          DWORD nNumberOfBytesToLockHigh)
                public LockFile
LockFile        proc near

var_8           = dword ptr -8
var_4           = dword ptr -4
hFile           = dword ptr  4
dwFileOffsetLow = dword ptr  8
dwFileOffsetHigh= dword ptr  0Ch
nNumberOfBytesToLockLow= dword ptr  10h
nNumberOfBytesToLockHigh= dword ptr  14h

//Загружает Kernel32
                mov     ecx, dword_1000ACE8
                test    ecx, ecx
                jnz     short loc_1000102D
                push    offset aKernel32_dll ; "Kernel32.dll"
                call    ds:LoadLibraryA_0
                mov     ecx, eax
                mov     dword_1000ACE8, ecx

//Определяет адрес LockFile

loc_1000102D:                          
                mov     eax, dword_1000ACEC
                test    eax, eax
                jnz     short loc_10001047
                push    offset aLockfile ; "LockFile"
                push    ecx
                call    ds:GetProcAddress_0
                mov     dword_1000ACEC, eax


loc_10001047:                          
                mov     ecx, [esp+nNumberOfBytesToLockHigh]
                push    ecx  //5-й параметр nNumberOfBytesToLockHigh

                mov     edx, [esp+nNumberOfBytesToLockLow]
                push    edx  //4-й параметр nNumberOfBytesToLockLow

                mov     ecx, [esp+4+dwFileOffsetHigh]
                push    ecx  //3-й параметр dwFileOffsetHigh

                mov     edx, [esp+8+dwFileOffsetLow]
                add     edx, 80000000h  
                push    edx  //2-й параметр dwFileOffsetLow

                mov     ecx, [esp+0Ch+hFile]
                push    ecx  //1-й параметр hFile

                call    eax
                retn    14h
LockFile        endp


Интересно что бы это значило: add     edx, 80000000h  
Вечером отладчиком посмотрю... Похоже, что-то странное.
228 romix
 
модератор
04.07.07
20:01
Если нечто подобное сделать с SetFilePointer, то предел 4 гига будет на одну DBF-ку...
229 ildus
 
04.07.07
20:35
(227) начало участка блокировки в файле смещается на 2 гигабайта зачем-то
230 romix
 
модератор
05.07.07
11:31
Апну... У кого-нибудь получилось выгрузить и загрузить хотя бы пример в комплекте?
231 Malegor
 
05.07.07
12:26
У меня загрузилось проблема была в наличии общего поля неограниченной длины
232 romix
 
модератор
05.07.07
17:50
Мне пишут в почту:

"Использовал Ваш Плагин для лечения выгрузки и загрузки больших баз в 1С 7.7 - Спасибо большое из Кишинева".

Похоже вроде бы все в порядке...
233 andrewalexk
 
09.07.07
11:18
(225)
:)
а зачем в пустой конфе создавать константу?
типа бага такая для всех релизов 7.7?
234 andrewalexk
 
09.07.07
12:59
(233+)
:)
и еще у меня при потере
окном конфигуратора в режиме загрузки
активного фокуса "умирает" прогресс-бар
(даже просто при автоблокировке сеанса компьютера)
но нагрузка на компьютер 1сv7.exe+sqlserver.exe
остается..
типа фича такая?
235 romix
 
модератор
09.07.07
15:54
(233) Похоже на то - иначе выдает ошибку (и в исходной 1С - так же).
(234) А сама загрузка нормально прошла? Я тоже кажется что-то такое наблюдал на XP SP2, а на Win 2000 SP4 все было ок. Попробую поправить...
236 andrewalexk
 
09.07.07
16:25
(235)
:)
нормально
2.2Г дат
браво маэстро
..
:)
точно!
ХП СП2
..
а ведь есть еще Виста..
;)
237 Vinny
 
09.07.07
20:01
Млин... ну бывает же такое...
Крутая вещь, многа разговоров... Абсолютно бесполезна в 90 % случаев...
Ну поясните мне есчо раз...
Если я имею базу в архиве более 2 Гб, и она не SQL то значит она ДБФ? а как можно хранить такие объемы в базах ДБФ. Любой сбой в работе 1С приведет к переиндексации базы, что займет ... скока-скока времени?
Это ошибка администратора системы - он либо не тот продукт купил, либо базу не умеет "резать". Выгрузка такой базы займет несколько часов, а загрузка - несколько суток.
Если это база SQL то проще и быстрее пользовать SQL backup. Быстрее как создание архива, так и его подъем. И никаких проблем с размерами файлов там нет в принципе.
Хотя как вешь в себе - хорошая штука.
Что касаетца описанного в (98)... Так господа, млин, не надо изза собственной лени в изучении механизмов базу уродовать. Когда нам приспичило, мы вот каким-то чудом нашли и способ DBA расковырять и скрипты для SQL backupa наваять, чтоб все автоматом в темной ночи работало... а базу тронать не стали, незачем это делать...
238 romix
 
модератор
10.07.07
00:49
(237) Сиквельный бэкап конечно же намного лучше.
Данный же бэкап служит для переноса разросшихся баз в SQL, а также иногда для того чтобы перестроить таблицы при каких-то тормозах или косяках (т.к. идет выгрузка и загрузка в платформо-независимый формат). Ну и этот бэкап более компактный (мало ли придется базу на флэшку умещать или по FTP ее пересылать).
239 Злопчинский
 
10.07.07
01:03
Ромикс! Ну их, этих крети..тьфу..критиканов...!
Пусть выложат свой этот как его .. рецепт подробный
"Когда нам приспичило, мы вот каким-то чудом нашли и способ DBA расковырять и скрипты для SQL backupa наваять, чтоб все автоматом в темной ночи работало." а потом пусть возникают!
240 romix
 
модератор
10.07.07
13:10
Поправил показ окна с процентом загрузки в XP SP2.
Теперь бодренько так циферки бегут в трее...
241 ZanderZ
 
10.07.07
13:13
(240) молодец будем посмтортеть
242 andrewalexk
 
10.07.07
13:19
(240)
:)
орел!
243 romix
 
модератор
10.07.07
14:02
Еще раз запустил проверку...
Загрузка в пустую базу (если создать там константу и сохранить пустую конфу) прошла нормально.
244 igorluk
 
10.07.07
17:41
(237) тебе бесполезно так и не читай ветку... от жиж...
подолбал бы лутше 1ссину шо они заложили бомбу и плевали на пользователей, чем фигней занимацца.
245 Malegor
 
10.07.07
17:57
ребята немного не по теме, мот кто подскажет:перекидывал из дбф на sql загрузилась вроде нормально база , доки все проведенные висят, но если смотришь оборотку, то она показывает, что никаких проводок не было... И регистры пусты тоже...
246 romix
 
модератор
10.07.07
20:51
(244) Да никто не плевал, не факт что они сами провозились бы меньше.
Да и у них там наверное километровые списки пожеланий, не знают за что братся.

(245) А попробуй точку актуальности сдвинуть (Операции - Управление оперативными итогами)...
247 igorluk
 
11.07.07
11:30
(246) бывал я на семинарах 1с. больше всего удивляет то что проблемы на которые жалуются их же партнеры им давниым давно известно. а если так то почему бы не исправить? думаю разработчику с исходником легче разбираться чем тебе с дизасемблированием. :)
248 romix
 
модератор
11.07.07
13:04
(247) В сишном исходнике бывает еще сложнее разобраться. :-)