Склеивание двух 1CD-файлов в один

16.04.14

Разработка - Инструментарий разработчика

Склеивание двух 1CD файлов в один, когда "свежий" файл физически не читается, но есть старый читаемый файл.

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Bad1CD.rar
.rar 5,02Kb
57
57 Скачать (1 SM) Купить за 1 850 руб.

Столкнулся с ситуацией, когда при чтении 1CD-файла (БП 2.0) возникают CRC-ошибки, т.е. файл физически не читается. Лечение и тестирование не помогают, увы. Оказалось, даже просто скопировать поврежденный файл - проблемаFrown. Выяснил, что физически поврежденные блоки находятся в районе 10Мб (а файл больше гигабайта), поэтому я предположил, что это не данные, а какая-то из конфигураций. Еще есть архив трехмесячной давности и конфигурация с тех пор точно не менялась. Как перенести правильные куски конфигурации из старого файла в новый? 

Пришлось написать маленькую консольную утилиту, которая читает битый файл порциями по 4096 байт (8 блоков по 512, стандартный размер кластера в NTFS) и пишет эту порцию в новый файл. Если возникает ошибка чтения, то выдается сообщение ERR "номер ошибки" "позиция от начала файла". Для CRC-ошибки номер 32 (а других я не видел) и в выходной файл пишется блок "*ERROR* нулевые байты...".  Однако можно указать старый файл и в этом случае порция будет считана из него (с той же позиции, как и в битом файле). В процессе копирования выводится начальный адрес читаемой порции (один раз на 1000 порций).

Можно изменить размер  считываемой порции, указав ключ -n (n=1..8, количество 512-байтовых блоков в порции), но для NTFS это приводит только к замедлению работы, а толку - никакого. Однако этот ключ может помочь, когда размер кластера  меньше 8 блоков (при чтении с флешки или маленького FAT/FAT32 раздела).

восстановление склеивание битый 1CD файл ошибка

См. также

Инструментарий разработчика Роли и права Запросы СКД Программист Руководитель проекта Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Платные (руб)

Инструменты для разработчиков 1С 8.3: Infostart Toolkit. Автоматизация и ускорение разработки на управляемых формах. Легкость работы с 1С.

15500 руб.

02.09.2020    178601    988    403    

947

Инструментарий разработчика Чистка данных Свертка базы Инструменты администратора БД Системный администратор Программист Руководитель проекта Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Россия Платные (руб)

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP, УНФ, КА и т.д.). Поддерживаются серверные и файловые базы, управляемые и обычные формы. Может выполнять свертку одновременно в несколько потоков. А так же автоматически, без непосредственного участия пользователя. Решение в Реестре отечественного ПО

8400 руб.

20.08.2024    20088    133    70    

134

Пакетная печать Печатные формы Инструментарий разработчика Программист Платформа 1С v8.3 Запросы 1С:Зарплата и кадры бюджетного учреждения 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Платные (руб)

Инструмент, позволяющий абсолютно по-новому взглянуть на процесс разработки печатных форм. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и "прозрачность" разработки, а также навести порядок в многообразии корпоративных печатных форм.

22200 руб.

06.10.2023    18981    51    19    

83

Инструменты администратора БД Инструментарий разработчика Роли и права Программист Платформа 1С v8.3 1C:Бухгалтерия Россия Платные (руб)

Расширение позволяет без изменения кода конфигурации выполнять проверки при вводе данных, скрывать от пользователя недоступные ему данные, выполнять код в обработчиках. Не изменяет данные конфигурации, легко устанавливается практически на любую конфигурацию на управляемых формах.

15000 руб.

10.11.2023    12966    53    33    

72

Инструментарий разработчика Программист Платформа 1С v8.3 Платные (руб)

Инструмент для написания и отладки кода в режиме «1С:Предприятие». Представляет собой консоль кода с возможностью пошаговой отладки, просмотра значений переменных любых типов, использования процедур и функций, просмотра стека вызовов, вычисления произвольных выражений на встроенном языке в контексте точки останова, синтаксического контроля и остановки по ошибке. В консоли используется удобный редактор кода с подсветкой, контекстной подсказкой, возможностью вызова конструкторов запроса и форматной строки.

9360 руб.

17.05.2024    29165    100    48    

146

Инструментарий разработчика Программист 8.3.14 Россия Платные (руб)

Расширение для конфигурации “Конвертация данных 3”. Добавляет подсветку синтаксиса, детальную контекстную подсказку, глобальный поиск по коду.

20000 руб.

07.10.2021    18703    7    32    

43

Инструментарий разработчика Платформа 1С v8.3 1C:Бухгалтерия 1С:ERP Управление предприятием 2 Платные (руб)

Разработка Конструктор автоматизированных рабочих мест "Конструктор АРМ" реализована в виде расширения и является универсальным инструментом для создания АРМ любой сложности в пользовательском режиме.

