0. GusevNA 312 25.04.14 15:54 Сейчас в теме

[x1c.ru] 1CDBin: Работа с файлами *.1CD на низком уровне средствами языка 1С с возможностью чтения таблиц (поддерживается формат 8.3.8.0)

Обработка позволяет просматривать файловые базы 1CD на низком уровне средствами встроенного языка. Реализована часть функциональности Tool_1CD, но на языке 1С Предприятия. Показываются таблицы, параметры таблиц, поля таблиц, записи таблиц, значения полей BLOB, есть 16-ричный просмотр страниц базы и консоль кода. Можно использовать для изучения структуры файлов 1CD, просмотра баз 1CD для выявления повреждений, создания своих обработок для выгрузки данных без открытия исследуемой базы в 1С:Предприятии.

Перейти к публикации

Комментарии
Избранное Подписка Сортировка: Древо
1. BigB 179 07.10.14 15:19 Сейчас в теме
2. ediks 327 07.10.14 16:12 Сейчас в теме
Интересное решение, но не понял как выгружать - "Выгрузить Файл данных" и "Выгрузить файл BLOB". Нажимаю - ничего не происходит.
Если два раза нажать на эти кнопки, то выскакивает ошибка.
Прикрепленные файлы:
3. GusevNA 312 07.10.14 19:37 Сейчас в теме
(2) ediks, файлы появляются в рабочем каталоге. Имена файлов типа:
_ENUM200_Blob
_ENUM200_Data
_ENUM200_Index
То есть к имени таблицы добавляется суффикс (Data, Blob, Index)
Насчет повторной выгрузки - действительно баг, спасибо, поправлю.
4. GusevNA 312 07.10.14 20:01 Сейчас в теме
"Детские" баги иногда вылезают, поскольку интерфейс "прикручивался", а не писался одновременно с функционалом, поэтому спасибо всем, кто о них напишет - исправлю быстро, могу всем отписавшимся по поводу багов скинуть свежий релиз. Кому нужно, пишите в личку
5. GusevNA 312 07.10.14 23:08 Сейчас в теме
Сейчас идет активная доработка функционала для навигации по базе и по выявлению повреждений. Поэтому:
1) Если кому нужен какой функционал - пишите, может, заодно и его реализуем в первую очередь
2) Если у кого есть битые базы (только 1CD, не .DT) и есть желание их попробовать восстановить, пишите, быстро не обещаю, но по мере свободного времени могу повосстанавливать.
34. gerkon1980 24.01.15 07:23 Сейчас в теме
(5)
У меня горе - прямо горе - рухнула база. Проверяла через внутренний файл 1 C chdbfl - сказал "База данных разрушена. Восстановление не возможно". Последний раз сохранялась 28.04.14. А сейчас год закрывать а у меня база рухнула. Я просто не представляю как ее восстанавливать, если документы заново вводить. Помогите, пожалуйста, восстановить
35. GusevNA 312 24.01.15 19:25 Сейчас в теме
(34) gerkon1980, Могу попробовать Вам помочь. Емейл для связи указал в ЛС
36. ololoanonim 4 26.01.15 04:47 Сейчас в теме
(35) Чтение работает, только при чтении больших таблиц вызывается исключение. Причины устанавливаются. :-)
37. GusevNA 312 26.01.15 07:15 Сейчас в теме
(36) ololoanonim, Во-первых, еще раз спасибо за тестинг, на который не хватает времени.
Во-вторых, в принципе, обработка тестировалась на разных таблицах, в том числе и больших. Надо смотреть конкретную базу и конкретную таблицу. Я там в ЛС на всякий случай написал свой емейл.
38. ololoanonim 4 26.01.15 09:24 Сейчас в теме
(37) Хорошо. Вечером, когда буду дома, я Вам напишу.
6. JohnyDeath 293 08.10.14 10:07 Сейчас в теме
Реально ли выполнять запросы к таблицам этого файла?
Для чего это надо именно мне. Работаю с хранилищем конфигурации, перегружая исходники в git-репозитарий и пытаюсь прикрутить сервер непрерывной интеграции TeamCity. В связи с чем возникают следующие потребности:
1) Из хранилища 1С выбрать номер последнего помещения (таблица VERSIONS)
2) Выбрать из таблицы HISTORY строки по определенному фильтру (например, номер версии )
8. GusevNA 312 08.10.14 13:12 Сейчас в теме
(6) JohnyDeath, Запросы к таблицам пока не поддерживаются, хотя реализовать несложно - после открытия базы есть структуры и типы данных всех таблиц и всех их полей с размерами. Можно прочитать файл данных любой таблицы (функции в обработке готовые есть), поместить его во временную таблицу и делать выборки из нее.
Насчет хранилища - сейчас пока поддерживаются только файлы 1Cv8.1CD, детально с файлами хранилища не разбирался, но по-моему, там файлы организованы аналогично 1CD. Если так, то теми же самыми функциями этой обработки можно их разбирать, потом читать нужные таблицы, помещать во временные таблицы ну и запросом дальше.
Кстати, если будет большой интерес к теме хранилища, могу реализовать чуть попозже.
SeiOkami; +1 Ответить
7. Жолтокнижниг 249 08.10.14 11:21 Сейчас в теме
Так по моему есть множество аналогов уже написанных(даже у меня) в чем плюсы конкретно вашего решения в сравнении с другими
9. GusevNA 312 08.10.14 13:14 Сейчас в теме
(7) Жолтокнижниг, (7) Я знаю пока знаю только одну разработку с подобным функционалом на языке 1С - https://code.google.com/p/restoration-base-1c8/
Во-вторых, это конфигурация, а не обработка. К тому же там последние релизы от 2012 года и непонятно, будет она развиваться дальше или нет. У меня она в начале работы стала выдавать какие-то ошибки еще до открытия базы.
Если еще где-то нашли аналоги - буду благодарен за ссылки - интересно и мне посмотреть на них.
20. buganov 57 09.10.14 05:08 Сейчас в теме
(7) Жолтокнижниг, где же у вас есть? Я не нашел. И аналогов отнюдь не множество. Их как раз мало. Для чего это нужно? Как минимум посмотреть алгоритмы, как максимум восстановить базу. Просто стягивают такие умники "чем лучше, чем другие?". Скачайте и посмотрите, чай не чайник. А если чайник, то лучше не лезть к базе, а позвать взрослых.
23. GusevNA 312 09.10.14 12:51 Сейчас в теме
(20) buganov, Да, сейчас основные доработки делаются в направлении восстановления баз.

