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

11.04.19

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

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

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

Наименование Файл Версия Размер
x1c_1cdbin_20190411_2_0_3_20a.epf
.epf 1,27Mb
197
.epf  2.0.3.20a 1,27Mb 197 Скачать
x1c_1cdbin_20141002_0_0_2_8a.epf
.epf 29,53Kb
107
.epf 0.0.2.8a 29,53Kb 107 Скачать
x1c_1cdbin_20150124_0_0_3_0a.epf
.epf 54,68Kb
170
.epf 0.0.3.0a 54,68Kb 170 Скачать

Предупреждения, отказ от ответственности:
Разработчик данной обработки не может нести и не несет ответственность за любой ущерб, полученный при использовании данного программного продукта.
Рекомендуется использование этого программного продукта на копиях баз.

Сначала благодарности:

В первую очередь выражаю огромную благодарность Валерию Агееву (awa) - автору статей о формате файлов 1CD и утилиты Tool_1CD.

Также выражаю благодарность andrewks за статьи о восстановлении работоспособности файловой базы, которые помогли глубже разобраться со структурой файлов 1CD.

Благодарю Алексея Ермилова (Alex_E) за помощь в создании обработки.

Также благодарю Андрея Лукина за внешнюю компоненту для работы с deflate.

 

Функционал:

  • Просмотр базы 1CD из любой другой конфигурации на управляемых формах (работает в "Такси")
  • Поддержка форматов 8.2.14.0 и 8.3.8.0.
  • Просмотр общей информации о таблицах базы (описание, размер записи, данные, BLOB, индексы и т.д.)
  • Просмотр общей информации о полях таблицы (тип, длина, NULL и т.д.)
  • Просмотр записей таблиц
  • Работа с полями BLOB:
    • просмотр в 16-ричном виде
    • просмотр в виде текста (используется ВК для распаковки deflate)
    • сохранение значения поля BLOB в файл
  • Возможность выгружать файлы таблицы: Файл данных, Файл BLOB, Файл индексов
  • 16-ричный вьюер страниц базы
  • Консоль кода 1С (КК) для вывода любой необходимой информации
  • Для записи в базу можно использовать скрипты на языке 1С в консоли кода. Для этого есть функция постраничной записи База1С_ЗаписатьСтраницыПоНомеру(...)

Для чего можно использовать:

  • Изучение физического представления базы
  • Выгрузка данных на низком уровне
  • Навигация по поврежденным базам (с ограничениями) для выявления повреждений. С помощью этой обработки были выявлены дефекты 3 "битых" баз, 2 из них полностью восстановлены. Для выявления дефектов писались скрипты для консоли кода, исправления вносились через сторонний 16-ричный редактор.
  • Можно рассматривать как пример работы с бинарными данными (функции обработки можно использовать для любых других файлов, например, для графических или звуковых)

Особенности работы:
Само двоичное чтение осуществляет ActiveX "SAPI.spFileStream", установленный практически в любой Windows, дальше идет работа средствами языка 1С через COMSafeArray. Кому интересно, простой пример работы из 1С с этим ActiveX - http://forum330.com/forum/86/all Документация - http://msdn.microsoft.com/en-us/library/ms722561%28v=vs.85%29.aspx

Интерфейс:
Почти весь функционал этой обработки был написан в рамках рабочей задачи, которая не требовала интерфейса. В итоге для этой обработки интерфейс был просто "прикручен" и дописано немного функций, а чтобы не изобретать велосипед, интерфейс был сделан похожим на интерфейс утилиты Tool_1C, автором которой является awa, без поддержки функций записи в базу из интерфейса.

 

Информация о таблице:

Информация о таблицах базы

Информация о полях таблицы:

Информация о полях таблицы

Операции над файлами таблицы:

Операции над файлами таблицы


Просмотр записей таблиц:

 При чтении данных таблицы добавляются поля, начинающиеся с префикса "B1C_". В поле "B1CD_Deleted" записывается признак удаленной записи (для записи, помещенной в таблице на удаление, устанавливается ИСТИНА).

Для полей типа BINARY выводится строка вида #BLOB,<Тип>,<БЛОКНАЧАЛА>,<РАЗМЕР>. Например, #BLOB,I,1,19024.

 

 

Информация о записях таблицы