3600 руб.

27.12.2024    1809    2    0    

5
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. TrinitronOTV 16 16.04.14 12:06 Сейчас в теме
интересная методика восстановления файла базы, спасибо, что поделились своей идеей
2. Wooster 16.04.14 13:05 Сейчас в теме
Нормальный ход. А быстрый обмен БП и УТ таким макаром можно запилить ?
3. zels 175 16.04.14 13:09 Сейчас в теме
Я бы не рискнул так обмениваться.
4. script 128 16.04.14 22:01 Сейчас в теме
Оказывается и среди 1С-ников встречаются программисты
shalimski; nbq; iov; FullMoon; LexSeIch; Solovyeff; Aleksey.Bochkov; Andry.Boris; John_d; ilov_boris; makas; +11 2 Ответить
5. zels 175 17.04.14 11:12 Сейчас в теме
(4) script, и программисты и физики и математики и экономисты...
Интересно, есть представители гуманитарных профессий?

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

Не думаю, что следует торопиться скачивать саму програмку (так просто ее не протестировать, нужны реальные сбои) - достаточно знать, что она есть и помнить, где ее взять. Не знаю почему, но поиск ее по характерным словам не находит...
16. Evil Beaver 8274 18.04.14 10:48 Сейчас в теме
(4) script,
Оказывается и среди 1С-ников встречаются программисты


и чаще, чем вы думаете. А если считывание блоков из файла для вас уже признак Программиста(тм), то хм....
wunderland; +1 Ответить
6. vasiliy_b 284 17.04.14 13:39 Сейчас в теме
Что только народу не приходится делать, и только потому что не хотят делать ежедневные копии. Но вещь полезная, не спорю в хозяйстве сгодится. Хотя ее полезность относится только к тому случаю когда поврежден диск в области конфигурации, а в остальных случаях, вы получите не рабочую базу.
7. MMF 678 17.04.14 14:45 Сейчас в теме
ИМХО, или я не оценил идеи или идея идиотская. 1CD файл с произвольным доступом и модификацией. Допустим, супер утилита не может прочитать кусок с неким смещением и в итоге она заменяет его взятым из архива с тем же смещением. Это маразм и бред. Итог такого склеивания нужно сразу же Shift+Del.
Ёпрст; +1 1 Ответить
8. zels 175 17.04.14 17:16 Сейчас в теме
(7) MMF, не только люди отбирают идеи, но и наоборот.
Базу я восстановил, она работает. Если еще кому-то пригодится - буду рад. А те, кто не понял, пусть используют другие способы (я их не отвергаю, просто у меня на один способ больше)...

Кстати, когда файл не читается, стандартные средства тестирования/лечения нередко просто "валятся"...
9. asved.ru 37 18.04.14 04:48 Сейчас в теме
Я бы предложил читать постранично структуру 1CD, и копировать поврежденные страницы.
Светлый ум; chinser; +2 Ответить
10. zels 175 18.04.14 08:12 Сейчас в теме
(9) asved.ru, когда появится конкретная необходимость, буду смотреть.
Сейчас програмка универсальная и простая, ей все равно какие файлы склеивать - от 8-ки, от 7-ки или какие-то еще...
11. insurgut 208 18.04.14 08:34 Сейчас в теме
(10) т.е. если конфигурация не изменяется - данные всегда в конец в файловой базе дописываются?
12. zels 175 18.04.14 09:05 Сейчас в теме
(11) insurgut, не знаю как платформа ведет себя "вообще", но в моем случае это было так.
Гарантий нет, но надеяться можно, имхо. Я полдня убил на тестирование винчестера, попытки восстановить файл.
Потом написал програмку, которая за 5 мин все восстановила и последующее тестирование ошибок не нашло.

Имхо, потратить 5 мин+тестирование - небольшие временные затраты для такого экстраординарного случая (базы физически портятся довольно редко). Получится - замечательно, а не получится - надо пробовать другие способы.

Я не позиционирую этот подход, как универсальный способ с гарантией результата. Просто это:
1. Может сработать сразу.
2. Занимает мало времени.
3. Полученный файл (у которого испорченные блоки забиты нулями) можно попробовать восстановить штатными средствами.

А любителям стрелять из пушек по воробьям никто не мешает...
13. asved.ru 37 18.04.14 09:09 Сейчас в теме
Новые страницы данных добавляются в конец, это верно. Но:

