Имя: Пароль:
1C
1C 7.7
v7: Codebase Error - 70
,
0 Mafiozaa
 
21.09.21
07:00
Приветствую, рухнула файловая база, при получении обновления от центральной базы, выпадает ошибка см. в теме, ругается на RG9495.CDX, поглядел что это какой то регистр, вопрос, решится ли моя беда, если я удалю этот файл и сделаю реиндексацию, или придется делать пересчет итогов в тестировании и исправлении, что очень бы не хотелось
1 Il19
 
21.09.21
07:23
Размер дбф файла какой? И сколько записей в нем?
2 Mafiozaa
 
21.09.21
08:00
(1) 68 966 КБ DBF, 34 769 КБ CDX
3 Mafiozaa
 
21.09.21
08:01
+ (2) Судя по размеру, до лимита еще далеко
4 Mafiozaa
 
21.09.21
08:02
(1) Сделал копию, попробывал удалить CDX и сделать переиндексацию, заругался на dbf, бросил эту затею, накатил копию, пусть пока работают пока решение не найду)
5 ДенисЧ
 
21.09.21
08:13
RG можно смело удалить и пересчитать итоги (не перепроводить!)
6 Mafiozaa
 
21.09.21
08:16
(5) Боюсь что будет очень долго пересчитывать, а у магазина простой, машинки слабенькие
7 Il19
 
21.09.21
08:42
(4) и что за ошибка?
И вьювером глянь что в дбф
8 Mafiozaa
 
21.09.21
08:58
(7) Не совсем умелец им пользоваться, но я так полагаю если зеленая галочка в строке, значит все ок?
9 Mikeware
 
21.09.21
09:00
1. сделать свежую копию (с испорченым файлом) [заодно закинуть е в бэкап]
2. из копии удалить все RA кроме соответствующего проблемному, и все RG
3. пересчитать итоги в копии (это будет быстро, фактически - один регистр)
4. перекинуть в рабочую RG и его индекс (будут некорректны текущие остатки по этому регистру). запретить на всякий случай работать раньше текущей даты.
5. как будет время даунтайма - сдвинуть ТА на конец прошлого периода остатков и вернуть  назад на последний док для пересчета последнего периода в RG (без перепроведения)
(пересчитаются итоги за последний период)
6. перепровести доки с "момента сбоя" до последнего документа
10 Злопчинский
 
21.09.21
10:10
Для начала тупо удалить все цдх и перестроить индексы заново
11 Mikeware
 
21.09.21
10:26
(10) так он удалил индекс. 70 ошибка - это "разрушен файл данных", если правильно помню.
12 Mafiozaa
 
21.09.21
10:53
(10) Я удалил этот RG9495.CDX, не все конечно, а один, зашел монопольно началось реиндексирование, и вылетела ошибка -70 но уже на RG9495.DBF
Щас вьювером прошелся,везде зеленые галочки
13 Ёпрст
 
21.09.21
11:03
(12) см (11)
14 Mikeware
 
21.09.21
11:11
(12) с написания (9) прошло 2 часа. Сделал?
15 hogik
 
21.09.21
23:53
(0)(11)
-70
Reading File.
An error occurred while reading a file. This could be
caused by calling d4go with a nonexistent record
number.
16 hogik
 
22.09.21
00:01
int d4go( DATA4 *data, long recordNumber )
Function d4go reads the specified record into the record buffer and recordNumber
becomes the current record number. Before reading the new record, d4go writes the
current record buffer to disk if the record changed flag is set.
If memory optimizations are being used, use d4skip instead of d4go when
sequentially reading data file records. When memory optimizations are used,
CodeBase detects the sequential skipping and automatically optimizes the operations
when d4skip is used.
Parameters:
recordNumber
This long value specifies the physical record number to read into the record buffer. To
succeed, recordNumber must be
> 0 and <= d4recCount .
17 hogik
 
22.09.21
01:31
(8)
Не факт.
(0)
Чаще всего такая ошибка возникает из-за порчи заголовка DBF.
Или длина файла не соответствует значению «Число записей в файле».
=================================================================

Структура базы данных (типа .DBF)

     Файл базы данных состоит  из  записи  заголовка и записей
с данными.  В записи  заголовка  определяется  структура  базы
данных и содержится вся другая информация, относящаяся  к базе
данных. В файле она начинается с нулевой позиции.
     Записи   с   данными*   следуют   за  заголовком   (байты
располагаются последовательно)  и включают  в себя фактическое
содержимое   полей.  Длина   записи  (в байтах)   определяется
суммированием указанных длин всех полей. Числа в данном  файле
размещаются в обратном порядке.

╔══════════════════════════════════════════════════════════╗
║         Запись заголовка в файле с данными               ║
╟───────┬──────────────────────────────────────────────────╢
║ Байты │              Описание                            ║
╠═══════╪══════════════════════════════════════════════════╣
║ 00    │Типы файлов с данными:                            ║
║       │ FoxBASE+/dBASE III +, без memo - 0х03            ║
║       │ FoxBASE+/dBASE III +, с memo   - 0х83            ║
║       │ FoxPro/dBASE IV,      без memo - 0х03            ║
║       │ FoxPro                с memo   - 0хF5            ║
║       │ dBASE IV              с memo   - 0x8B            ║
╟───────┼──────────────────────────────────────────────────╢
║ 01-03 │Последнее изменение (ГГММДД)                      ║
╟───────┼──────────────────────────────────────────────────╢
║ 04-07 │Число записей в файле                             ║
╟───────┼──────────────────────────────────────────────────╢
║ 08-09 │Положение первой записи с данными                 ║
╟───────┼──────────────────────────────────────────────────╢
║ 10-11 │Длина одной записи с данными (включая признак     ║
║       │удаления)                                         ║
╟───────┼──────────────────────────────────────────────────╢
║ 12-27 │Зарезервированы                                   ║
╟───────┼──────────────────────────────────────────────────╢
║ 28    │1-есть структ.составной инд.файл (типа .CDX),0-нет║
╟───────┼──────────────────────────────────────────────────╢
║ 29-31 │Зарезервированы                                   ║
╟───────┼──────────────────────────────────────────────────╢
║ 32-n  │Подзаписи полей**                                 ║
╟───────┼──────────────────────────────────────────────────╢
║  n+1  │Признак завершения записи заголовка (0х01)        ║
╚═══════╧══════════════════════════════════════════════════╝