16-ричный просмотр страниц базы:

16-ричный просмотр базы

Консоль кода (КК):

Консоль кода

Обработка содержит примеры скриптов. Вот, например, простой скрипт для получения DBNames из таблицы PARAMS:


	лДатаС = ТекущаяДата();
	лИмяТаблицы = "PARAMS";
	лТекТаб = КК_ПолучитьСтруктуруТвблицыПоИмени (лИмяТаблицы);
	
	мсЗаписи 	= Х1С_Б1СД_ПолучитьЗаписиТаблицы (лИмяТаблицы,,,,,3,Истина);
	лСтрокаБлоб = "";
	Для Каждого цЗапись Из мсЗаписи Цикл
		Если цЗапись["FILENAME"] = "DBNames" Тогда
			лСтрокаБлоб = цЗапись["BINARYDATA"];
			Прервать;
		КонецЕсли;
	КонецЦикла;

	стрБлоб 	= База1С_ПолучитьСтруктуруBLOBИзСтроки (лСтрокаБлоб);
	хБуфер 		= База1С_ПолучитьДанныеБлоб (лТекТаб.ФайлБлоб, стрБлоб.НомерБлока, стрБлоб.Размер);

	лТекст 		= База1С_РаспаковатьБуфер (хБуфер);	
	КонсольКода_ОкноОтладки = лТекст;
	
	лСекунд 	= ТекущаяДата() - лДатаС;
	Сообщить("Выполнено за (сек): "+лСекунд);

 

 

Ограничения и работоспособность:

Версии до 2.0 тестировались на Windows 8 (32 bit) и на релизе платформы 8.3.5.1119.

Версия 2.0 тестировалась на Windows 10 Home (64 bit) и на релизе платформы 8.3.14.1630.

На данный момент не на все варианты повреждений файла 1CD есть проверка, этот функционал планируется доработать в будущем.

Планы по развитию функционала:

Сделать возможность редактирования страниц базы в 16-ричном режиме;

Для чтения двоичных данных использовать БуферДвоичныхДанных вместо компонент ActiveX;

Автоматическое выявление некоторых повреждений баз;

Работа с базой в "Режиме поврежденной базы";

Запись в базу ранее выгруженных и измененных данных;

Жду содержательных комментариев и замечаний по обработке.

История версий:

0.0.2.8a от 02.10.2014 Первая публичная версия (альфа)

0.0.3.0a от 24.01.2015

Новое в версии:

  • добавлена возможность вывода записей таблиц (функции чтения таблиц пока находятся в состоянии тестирования)
  • ускорена работа с файлом 1CD (spMemoryStream)                                                                                                  
  • ускорена работа HEX-просмотра
  • ускорено открытие базы примерно в 2 раза (3500 таблиц около 15 секунд)
  • добавлена форма выхода
  • добавлена форма предупреждения при выгрузке файла
  • добавлена обработка типа поля T (text)
  • исправлена ошибка повторного сохранения
  • исправлены другие мелкие ошибки

 2.0.3.20a от 11.04.2019

Новое в версии:

  • Поддержка формата 8.3.8.0
  • Работа с BLOB:
    • просмотр в 16-ричном виде
    • просмотр в виде текста (используется ВК для распаковки deflate)
    • сохранение значения поля BLOB в файл
  • Оптимизирована работа с памятью при работе с полями BLOB
  • Ускорение некоторых операций с файлами и полями BLOB
  • Сохранение и загрузка записей таблиц в MXL-фвйлы для ускорения работы с таблицами с большим количеством записей
  • FIX: исправлена ошибка при просмотре записей и выгрузке больших файлов (DATA и BLOB)
  • FIX: исправлена ошибка при выводе неверной версии формата 1CD
  • FIX: исправлены другие мелкие ошибки

 

 

1cd

См. также

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

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

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

13000 руб.

02.09.2020    119965    656    389    

701

Infostart PrintWizard

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

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

18000 руб.

06.10.2023    7017    20    6    

37

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

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

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

10000 руб.

10.11.2023    3253    10    1    

31

SALE! 30%

PowerTools

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

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

3600 2520 руб.

14.01.2013    177356    1071    0    

846

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

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

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

5000 руб.

07.02.2018    99207    239    97    

296

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

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

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

3000 руб.

27.08.2019    17921    6    8    

38

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

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

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

2040 руб.

27.12.2017    27949    3    10    

14

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

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

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

2400 руб.

24.09.2019    23494    15    15    

31
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. BigB 191 07.10.14 15:19 Сейчас в теме
2. ediks 335 07.10.14 16:12 Сейчас в теме
Интересное решение, но не понял как выгружать - "Выгрузить Файл данных" и "Выгрузить файл BLOB". Нажимаю - ничего не происходит.
Если два раза нажать на эти кнопки, то выскакивает ошибка.
Прикрепленные файлы:
3. GusevNA 359 07.10.14 19:37 Сейчас в теме
(2) ediks, файлы появляются в рабочем каталоге. Имена файлов типа:
_ENUM200_Blob
_ENUM200_Data
_ENUM200_Index
То есть к имени таблицы добавляется суффикс (Data, Blob, Index)
Насчет повторной выгрузки - действительно баг, спасибо, поправлю.
4. GusevNA 359 07.10.14 20:01 Сейчас в теме
"Детские" баги иногда вылезают, поскольку интерфейс "прикручивался", а не писался одновременно с функционалом, поэтому спасибо всем, кто о них напишет - исправлю быстро, могу всем отписавшимся по поводу багов скинуть свежий релиз. Кому нужно, пишите в личку
dvsidelnikov; +1 Ответить
5. GusevNA 359 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 359 24.01.15 19:25 Сейчас в теме
(34) gerkon1980, Могу попробовать Вам помочь. Емейл для связи указал в ЛС
36. ololoanonim 3 26.01.15 04:47 Сейчас в теме
(35) Чтение работает, только при чтении больших таблиц вызывается исключение. Причины устанавливаются. :-)
37. GusevNA 359 26.01.15 07:15 Сейчас в теме
(36) ololoanonim, Во-первых, еще раз спасибо за тестинг, на который не хватает времени.
Во-вторых, в принципе, обработка тестировалась на разных таблицах, в том числе и больших. Надо смотреть конкретную базу и конкретную таблицу. Я там в ЛС на всякий случай написал свой емейл.
38. ololoanonim 3 26.01.15 09:24 Сейчас в теме
(37) Хорошо. Вечером, когда буду дома, я Вам напишу.
6. JohnyDeath 301 08.10.14 10:07 Сейчас в теме
Реально ли выполнять запросы к таблицам этого файла?
Для чего это надо именно мне. Работаю с хранилищем конфигурации, перегружая исходники в git-репозитарий и пытаюсь прикрутить сервер непрерывной интеграции TeamCity. В связи с чем возникают следующие потребности:
1) Из хранилища 1С выбрать номер последнего помещения (таблица VERSIONS)
2) Выбрать из таблицы HISTORY строки по определенному фильтру (например, номер версии )
8. GusevNA 359 08.10.14 13:12 Сейчас в теме
(6) JohnyDeath, Запросы к таблицам пока не поддерживаются, хотя реализовать несложно - после открытия базы есть структуры и типы данных всех таблиц и всех их полей с размерами. Можно прочитать файл данных любой таблицы (функции в обработке готовые есть), поместить его во временную таблицу и делать выборки из нее.
Насчет хранилища - сейчас пока поддерживаются только файлы 1Cv8.1CD, детально с файлами хранилища не разбирался, но по-моему, там файлы организованы аналогично 1CD. Если так, то теми же самыми функциями этой обработки можно их разбирать, потом читать нужные таблицы, помещать во временные таблицы ну и запросом дальше.
Кстати, если будет большой интерес к теме хранилища, могу реализовать чуть попозже.
SeiOkami; +1 Ответить
7. Жолтокнижниг 258 08.10.14 11:21 Сейчас в теме
Так по моему есть множество аналогов уже написанных(даже у меня) в чем плюсы конкретно вашего решения в сравнении с другими
9. GusevNA 359 08.10.14 13:14 Сейчас в теме
(7) Жолтокнижниг, (7) Я знаю пока знаю только одну разработку с подобным функционалом на языке 1С - https://code.google.com/p/restoration-base-1c8/
Во-вторых, это конфигурация, а не обработка. К тому же там последние релизы от 2012 года и непонятно, будет она развиваться дальше или нет. У меня она в начале работы стала выдавать какие-то ошибки еще до открытия базы.
Если еще где-то нашли аналоги - буду благодарен за ссылки - интересно и мне посмотреть на них.
20. buganov 200 09.10.14 05:08 Сейчас в теме
(7) Жолтокнижниг, где же у вас есть? Я не нашел. И аналогов отнюдь не множество. Их как раз мало. Для чего это нужно? Как минимум посмотреть алгоритмы, как максимум восстановить базу. Просто стягивают такие умники "чем лучше, чем другие?". Скачайте и посмотрите, чай не чайник. А если чайник, то лучше не лезть к базе, а позвать взрослых.
23. GusevNA 359 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 359 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 359 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 359 09.10.14 12:46 Сейчас в теме
(21) EmpireSer, Вообще есть мысли попробовать в будущем, только те реализации алгоритмов, которые я пока вижу, будут, скорее всего, медленными, потому что распаковка требуется, которую в v8unpack zlib.dll делает.
13. monsta 58 08.10.14 20:04 Сейчас в теме
Занятная разработка, плюсую. Если бы она еще говорила на что именно "Ошибка формата потока" при работе с конфигурацией жалуется...
15. GusevNA 359 08.10.14 20:09 Сейчас в теме
(13) monsta, Ошибка формата потока - у меня такое было с битыми файлами конфигурации в файле 1CD, а не со структурой файла 1CD (пока ни разу не встречал, чтобы структура 1CD была порушена при такой ошибке, хотя быть может и, наверно, бывает часто). Если интересно, могу Вашу базу посмотреть.
17. andrewks 1367 08.10.14 20:34 Сейчас в теме
(13) monsta, "Ошибка формата потока" - это одно из самых бесполезных сообщений об ошибке, наряду с "System Error"

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

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