Так что если у кого есть битые базы, которые не жалко (не содержат больших комм.тайн:-)), просьба присылать для тестов и экспериментов.
Своих 2 восстановил, 1 в процессе, а больше пока не попадаются.
10. EmpireSer 08.10.14 13:32 Сейчас в теме
Есть аналог в виде компоненты native для 1С (включая линукс):
http://infostart.ru/public/166557/
artbear; 1yh1; +2 Ответить
11. GusevNA 312 08.10.14 15:00 Сейчас в теме
(10) EmpireSer, Она написана не на языке 1С. Соответственно, для ее, к примеру, доработки нужно знать соответствующий язык программирования, на котором она написана, иметь эту среду разработки и каждый раз при внесении изменений перекомпилировать А тут открыл Конфигуратор - доработал под свои задачи и, собственно, все - можно пользоваться. Любой 1С-разработчик может это сделать. К тому в этой обработке есть 16-ричный просмотр страниц базы.
12. EmpireSer 08.10.14 18:30 Сейчас в теме
(11)
Не совсем всё так радужно как вы говорите:
1. Вы работаете с COM объектами, а специфику их работы тоже нужно знать.
2. Из-за этих же COM объектов есть ограничение в ОС. Работа же Native компонентов под разными ОС обеспечивается 1С (т.к. в данном случаи есть библиотека компонеты под Linux).

НО! :-)))

Ваши изыскания похвальны! Я их только поддерживаю!