╔══════════════════════════════════════════════════════════╗
║                    Подзаписи полей                       ║
╟───────┬──────────────────────────────────────────────────╢
║ Байты │                Описание                          ║
╠═══════╪══════════════════════════════════════════════════╣
║ 00-10 │Название поля (максимально - 10 символов, если    ║
║       │меньше 10, то дополняется пустым символом (0х00)) ║
╟───────┼──────────────────────────────────────────────────╢
║ 11    │Тип данных:                                       ║
║       │ C - символьное;                                  ║
║       │ N - числовое;                                    ║
║       │ L - логическое;                                  ║
║       │ M - типа memo;                                   ║
║       │ D - дата;                                        ║
║       │ F - с плавающей точкой;                          ║
║       │ P - шаблон.                                      ║
╟───────┼──────────────────────────────────────────────────╢
║ 12-15 │Расположение поля внутри записи                   ║
╟───────┼──────────────────────────────────────────────────╢
║ 16    │Длина поля (в байтах)                             ║
╟───────┼──────────────────────────────────────────────────╢
║ 18-32 │Зарезервированы                                   ║
╚═══════╧══════════════════════════════════════════════════╝

     Примечания по структуре файла с данными:

       *  Данные  в  файле  с  данными начинаются с позиции,
     указываемой в записи  заголовка в байтах  08-09. Записи
     с  данными  начинаются  с  байта,  содержащего  признак
     удаления. Если в этот байт занесен пробел в коде  ASCII
     (0х20), то запись не удалялась; если же в первом  байте
     -  звездочка  (0х2A),  то  запись удалена. За признаком
     удаления  следуют  данные  из  полей,  названия которых
     находятся в подзаписях полей.

       **  Количество  полей  определяет  число   подзаписей
     полей.  В базе данных для каждого поля существует  одна
     подзапись поля.   *** Ограничения по  количеству знаков
     в записи, максимальному числу  полей и т.д. смотрите  в
     данном приложении в таблице "Системные возможности".
18 victuan1
 
22.09.21
06:14
Возможно, нарвался (0) на другой лимит - слишком большое кол-во записей в файле dbf (может быть при любом объеме файла, если записи короткие).
19 Mikeware
 
22.09.21
08:29
(18) маловероятно. в RG как минимум период, т.е. 8 байт+измерение+ресурс (пусть даже вместе запись 10 байт). Записей в ДБф - 2^30. Т.е. такой файл уже вылазит за 10Г
20 Mafiozaa
 
22.09.21
08:34
(18) При чтении дбфки вижу 1387121 записей, скажите а допустимо ли, что запись есть но абсолютно пустая
Например:
PERIOD   SP9491   SP9492   SP9493   SP9494
*Есть*   *Есть*   *Есть*   *Есть*   *Есть*

А в самом низу таблицы н-ное кол-во записей
PERIOD   SP9491   SP9492   SP9493   SP9494
*Пусто*   *Пусто*   *Пусто*   *Пусто*   *Пусто*
Но при этом галка зеленая
21 Mikeware
 
22.09.21
08:36
22 Mafiozaa
 
22.09.21
08:38
(21) Галченок)))
23 Mikeware
 
22.09.21
08:39
(22) тебе дали методику решения сутки назад. А ты в дерьме ковыряешься, пытаешься исправить вторичные (которые все равно расчитываются) данные.
24 tgu82
 
22.09.21
08:42
(22) Скорее всего именно не соответствует реальное количество записей количеству записей в заголовке дбф файла. я когда-то на турбопаскале написал утилитку для исправления клипперовских баз. В инете видел такие утилитки
25 Mafiozaa
 
22.09.21
08:44
(23) При твоем способе магазину надо закрыться на момент всей этой процедуры, дабы они не создавали новые доки, и не шевелили регистр, а этого мне нельзя делать, даже если я все сделаю на копии, и переброшу это на боевую, все это время они не должны шевелить регистр, иначе бестолку
26 Mafiozaa
 
22.09.21
08:45
(23) Единственное, сделать это в ночную)
27 Mafiozaa
 
22.09.21
08:45
Кстати, а почему мне простой пересчет итогов не поможет?
28 Mikeware
 
22.09.21
08:46
(25) простой 2 раза по5 минут в рабочее время для _оперативного_ ввода в работу. и 20 минут в даунтайм
Впрочем ССЗБ
29 Mikeware
 
22.09.21
08:47
(27) потому, что отношение радиусов стремится к нулю
30 Mafiozaa
 
22.09.21
08:48
(29) Я тебя услышал братулец, спасибо за то что вверху)
31 hogik
 
22.09.21
21:10
(20)
«скажите а допустимо ли»(с)
В CodeBase - допустимо. А в способах/алгоритмах работы 1С с CodeBase - не допустимо.
В 1С+CodeBase такое может образоваться при сбое в момент фиксации транзакции.
32 Mafiozaa
 
23.09.21
10:49
(29) Твой способ проблему не решил, проблема была именно в пустых ссылках, после их удаления, все завелось
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший