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

16.04.14

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

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

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

Наименование Файл Версия Размер
Bad1CD.rar
.rar 5,02Kb
56
.rar 5,02Kb 56 Скачать

Столкнулся с ситуацией, когда при чтении 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 файл ошибка

См. также

SALE! 20%

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

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

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

13000 10400 руб.

02.09.2020    122159    670    389    

714

SALE! 25%

Infostart PrintWizard

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

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

18000 15300 руб.

06.10.2023    7293    21    6    

39

SALE! 20%

Infostart УДиФ: Управление данными и формами

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

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

10000 8000 руб.

10.11.2023    3537    11    1    

34

SALE! 30%

PowerTools

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

Универсальный инструмент программиста для администрирования конфигураций. Сборник наиболее часто используемых обработок под единым интерфейсом.

3600 2520 руб.

14.01.2013    177749    1073    0    

849

Многопоточность. Универсальный «Менеджер потоков» 2.1

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

Восстановление партий или взаиморасчетов, расчет зарплаты, пакетное формирование документов или отчетов - теперь все это стало доступнее. * Есть желание повысить скорость работы медленных алгоритмов! Но... * Нет времени думать о реализации многопоточности? * о запуске и остановке потоков? * о поддержании потоков в рабочем состоянии? * о передаче данных в потоки и как получить ответ из потока? * об организации последовательности? Тогда ЭТО - то что надо!!!

5000 руб.

07.02.2018    99347    239    97    

296

[ЕХТ] Фреймворк для Расширений 1С

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

"Фреймворк для Расширений 1С" это универсальное и многофункциональное решение, упрощающее разработку и поддержку создаваемых Расширений. Поставляется в виде комплекта из нескольких Расширений с открытым исходным кодом. Работает в любых Конфигурациях в режиме Управляемого приложения с режимом совместимости 8.3.12 и выше без необходимости внесения изменений в Конфигурацию.

3000 руб.

27.08.2019    18113    6    8    

39

1С HTML Шаблоны / HTML Templates

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

Быстрая и удобная обработка для работы с шаблонами HTML. Позволяет легко и быстро формировать код HTML.

2040 руб.

27.12.2017    28110    3    10    

15

Выполнение произвольного кода или запроса с параметрами через Web-сервис (замена COM-подключений)

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

В процессе работы в 1С часто возникает потребность получить данные из другой базы.  Обычно это делается через COM-соединение, и время выполнения запроса при этом оставляет желать лучшего. В данной публикации представлено универсальное решение, позволяющее практически моментально выполнить произвольный код или запрос с параметрами в другой информационной базе через Web-сервис.

2400 руб.

24.09.2019    23602    15    15    

32
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. TrinitronOTV 14 16.04.14 12:06 Сейчас в теме
интересная методика восстановления файла базы, спасибо, что поделились своей идеей
2. Wooster 16.04.14 13:05 Сейчас в теме
Нормальный ход. А быстрый обмен БП и УТ таким макаром можно запилить ?
3. zels 171 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 171 17.04.14 11:12 Сейчас в теме
(4) script, и программисты и физики и математики и экономисты...
Интересно, есть представители гуманитарных профессий?

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

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


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

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

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

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

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

1) Первая страница и некоторые другие являются оглавлением
2) Кроме запросов INSERT, существуют еще и запросы UPDATE.
14. zels 171 18.04.14 09:36 Сейчас в теме
(13) asved.ru, если бы сбой был в начале, я возможно и не стал пробовать.
Но поскольку сбой был на 10Мб, я рассчитывал, что служебная информация и данные не пострадали. И рад, что не ошибся.
15. vasiliy_b 284 18.04.14 09:45 Сейчас в теме
Может тогда стоит допилить утилиту для подмены только той части файла где лежит конфигурация, а если повреждения в области данных, то выдавать соответствующее сообщение.
17. burlakov 79 18.04.14 10:52 Сейчас в теме
мда. представляю сколько денег можно на таком восстановлении заработать. клиенты порой готовы платить любые суммы (по собственному опыту). сама методика реально интересна!
19. zels 171 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 54 18.05.14 10:38 Сейчас в теме
если мне не изменяет память ошибка CRC это ошибка считывания информации с HDD, т.е. тут проблема с самим хардом, вероятно бэды. Мы в свою очередь часто встречаемся с такими ошибками, конечно ваш вариант интересный с точки зрения дальнейшего развития, однако, мы разрешали ситуацию путем копирования файла с битого сектора утилитой "non-stop copy", затем чекали и если, что то пропадала/убивалось дополняли/правили в хекс редакторе (им реже пользовались, в основном после chdbfl догружали недостающие данные, которые были на битых секторах). К слову, сказать размер БД у нас досттаочно огромен.
А за идею и разработку, конечно, плюс. Развивайте идею, разработка довольно интересная и спрос у нее по-любому появится.
22. zels 171 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 48 15.03.17 00:01 Сейчас в теме
24. zels 171 08.03.19 11:28 Сейчас в теме
Утилиту скачало довольно много народу. Напишите, кому она помогла, как удалось восстановить базу (какие дополнительные действия предприняли).
25. sfeks 28.06.22 23:16 Сейчас в теме
Не помогла. Идёт замена одного файла другим, перезапись. Результат 2 битых или 2 рабочих.
Оставьте свое сообщение