Если это превратиться в удобный механизм и позволяющий вносить изменения в базу (с блокировками участков файла конечно), при чём лишённый проблем не обновления индексов изменённых таблица (такая проблема есть в аналоге), то будет ещё круче.
14. GusevNA 312 08.10.14 20:06 Сейчас в теме
(12) EmpireSer, Во-первых, спасибо за поддержку. Что касается изысканий, то, на мой взгляд, здесь они были минимальны - была рабочая задача по чтению данных из файлов 1CD без запуска базы, потом был прикручен интерфейс. А что касается COM-объектов, то это Виндовые COM-ы, входящте в состав Microsoft Speech API (SAPI). На форумах есть информация о том, что эти COM-ы есть практически в любой Винде, так что здесь тоже потенциальные проблемы минимальны. А что касается Linux, то использование обработки под него не планировалось (хотя можно переписать, если нужно будет, все чтение/запись под что-нибудь еще - кода там немного). А вот насчет 1CDLib (сам пользовался неоднократно, очень хорошая разработка, на мой взгляд) - есть ее исходники в публичном доступе?
21. EmpireSer 09.10.14 09:52 Сейчас в теме
(14)
Исходники 1CDLib видимо закрыты :-(

P.S. Вот если бы кто-то ещё "V8Unpack" написал бы на 1С... а то у меня это самое узкое место в создании полиморфной конфигурации. Очень не хватает механизмов оттуда "Pack" и "UnPack"...
22. GusevNA 312 09.10.14 12:46 Сейчас в теме
(21) EmpireSer, Вообще есть мысли попробовать в будущем, только те реализации алгоритмов, которые я пока вижу, будут, скорее всего, медленными, потому что распаковка требуется, которую в v8unpack zlib.dll делает.
13. monsta 58 08.10.14 20:04 Сейчас в теме
Занятная разработка, плюсую. Если бы она еще говорила на что именно "Ошибка формата потока" при работе с конфигурацией жалуется...
15. GusevNA 312 08.10.14 20:09 Сейчас в теме
(13) monsta, Ошибка формата потока - у меня такое было с битыми файлами конфигурации в файле 1CD, а не со структурой файла 1CD (пока ни разу не встречал, чтобы структура 1CD была порушена при такой ошибке, хотя быть может и, наверно, бывает часто). Если интересно, могу Вашу базу посмотреть.
17. andrewks 1268 08.10.14 20:34 Сейчас в теме
(13) monsta, "Ошибка формата потока" - это одно из самых бесполезных сообщений об ошибке, наряду с "System Error"

это ошибка при чтении потока (stream) с данными 1с-формата (текстовый файл с фигурными скобками, запятыми и значениями)

что именно не понравилось - да что угодно, начиная с испорченного содержимого до банального расположения строкового значения там, где 1с ожидает увидеть, например, число
19. GusevNA 312 08.10.14 21:17 Сейчас в теме
(17) andrewks, Согласен, можно написать Global fatal error, смысл бы нисколько не поменялся :-)
16. andrewks 1268 08.10.14 20:27 Сейчас в теме
а что насчёт производительности?
сразу скажу: тесты не делал, но что-то мне подсказывает, что подобная реализация на языке 1с не может быть очень быстрой
18. GusevNA 312 08.10.14 21:16 Сейчас в теме
(16) andrewks, Пока не замерял. Для текущих задач пока хватает скорости.
Tool_1CD, например, даже визуально шустрее. Но в коде есть еще возможности для оптимизации, на которую все времени не хватает ((
24. crazydimka 20.10.14 16:20 Сейчас в теме
А сможет ли эта компонента когда-нибудь читать файл 1CD хранилища конфигураций для чтения метаданных ? Или если она это уже умеет подскажите как ?
SeiOkami; +1 Ответить
25. GusevNA 312 20.10.14 18:33 Сейчас в теме
(24) crazydimka, Это обработка (EPF), а не компонента. На хранилищах особо не тестировалась, но файлы 1cv8ddb.1CD открывает, как обычные 1CD файлы. Таблицы (типа Config и ConfigSave) можно выгрузить в файл. Чтение и разбор метаданных в рамках этой обработки пока не планируется.
26. ololoanonim 4 21.01.15 13:51 Сейчас в теме
Такой вот вопрос, а можно ли просмотреть содержимое таблиц?
27. GusevNA 312 21.01.15 16:40 Сейчас в теме
(26) ololoanonim, В этой версии нельзя, сейчас идет разработка новой версии - там чтение и просмотр содержимого таблиц будет реализовано.
28. ololoanonim 4 22.01.15 06:33 Сейчас в теме
(27) а как долго займет разработка? просто очень надо. Может поделитесь как это лучше сделать?
29. GusevNA 312 22.01.15 14:44 Сейчас в теме
(28) ololoanonim, В принципе, там все готово, но нужно ее протестировать, а тестировать сейчас нет времени. Если потестируете и отпишетесь по результатам - хотя бы на уровне "работает-не работает", могу выложить в течение 1-2 дней.
31. ololoanonim 4 23.01.15 11:17 Сейчас в теме
(29) можете пока подсказать как считывать данные? просто маленько поработал с Вашей обработкой и фиксированные строки стали считываться прям строками. А вот остальное не могу. Вот прошу Вашей помощи.
32. GusevNA 312 23.01.15 16:01 Сейчас в теме
(31) ololoanonim, Сегодня-завтра выложу обработку, там несложные алгоритмы - нетрудно будет разобраться, и заранее спасибо за тестирование :-)
33. ololoanonim 4 23.01.15 18:25 Сейчас в теме
(32) Вам спасибо! Очень жду когда выложите.
30. ololoanonim 4 23.01.15 05:13 Сейчас в теме
Конечно протестирую. И отписаться не составит труда.
39. baton_pk 390 06.07.15 16:06 Сейчас в теме
Ой, спасибо :) Вытащил данные о продажах из битой базы кассового узла.
40. INed 80 31.12.15 01:59 Сейчас в теме
Николай, добрый день!