Можно ли решить с помощью Вашей конфигурации проблему: "Ошибка СУБД: Длина ключа индекса превышает максимально допустимую '_Documen831..."?
43. GusevNA 359 28.01.16 21:37 Сейчас в теме
(40) INed, Обработка на данный момент только читает из базы, но ничего не исправляет. Так что Вашу проблему решить вряд ли получится.
41. dskull86 28.01.16 17:15 Сейчас в теме
эта обработка считает таблицу IBVERSION?
42. GusevNA 359 28.01.16 21:35 Сейчас в теме
(41) dskull86, В нескольких базах, которые были под рукой, нормально считывает.
44. Alexoniq 696 17.04.19 13:44 Сейчас в теме
Может у меня база слишком хорошо битая, может ещё что, но при попытке чтения записей по объекту выдает вот такую ошибку (не сразу, а после нескольких минут обработки данных)
Прикрепленные файлы:
45. Alexoniq 696 17.04.19 14:52 Сейчас в теме
и еще одна ошибочка
Прикрепленные файлы:
46. GusevNA 359 17.04.19 18:11 Сейчас в теме
(45)Если база битая, ошибки могут вылезать запросто. В этом случае лучше смотреть в HEX-редакторе, что и как, можно писать скрипты для КК. Вообще, сначала была идея сделать кучу проверок, но стала падать скорость работы.
47. spawn_a 53 20.06.19 12:16 Сейчас в теме
Добрый день, есть битая база, с вашей замечательной обработкой получилось увидеть структуру и даже прочитать часть таблиц. Но тут везение закончилось. Подскажите как можно с вами связаться на предмет сотрудничества по этой проблеме
48. sss999 48 02.07.19 02:27 Сейчас в теме
Здравствуйте, крутая разработка, сейчас уже ни кто таким не занимается.Есть простая задача, выгрузить все таблицы из одной базы и загрузить их в другую, исключая системные таблицы,не подскажите как это реализовать?
49. GusevNA 359 02.07.19 12:28 Сейчас в теме
(48)Здравствуйте, выгрузить все таблицы можно скриптом в "Консоли кода", в обработке есть примеры. Загрузки через интерфейс нет, но опять же можно через скрипты. Можно загружать таблицы в SQL-базу, так проще и быстрее.
50. sss999 48 03.07.19 01:51 Сейчас в теме
(49)обработка очень крутая, мне как чистому 1с нику тяжело конечно понимать весь код на низком уровне, не представляю как такое написать можно было, посоветуйте что почитать по двоичным данным?Я выгрузил блоб а он меньше на 250, 250 это размер страницы или чего, это в чем измеряется, я не понимаю.А можно пример если мне нужно blob загрузить таблицы params для dbname, если можно в личку.
52. sss999 48 03.07.19 02:23 Сейчас в теме
(50)blob он целиком идет или он может раскидан по базе быть я не понял тоже.
53. vadim1011985 99 03.07.19 02:31 Сейчас в теме
(52) Читайте описание форматов 8.2.14 и 8.3.8 Например это