1) Первая страница и некоторые другие являются оглавлением
2) Кроме запросов INSERT, существуют еще и запросы UPDATE.
14. zels 175 18.04.14 09:36 Сейчас в теме
(13) asved.ru, если бы сбой был в начале, я возможно и не стал пробовать.
Но поскольку сбой был на 10Мб, я рассчитывал, что служебная информация и данные не пострадали. И рад, что не ошибся.
15. vasiliy_b 284 18.04.14 09:45 Сейчас в теме
Может тогда стоит допилить утилиту для подмены только той части файла где лежит конфигурация, а если повреждения в области данных, то выдавать соответствующее сообщение.
17. burlakov 83 18.04.14 10:52 Сейчас в теме
мда. представляю сколько денег можно на таком восстановлении заработать. клиенты порой готовы платить любые суммы (по собственному опыту). сама методика реально интересна!
19. zels 175 18.04.14 12:39 Сейчас в теме
(17) burlakov, не на таком, но можно.
Как-то у клиента полетел сравнительно новый raid и пришлось почти неделю собирать базу по кусочкам из 4-х баз (2 SQL и 2 файловых). Правда, там пришлось действовать не через чтение 1CD, а через прямые запросы к SQL и специальные обработки XML-загрузки/выгрузки.

А для разборок с логическими проблемами в 1CD есть прекрасные решения здесь, на инфостарте. Вот, к примеру отличная статья: Файловые базы *.1CD. Физическая структура. Восстановление
Зачем с ними конкурировать? Их надо использовать (что и делаю иногда).
asved.ru; +1 Ответить
18. avtospanov 18.04.14 11:00 Сейчас в теме
интересная методика восстановления файла базы
20. 12345qwerty 18.04.14 20:05 Сейчас в теме
Надо развивать идею , может и что стоящее выйдет
TrinitronOTV; +1 Ответить
21. amon_ra 63 18.05.14 10:38 Сейчас в теме
если мне не изменяет память ошибка CRC это ошибка считывания информации с HDD, т.е. тут проблема с самим хардом, вероятно бэды. Мы в свою очередь часто встречаемся с такими ошибками, конечно ваш вариант интересный с точки зрения дальнейшего развития, однако, мы разрешали ситуацию путем копирования файла с битого сектора утилитой "non-stop copy", затем чекали и если, что то пропадала/убивалось дополняли/правили в хекс редакторе (им реже пользовались, в основном после chdbfl догружали недостающие данные, которые были на битых секторах). К слову, сказать размер БД у нас досттаочно огромен.
А за идею и разработку, конечно, плюс. Развивайте идею, разработка довольно интересная и спрос у нее по-любому появится.
22. zels 175 19.05.14 08:59 Сейчас в теме
Да, CRC-ошибка означает сбой на HDD. Я пробовал non-stop copy, но прочитать без сбоев не удалось. Поэтому и написал свою утилиту, которая пытается скопировать что можно, а что нельзя - подставить из другого файла. Можно заменить сбойные блоки и вручную, но это займет больше времени. Что касается развития. Тут я сторонник unix-подхода: пусть каждая утилита делает свое дело, но делает его хорошо.
Задачи этой:
- сделать из нечитаемого файла читаемый
- показать, в каких блоках проблемы
- при наличии архива заменить нечитаемые блоки

По ссылке Файловые базы *.1CD. Физическая структура. Восстановление. очень много полезной информации и других ссылок, а также есть описание замечательного инструмента Tool_1CD. Я делал "для себя" 1С обработку, которая читает блоки 1CD-файла и использует для работы компоненту 1CDLib Компонента для прямого чтения/записи данных из файлов баз данных .1CD Прилагаю обработку, каждый может ее использовать и допиливать для "сырого" чтения 1CD-файла (компоненту 1CDLib надо скачать отдельно, если ее нет). Делал для себя, так что она не причесана и строго не судите...

Развивать утилиту в этом направлении пока смысла не вижу, ее можно использовать совместно с 1CDLib и Tool_1CD.
Кроме того, при проблемах с 1CD-файлом его можно отправить в 1С для восстановления (главное, чтобы он был и читался).
Для "глубокого бурения" может понадобиться такой инструмент, как программа чтения логической структуры нескольких 1CD-файлов с копированием и модификацией таблиц (см статьи по ссылкам).

Я думаю, что когда очень нужно восстановить файл, а стандартные средства (включая отправку на техподдержку) не помогают, нужно будет разрабатывать индивидуальную утилиту для исследования и исправления. Заготовка такой утилиты есть, но к сожалению (или к счастью) пока не понадобилась для реального восстановления. По сути это C++ проект, который изменяется под конкретный 1CD-файл. Но это чисто теоретические размышления, слабо подкрепленные практикой (так, потренировался на одном битом файле).
Прикрепленные файлы:
DLL_1CDLib.epf
23. sss999 49 15.03.17 00:01 Сейчас в теме
24. zels 175 08.03.19 11:28 Сейчас в теме
Утилиту скачало довольно много народу. Напишите, кому она помогла, как удалось восстановить базу (какие дополнительные действия предприняли).
25. sfeks 28.06.22 23:16 Сейчас в теме
Не помогла. Идёт замена одного файла другим, перезапись. Результат 2 битых или 2 рабочих.
Оставьте свое сообщение