Можно ли решить с помощью Вашей конфигурации проблему: "Ошибка СУБД: Длина ключа индекса превышает максимально допустимую '_Documen831..."?
43. GusevNA 312 28.01.16 21:37 Сейчас в теме
(40) INed, Обработка на данный момент только читает из базы, но ничего не исправляет. Так что Вашу проблему решить вряд ли получится.
41. dskull86 28.01.16 17:15 Сейчас в теме
эта обработка считает таблицу IBVERSION?
42. GusevNA 312 28.01.16 21:35 Сейчас в теме
(41) dskull86, В нескольких базах, которые были под рукой, нормально считывает.
44. Alexoniq 614 17.04.19 13:44 Сейчас в теме
Может у меня база слишком хорошо битая, может ещё что, но при попытке чтения записей по объекту выдает вот такую ошибку (не сразу, а после нескольких минут обработки данных)
Прикрепленные файлы:
45. Alexoniq 614 17.04.19 14:52 Сейчас в теме
и еще одна ошибочка
Прикрепленные файлы:
46. GusevNA 312 17.04.19 18:11 Сейчас в теме
(45)Если база битая, ошибки могут вылезать запросто. В этом случае лучше смотреть в HEX-редакторе, что и как, можно писать скрипты для КК. Вообще, сначала была идея сделать кучу проверок, но стала падать скорость работы.
47. spawn_a 29 20.06.19 12:16 Сейчас в теме
Добрый день, есть битая база, с вашей замечательной обработкой получилось увидеть структуру и даже прочитать часть таблиц. Но тут везение закончилось. Подскажите как можно с вами связаться на предмет сотрудничества по этой проблеме
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Консультант ERP-систем
Москва
Временный (на проект)

Студент (стажер) 1С
Нижний Новгород
зарплата от 25 000 руб.
Полный день

Бизнес-аналитик 1С
Москва
зарплата от 90 000 руб. до 150 000 руб.
Полный день

Программист 1С
Санкт-Петербург
зарплата от 120 000 руб.
Полный день

Программист 1С
Нижний Новгород
зарплата до 100 000 руб.
Полный день