https://infostart.ru/public/536343/

там же ссылка на старый формат 8.2.14

На сколько я знаю данные могут идти не по порядку поэтому возможно что часть данных окажется в другом месте . В любом случае есть таблица размещения данных , где перечислены номера страниц данных
54. sss999 48 03.07.19 02:38 Сейчас в теме
(53)пытался это читать, ниче не понятно, как понимаю нужно классические книги почитать по строению баз, вот такое я бы почитал, думаю 1с не сами это придумали ведь, и по двоичному представлению данных тоже надо читать что-то..
55. acanta 03.07.19 07:51 Сейчас в теме
Это аналог Sql studio для 1С без возможности делать бэкап.
51. vadim1011985 99 03.07.19 02:22 Сейчас в теме
Здравствуйте , меня заинтересовала ваша обработка , восстановление баз данных это одна из интересующих меня областей , обработка действительно крутая , но как по мне не хватает нормального мануала к ней , Например есть консоль кода , но что в ней писать хз так как нет справки. Есть ли возможность предоставить справку по доступным функция и параметрам к ним с описанием назначения функции

Есть ли возможность удалять таблицы как в формате 8.2.14 так и формате 8.3.8 .
57. GusevNA 359 03.07.19 16:00 Сейчас в теме
(51)Здравствуйте. В ближайшее время выложу пример отдельной обработки, которая будет вызывать функции 1CDBin как функции библиотеки.

Функций записи в базу 1CD из интерфейса нет, поэтому через обработку удалить таблицы не получится. Удалять таблицы легко в 16-ричном редакторе, я, например, активно использую HxD, Для удаления таблицы нужно всего несколько байтов подправить. В принципе, это можно и без этой обработки сделать.

Насчет скриптов - в модуле формы есть процедуры "_КК_Тест_Скрипт1 ()" "_КК_Тест_Скрипт2 ()" итд, это и есть примеры скриптов. Открываете базу, копируете код такой процедуры из Конфигуратора в буфер обмена, вставляете в поле на закладке "Консоль кода" и нажимаете "Выполнить код 1С". Все имена функций и процедур, которые имеют отношение к скриптам для КонсолиКода, имеют префикс КК_
Если, например, скрипт получает данные из какой-то функции, можете в конце скрипта дописать вывод результата в файл, текстовое поле или ОкноСообщений.
59. vadim1011985 99 03.07.19 16:07 Сейчас в теме
(57) Сегодня пробовал выгружать файлы таблиц по папкам , немного изменив код обработки

Процедура ВыгрузитьДанныеТекущейТаблицы (ТипДанныхТаблицы,СтруктураТаблицы = неопределено)
	
	//лСтруктураТаблицы = ПолучитьТекущуюТаблицуБД ();
	
	Если СтруктураТаблицы = Неопределено Тогда
		лСтруктураТаблицы = ПолучитьТекущуюТаблицуБД();
	Иначе	
		лСтруктураТаблицы = СтруктураТаблицы;
	КонецЕсли;
	
	Если лСтруктураТаблицы = Неопределено Тогда 
		Возврат;
	КонецЕсли;	
	
// получаем имя файла

   Если ТипДанныхТаблицы = 1 Тогда 
	   ЧастьИмениФайла = "\data"
   ИначеЕсли ТипДанныхТаблицы = 2 Тогда 
	   ЧастьИмениФайла = "\Blob"
   Иначе
	   ЧастьИмениФайла = "\Index";
   КонецЕсли;	   
	   


	лИмяФайла = лСтруктураТаблицы.Имя+ЧастьИмениФайла; //  ПолучитьИмяФайлаДляДанныхТаблицы (лСтруктураТаблицы, ТипДанныхТаблицы);
	
		
	лРабочийКаталог = ПолучитьРабочийКаталог ();	
	
	Если лРабочийКаталог = Неопределено Тогда
		Х1С_СообщитьОбОшибке1 ("Неверный рабочий каталог");
		Возврат;
	КонецЕсли;
	
	СоздатьКаталог(лРабочийКаталог+лСтруктураТаблицы.Имя);

	лПолноеИмяФайла = лРабочийКаталог + лИмяФайла;
		
	
	ВыгрузитьДанныеТаблицы (лСтруктураТаблицы, ТипДанныхТаблицы, лПолноеИмяФайла, , Истина);
//	Состояние("Файл выгружен в рабочий каталог");
//	Х1С_Предупреждение("Файл выгружен в рабочий каталог",,"Выгрузка файла","Закрыть");
	Сообщить ("Данные сохранены в файл: "+лПолноеИмяФайла);
КонецПроцедуры
Показать


В самой консольке написал следующий код

Если База1С_Открыта() Тогда 

Для НомерТаблицы = 0 По База1С.МассивТаблиц.Количество () - 1 Цикл 

лТекТабИмя = База1С.МассивТаблиц [НомерТаблицы];
Сообщить(лТекТабИмя.Имя);
ВыгрузитьДанныеТекущейТаблицы  (1, лТекТабИмя);
Сообщить("Таблица Выгружена");

КонецЦикла; 

КонецЕсли;
Показать


Выгружает пару таблиц , а потом валится с ошибкой - "преобразование к типу число не может быть выполнено"

причем если потом отдельно через закладку операции выгрузить эту таблицу , и снова запустить через консоль то таблица выгружается
60. GusevNA 359 03.07.19 17:45 Сейчас в теме
Посмотрите пример _КК_Тест_Скрипт1 () в модуле формы, там написан правильный обход таблиц.

У Вас в коде вместо
База1С.МассивТаблиц [НомерТаблицы];
Нужно вызывать функцию:
КК_ПолучитьСтруктуруТвблицыПоИмени ()
Это связано с постепенным получением данных, для ускорения работы некоторых функций
61. GusevNA 359 03.07.19 22:22 Сейчас в теме
(59) В итоге код выгрузки таблиц для "Консоли кода" будет выглядеть так:

// === ВЫГРУЗКА ТАБЛИЦ БАЗЫ 1CD В КАТАЛОГ НА ДИСКЕ

	// так оформляются параметры скрипта для наглядности ПРМ_<ИмяПеременной>
	// Если Истина заменить на Ложь, то будут выгружаться все таблицы
	ПРМ_ВСЕ_ТАБЛИЦЫ = Истина;

	Если Не База1С_Открыта() Тогда
		ВызватьИсключение("База не открыта");	
	КонецЕсли;
	лРабочийКаталог = ПолучитьРабочийКаталог();
	Если лРабочийКаталог = Неопределено Тогда
		ВызватьИсключение("Неверный рабочий каталог");	
	КонецЕсли;

	лЗамерСтарт = ТекущаяДата();
	ОчиститьСообщения();
	лСч = 0;
	 // все таблицы могут выгружаться долго, поэтому стоит ограничение для тестов
	МаксКолТаблиц = 10;
	Для Каждого цТаблица Из База1С.МассивТаблиц Цикл 
		Если Не ПРМ_ВСЕ_ТАБЛИЦЫ Тогда
			лСч = лСч+1;
		КонецЕсли;
		Если лСч > МаксКолТаблиц Тогда
			Прервать;
		КонецЕсли;
		
		лТекТаб = КК_ПолучитьСтруктуруТвблицыПоИмени(цТаблица.Имя);
		Сообщить("Выгружается таблица: "+лТекТаб.Имя);
		СоздатьКаталог(лРабочийКаталог+лТекТаб.Имя);
		ВыгрузитьДанныеТаблицы  (лТекТаб, 1, лРабочийКаталог+лТекТаб.Имя+"\"+лТекТаб.Имя+"_Data");
		// для таблиц (потоков) Blob убрать комментарий в следующей строке
		// ВыгрузитьДанныеТаблицы  (лТекТаб, 2, лРабочийКаталог+лТекТаб.Имя+"\"+лТекТаб.Имя+"_Blob");
		// для таблиц (потоков) Indexes убрать комментарий в следующей строке
		// ВыгрузитьДанныеТаблицы  (лТекТаб, 3, лРабочийКаталог+лТекТаб.Имя+"\"+лТекТаб.Имя+"_Indexes");
		Сообщить("Таблица "+лТекТаб.Имя+" выгружена");

	КонецЦикла; 
	Сообщить ("Выполнео за (с):"+(ТекущаяДата()-лЗамерСтарт));

Показать
62. vadim1011985 99 03.07.19 23:58 Сейчас в теме
(61) у меня так получилось

Если База1С_Открыта() Тогда 

Для НомерТаблицы = 0 По База1С.МассивТаблиц.Количество () - 1 Цикл 

таблица  = База1С.МассивТаблиц [НомерТаблицы];

лТекТабИмя=КК_ПолучитьСтруктуруТаблицыПоИмени (Таблица. Имя,Истина)

ВыгрузитьДанныеТекущейТаблицы  (1, лТекТабИмя);

ВыгрузитьДанныеТекущейТаблицы  (1, лТекТабИмя);

ВыгрузитьДанныеТекущейТаблицы  (2, лТекТабИмя);

ВыгрузитьДанныеТекущейТаблицы  (3, лТекТабИмя);

Сообщить("Таблица Выгружена");

КонецЦикла; 

КонецЕсли;
Показать
56. vadim1011985 99 03.07.19 10:57 Сейчас в теме
(0) И еще вопрос где можно посмотреть какие функции (и их описание ) экспортирует внешняя компонента
58. GusevNA 359 03.07.19 16:03 Сейчас в теме
(56)А какая именно компонента?
63. prtz 04.07.19 11:22 Сейчас в теме
(0) Добрый день! Подскажите, можно ли обратиться к вам за помощью в восстановлении базы? Ситуация следующая - умер hdd на котором хранилась база. Резервные копии делались ежедневно в Acronis Cloud. Базу восстановили, но она не запускается(( пишет - файл базы данных повреждён. У нас этих резервных копий глубиной в 2 месяца и заработала только самая первая (двух месячной давности), но за эти 2 месяца было проделано очень много работы. Если не вы, то может быть подскажете к кому можно обратиться? Заранее спасибо!
64. vadim1011985 99 04.07.19 11:45 Сейчас в теме
(63) Пробовали проверять утилитой Chdbfl ?
65. prtz 04.07.19 16:00 Сейчас в теме
(64) Да, выдаёт кучу ошибок. Если поставить галку на исправление найденных ошибок, то утилита тупит несколько секунд и закрывается. Tools_1c также сыпет море ошибок. Чуть попозже выложу скриншоты с ошибками
66. prtz 04.07.19 18:10 Сейчас в теме
(64) вот что показывает chdbfl
Есть надежды на оживление? Или с этим сразу в морг?
Прикрепленные файлы:
67. vadim1011985 99 04.07.19 18:12 Сейчас в теме
(66) Надежда всегда есть , пришлите файл гляну как раз и эту обработку опробую
68. prtz 04.07.19 18:27 Сейчас в теме
(67) Почему то не могу вам отправить личное сообщение. Не могли бы написать ваш email? в личные сообщения конечно же
69. пользователь 04.07.19 18:29
Сообщение было скрыто модератором.
...
70. prtz 04.07.19 18:34 Сейчас в теме
(69) Отправил вам ссылку нашу базу в акронисе.
71. AntoShiK86 27 20.11.19 13:30 Сейчас в теме
Здравтсвуйте,
был сбой на сервере,
chdbfl выдал такие ошибки:
Повреждены данные таблицы 'FILES'. Восстановлено 30 из 30 записей.. Потеряно 2 значений полей неограниченной длины
Повреждены данные таблицы '_DOCUMENTJOURNAL6806'. Восстановлено 48135 из 48140 записей.
Повреждены данные таблицы '_DOCUMENTJOURNAL6840'. Восстановлено 14348 из 14349 записей.
Повреждены данные таблицы '_DOCUMENT207'. Восстановлено 9725 из 9725 записей.. Потеряно 2 значений полей неограниченной длины


решили через вашу обработку посмотреть '_DOCUMENT207'
в нерабочей базе при чтении записей выдало сообщение об ошибке.

Хотелось, чтобы ошибочные записи ваша обработка могла выводить, или хотя бы пропускать.
А так же сообщить номер строки. в таблице. У нас есть бэкап на предыдущий день. Мы можем по нему сверить, какие данные повредились. Но не можем понять какой документ повреждён. Предположительно это банковская выписка.
Прикрепленные файлы:
72. GusevNA 359 28.11.19 17:07 Сейчас в теме
Судя по картинке, где-то есть повреждение описания таблицы. В новой версии, которая сейчас тестируется, поврежденные описания таблиц будут обрабатываться более гибко.

Также в новой версии будет более информативный вывод ошибок в записях таблиц, с номером страницы в базе, номером записи в таблице и смещением записи в таблице.
73. vadim1011985 99 02.12.19 14:57 Сейчас в теме
(72) жду новую версию , очень удобный инструмент. А не рассматривается возможность добавление и удалении таблиц ?
74. GusevNA 359 02.12.19 19:59 Сейчас в теме
Добавление/удаление таблиц не планируется. Есть вариант через SQL-версию. Перетащить в SQL базу все, что перетащится, а там уже делать все, что нужно.

В планах есть набор функций для изменения записей и полей, а сами изменения предполагается делать скриптами в КонсолиКода, но это не в ближайшей версии.
75. vadim1011985 99 02.12.19 23:32 Сейчас в теме
(74) жаль что не планируется , придётся самому думать как это реализовать , так как это необходимый инструмент для починки баз
76. frkbvfnjh 785 28.10.20 15:35 Сейчас в теме
Отличная разработка! Жду развития функционала. В намеченном плане развития функционала действительно нужные вещи. Успехов Вам в дальнейшей разработке.
77. Black Romeo 26.01.21 15:28 Сейчас в теме
Добрый день, а можно ли через вашу обработку вытащить конфигурацию базы? Велась разработка интенсивно в одном из модулей http сервисов. Конфигуратор закрыли, а при открытии ошибка формата потока и ничего сделать нельзя. Или исходный текст модуля глянуть? Можно конечно заново написать, но очень много времени займет
78. vladimir-89 24 02.06.21 15:47 Сейчас в теме
Добрый день.
Скачал обработку, вылетела ошибка:
Значение индекса выходит за границы диапазона
{ВнешняяОбработка.x1c_1CDBin.Форма.Форма.Форма(1572)}:		Результат = хБуфер.GetValue (НачалоДанных) +  хБуфер.GetValue (НачалоДанных + 1) * 256 + хБуфер.GetValue (НачалоДанных + 2) * 65536 + хБуфер.GetValue (НачалоДанных + 3) * 16777216;
{ВнешняяОбработка.x1c_1CDBin.Форма.Форма.Форма(2399)}:		лТекНомерБлокаТаблицы = База1С_ПолучитьДанныеИзБуфера (хБуферТаблиц, "Число", 36 + лЦикл*4, 4); 
{ВнешняяОбработка.x1c_1CDBin.Форма.Форма.Форма(2464)}:		ЗаполнитьТаблицыБД_8380 ();
{ВнешняяОбработка.x1c_1CDBin.Форма.Форма.Форма(1541)}:	ЗаполнитьТаблицыБД ();
{ВнешняяОбработка.x1c_1CDBin.Форма.Форма.Форма(82)}:	База1С_ОткрытьБазу (ПолеИмяФайлаБазы1С);

по причине:
Значение индекса выходит за границы диапазона
Показать


есть поврежденная файловая база, chdbf'ом не получилось восстановить - пишет "база разрушена". Думал, может поможет ваша обработка...
79. DimonNT 22.10.21 16:53 Сейчас в теме
Друзья подскажите как запустить обработку? Добавляю в обработки, далее пытаюсь открыть, ноль эмоций вообще
80. ZhokhovM 716 09.09.22 16:29 Сейчас в теме
Представляю обработку распаковщик 1cd на 1с
https://infostart.ru/public/1691321/
1.учтены изменения "Для чтения двоичных данных использовать БуферДвоичныхДанных вместо компонент ActiveX";
2.поддержаны все форматы
3.есть возможность извлечь файл cf из таблицы Config и т.д.
Оставьте свое сообщение