Компонента для прямого чтения/записи данных из файлов баз данных .1CD v.1.3.0 от 17.03.2013 (теперь и для Linux).

Опубликовал andrewks в раздел Программирование - Внешние компоненты

Компонента позволяет работать с физическим содержимым таблиц файловых баз данных 1С ( файлы .1CD ).

Предназначается для технических специалистов с целью низкоуровневой работы с данными, восстановления разрушенных БД, извлечения из них оставшихся данных.
На текущий момент реализованы следующие

Возможности:
- получение массива таблиц БД;
- сохранение данных таблиц в файлы ("сырые" данные!);
- загрузка данных таблиц из файлов ("сырые" данные!);
- переименование таблиц, установка им новых описаний;
- создание, удаление таблиц;
- получение массива полей таблицы, подсчёт длины одной записи;
- навигация по записям таблицы, чтение/запись полей и BLOB-полей;

- сохранение/загрузка BLOB-полей в файл;

- добавление, удаление записей;

- получение примитивной информации по метаданным;

- поддержка разных целевых платформ - Windows32/64, Linux32.

Также возможна работа с базой данных (и, также, с произвольными двоичными файлами блочной структуры) на "низком" уровне: реализованы методы по чтению/записи числовых и строковых данных из блоков файла.

Примечание по функциям изменения записей таблиц:

Текущая версия не поддерживает перестроение индексов при добавлении новых записей, удалении записей или изменении индексируемых полей у существующих записей. Решение - принудительная переиндексация со стороны платформы 1С (из конфигуратора, или при помощи chdbfl.exe с установленной галкой "Исправлять обнаруженные ошибки")


В архиве содержатся: непосредственно сам файл компоненты, описание свойств и методов, и пример обработки (УФ) для 1С 8.2, демонстрирующий возможность чтения списка таблиц БД, сохранения их содержимого в файлы в папку "Objects{timestamp}", удаление таблиц, восстановление их содержимого из файлов. Внимание! Используйте данную обработку только на тестовых копиях баз, не подвергайте рабочие базы риску разрушения.

Предупреждения, отказ от ответственности:
Автор не может нести ответственность за любой нанесённый ущерб при применении данного программного обеспечния. Используйте его исключительно на тестовых копиях баз данных! Своевременно производите резервное копирование баз данных во избежание потери информации!

Условия использования и распространения: см. файл readme.txt

Аналоги:
Ближайшими аналогами "по смыслу" являются:
- утилита Tool_1CD http://infostart.ru/public/19633/
- система восстановления баз 1С http://code.google.com/p/restoration-base-1c8/
Однако компонента не позиционируется ни в настоящем, ни в будущем, как замена данным замечательным утилитам, а является, скорее, дополнением к имеющемуся набору инструментов, и отличается идейно: целью является не предоставление некоего визуального интерфейса, а предоставление программного интерфейса для технических специалистов.

Благодарности:
Выражаю особые благодарности участнику awa, который провёл неоценимую работу по исследованию структуры файловой БД, и изложил результаты в своих статьях
http://infostart.ru/public/19734
http://code.google.com/p/restoration-base-1c8/wiki/1CD_format_brief
участнику vde69 за создание проекта системы восстановления файловых баз 1С http://code.google.com/p/restoration-base-1c8/
а также участнику v77 за публикацию http://infostart.ru/public/81644/ , которая позволила сэкономить немного времени при разработке компоненты.

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

======================================
Версия 1.3.0.0 от 17.03.2013
======================================
+ возможность получения некоторых данных из метаданных (описаний объектов, GUID)
+ возможность модификации записей из корневого объекта
+ возможность исправления заголовков основного потока и таблиц
+ библиотека сделана кросс-платформенной (собраны версии для win32, win64, lin32)

+ Методы для файлов 1CD: GetNextDelRecordIndex, GetDelBlobDataLength, FixMainStreamHeader, FixTableHeaders, PrintRootEntry, DeleteTableFromRootEntry, SetTableIndexInRootEntry, AddTableToRootEntry
+ Методы для метаданных: OpenMetadata, CloseMetadata, GetGUIDByDBName, GetPresByTabName, GetPresByGUID, GetMetadataDescByGUID

======================================
Версия 1.2.1.0 от 20.02.2013
======================================
* исправлена критическая ошибка при работе с файлами размером > 2Gb
* исправлены некоторые ошибки, новые не добавлены ;-)

======================================
Версия 1.2.0.0 от 16.02.2013
======================================
+ возможность управления режимом открытия файла, использованием свободных блоков для их перезаписи, режимом сброса изменённых данных записи на диск
+ поддержка специфичных типов полей (T - ANSI-строка неограниченной длины, и VB - двоичные данные переменной длины), встречающихся во временных файлах cache.1CD и 1Cv8tmp.1CD
* имена таблиц и полей теперь проверяются без учёта регистра
+ добавлена обработка BLOB-полей в ReadSimpleValue
+ добавлен параметр "тип кодирования данных" для двоичных BLOB в ReadRecord, ReadSimpleValue, ReadComplexValue, SaveBlobDataToFile
+ изменение записей таблиц
+ удаление записей, чтение и запись Null-значений
+ загрузка BLOB-данных из файла
* исправлены некоторые ошибки, добавлены новые ;-)

+ Свойства: FileOpeningMode, UseFreeBlocks, AutoFlushRecords
+ Методы для файлов 1CD: DeleteRecord, AddRecord, IsNull, WriteSimpleValue, SetNull, GetBlobDataLength, LoadBlobDataFromFile

======================================
Версия 1.1.2.0 от 13.01.2013
======================================
+ навигация по записям таблиц
+ чтение записей таблиц, сохранение BLOB-данных в файл
* исправлены некоторые ошибки, добавлены новые ;-)

+ Методы для файлов 1CD: GetTableRecordsCount, MoveFirstRecord, MoveLastRecord, MoveNextRecord, MovePreviousRecord, MoveToRecord, GetTableRecordIndex, IsRecordDeleted, ReadRecord, ReadComplexValue, ReadSimpleValue, SaveBlobDataToFile

Версия 1.0.1.0 от 24.12.2012
======================================
+ создание, удаление таблиц
+ поддержка локализованных имён полей в возвращаемых структурах 1С
+ получение данных буфера, сохранение их в файл, загрузка из файла
* исправлены некоторые ошибки, добавлены новые ;-)

+ Свойства: LocalNamesMode
+ Методы для двоичных файлов: GetBufferData, SetBufferData, SaveBufferDataToFile, LoadBufferDataFromFile
+ Методы для файлов 1CD: DeleteTable, AddTable

Версия 1.0.0.0 от 17.12.2012
======================================
+ Первая публичная версия
+ получение массива таблиц БД
+ сохранение данных таблиц в файлы ("сырые" данные!)
+ загрузка данных таблиц из файлов ("сырые" данные!)
+ переименование таблиц, установка им новых описаний
+ получение массива полей таблицы, подсчёт длины одной записи

Файлы

Наименование Файл Версия Размер Кол. Скачив.
1CDLib 1.3.0.0.zip
.zip 1,37Mb
18.03.13
1518
.zip 1,37Mb 1518 Скачать

См. также

Лучшие комментарии

103. andrewks 13.01.2013 22:48
очередное обновление. теперь компонента умеет читать данные записей таблиц
+ 2 [ sasha_r; awa; ]
# Ответить
101. 1cyku (файл скачал) 10.01.2013 09:47
Рабочая не падает.
Ответили: (102)
+ 2 [ sasha_r; andrewks; ]
# Ответить
18. andrewks 18.12.2012 16:12
(3) Abadonna, остановился на таком варианте кода:

	МакетКомп=ПолучитьМакетКомпоненты();
	СсылкаКомп=КаталогВременныхФайлов()+"1CDLib.dll";
	Попытка
		МакетКомп.Записать(СсылкаКомп);
	Исключение
	КонецПопытки;
	КомпУст=Ложь;
	Попытка
		КомпУст=ПодключитьВнешнююКомпоненту(СсылкаКомп,"T1CDLib",AddInType.Native);
	Исключение
		Сообщить("Произошла ошибка при подключении компоненты!");
	КонецПопытки;

...Показать Скрыть


чтобы не было проблем с обновлением версии самого файла компоненты в будущем
Ответили: (45)
+ 1 [ faker1980tyumen; ]
# Ответить
54. hogik 19.12.2012 04:31
(53)
Эх. Мало ты разрабатывал программ-гадостей. :-)
Я всегда блокирую DLL и EXE, чтобы ты не мог их переименовать. :-)

P.S.
Файл залочен - да.
НЕТ !!!

P.P.S.
Всё.
Давай не будем грузить тему.
Разобрались в "терминах"... ;-)
Ответили: (55)
+ 1 [ faker1980tyumen; ]
# Ответить
95. andrewks 28.12.2012 08:40
(94) 1cyku, просьба:
1. озвучить версию и разрядность ОС
2. привести содержимое C:\TEMP\1CDLib.log на момент сразу после падения
+ 1 [ faker1980tyumen; ]
# Ответить

Комментарии

1. andrewks 18.12.2012 10:42
забыл прикрепить к файлам pdf-версию описания свойств и методов (для тех, у кого нет возможности открыть файл формата odt). прикрепляю здесь
Ответили: (4)

Прикрепленные файлы:

Описание свойств и методов.pdf
# Ответить
2. German (файл скачал) 18.12.2012 12:02
Давненько не было "жарко" посмотрим
# Ответить
3. Abadonna (файл скачал) 18.12.2012 12:55
Подправь код в обработке:
МакетКомп=ПолучитьМакетКомпоненты();
	СсылкаКомп=КаталогВременныхФайлов()+"1CDLib.dll";
	Файл=Новый Файл(СсылкаКомп);
	Если Не Файл.Существует() Тогда
		МакетКомп.Записать(СсылкаКомп);
	КонецЕсли;
...Показать Скрыть

Иначе конфликт между захваченным 1С файлом ВК и попыткой его записать про повторном открытии обработки в том же сеансе:

{Форма.Форма.Форма(164)}: Ошибка при вызове метода контекста (Записать)
МакетКомп.Записать(СсылкаКомп);
по причине:
Ошибка совместного доступа к файлу 'C:\Documents and Set.....
Ответили: (7) (18)
+ 1 [ andrewks; ]
# Ответить
4. r0610201 (файл скачал) 18.12.2012 13:49
(1) andrewks, при вызове УстановитьВнешнююКомпоненту выскакивает ошибка:

"Установка внешней компоненты не выполнена. В процессе установки произошла ошибка".

И все. Попробовал запихнуть это дело в общий макет и вызвать:

УстановитьВнешнююКомпоненту("ОбщийМакет._1CDLib");


но все равно тоже самое. Как можно это дело исправить?
Ответили: (6)
# Ответить
5. r0610201 (файл скачал) 18.12.2012 14:13
Отвечаю сам себе: удалось установить и подключить только из общего макета, в котором зазипованный каталог с dll и манифестом. Зип прилагаю к этому сообщению, вдруг кому пригодится.
Ответили: (8)

Прикрепленные файлы:

1CDLib.zip
# Ответить
6. andrewks 18.12.2012 14:28
(4) r0610201, Вы не из веб-клиента подключаете?
Ответили: (9)
# Ответить
7. andrewks 18.12.2012 14:30
(3) Abadonna, ага, есть такое дело.

я изначально вообще хотел через временное хранилище подключать, во избежание конфликтов подобного рода, но что-то не взлетело. вот моя ветка, может, подсоветуете что-нибудь http://forum.infostart.ru/forum26/topic76354/
# Ответить
8. andrewks 18.12.2012 14:32
(5) r0610201, этот вариант (размещение в общем макете) я рассматривал, но отказался от него, чтобы была возможность полностью автономной работы, без привязки к конфе и без правки самой конф
# Ответить
9. r0610201 (файл скачал) 18.12.2012 14:37
(6) andrewks,

нет, обычный тонкий клиент, управляемое приложение. Сразу вопрос: а можно прочитать данные таблицы, не сохраняя их в файл на диске? Нужно: спозиционироваться на нужную запись по ее номер и прочитать по имени столбца значение.
Ответили: (10) (104)
# Ответить
10. andrewks 18.12.2012 14:43
(9) r0610201,
нет, обычный тонкий клиент, управляемое приложение

очень странно, а какой релиз платформы? у меня в тонком клиенте мой вариант отрабатывает нормально, проверял под 8.2.15 и 8.2.16

Нужно: спозиционироваться на нужную запись по ее номер и прочитать по имени столбца значение.

пока нет, данный функционал в настоящее время "under construction". думаю, где-то через недельку неспешно допилю, если никакого срочного форс-мажора не будет
# Ответить
11. r0610201 (файл скачал) 18.12.2012 14:52
Пробовал на 8.2.16.368 и на 8.3.2.163. Впрочем, раз интересующий меня функционал еще не реализован, но ожидается, то я подожду :)
Ответили: (12)
# Ответить
12. andrewks 18.12.2012 14:57
(11) r0610201,
Пробовал на 8.2.16.368

странно, сейчас как раз на этом релизе проверил свой вариант - всё отработало. непонятный какой-то глюк, посмотрим, может, ешё у кого-то вылезет
# Ответить
13. r0610201 (файл скачал) 18.12.2012 15:08
Возможно, это еще от разрядности системы зависит. У меня вроде как 64.
Ответили: (14) (16)
# Ответить
14. andrewks 18.12.2012 15:26
(13) r0610201, да не должно, по логике, клиенты-то всё равно 32-х разрядные. но проверю
# Ответить
15. bg38th (файл скачал) 18.12.2012 15:59
Что-то стабильно вышибает платформу на операции ПодключитьВнешнююКомпоненту...
Ответили: (17)
# Ответить
16. andrewks 18.12.2012 16:02
(13) r0610201, так и не получилось воспроизвести ошибку. на х64 сервере под тонким клиентом тоже загрузилось без проблем, ошибок не выдало
Ответили: (19)
# Ответить
17. andrewks 18.12.2012 16:03
(15) bg38th, надо бы больше подробностей - какой релиз платформы, какой клиент запускаете, какая ОС, подробности ошибки
Ответили: (26)
# Ответить
18. andrewks 18.12.2012 16:12
(3) Abadonna, остановился на таком варианте кода:

	МакетКомп=ПолучитьМакетКомпоненты();
	СсылкаКомп=КаталогВременныхФайлов()+"1CDLib.dll";
	Попытка
		МакетКомп.Записать(СсылкаКомп);
	Исключение
	КонецПопытки;
	КомпУст=Ложь;
	Попытка
		КомпУст=ПодключитьВнешнююКомпоненту(СсылкаКомп,"T1CDLib",AddInType.Native);
	Исключение
		Сообщить("Произошла ошибка при подключении компоненты!");
	КонецПопытки;

...Показать Скрыть


чтобы не было проблем с обновлением версии самого файла компоненты в будущем
Ответили: (45)
+ 1 [ faker1980tyumen; ]
# Ответить
19. r0610201 (файл скачал) 18.12.2012 16:16
(16) andrewks,

Судя по всему, у bg38th такая же проблема, у меня тоже вываливалась программа, пока не удалось установить компоненту из общего макета.
Ответили: (21)
# Ответить
20. bg38th (файл скачал) 18.12.2012 16:23
Windows 7 Prof x64
8.2.16.368
И толстый и тонкий (не Web)
Подробности - висниет долго чем-то шарашит и вываливается с предложением перейти в отладку или остановить приложение.
Ответили: (30)
# Ответить
21. bg38th (файл скачал) 18.12.2012 16:25
(19) r0610201,
Из общего пока не пробовал.

А вот что в макете в итоге должно быть? Чистая DLL или ZIP с dll и манифестом?
Ответили: (23)
# Ответить
22. r0610201 (файл скачал) 18.12.2012 16:27
У меня заработало, когда в общем макете архив zip, содержащий dll и манифест. Этот архив прикреплен к сообщению №5.
Ответили: (24) (25)
# Ответить
23. andrewks 18.12.2012 16:28
(21) bg38th, если в общем макете, то ЗИП
# Ответить
24. andrewks 18.12.2012 16:28
(22) r0610201, как бы локализовать проблему. у Вас проблема тоже была на Windows 7 x64 ?
Ответили: (31) (33)
# Ответить
25. andrewks 18.12.2012 16:31
(22) r0610201, интересно то, что на XP, W2003 x32, W2003 x64 под тонким клиентом спокойно отрабатывает просто ПодключитьВнешнююКомпоненту() безо всяких УстановитьВнешнююКомпоненту,
несмотря на то, что в СП сказано

Для режимов запуска "Тонкий клиент" и "Веб-клиент", компонента должна быть предварительно установлена методом УстановитьВнешнююКомпоненту.
# Ответить
26. bg38th (файл скачал) 18.12.2012 16:35
(17) andrewks, И вот ещё что забавно. Если выбрать отладку, то в отладчике (VS) выскочит ошибка "Необработанное исключение в "0x773de6c3" в "1cv8.exe": 0xC0000374: Куча была повреждена.". И если потом в отладчике указать прекратить отладку, то все это хозяйство таки взлетает и работает...
Ответили: (27) (28)
# Ответить
27. andrewks 18.12.2012 16:37
(26) bg38th, а с общего макета нормально загружается? что-то засада какая-то у 1Сины с внешними компонентами. на разных версиях Windows разное поведение
Ответили: (29)
# Ответить
28. andrewks 18.12.2012 16:38
(26) bg38th, кстати, а релиз платформы 1с какой у Вас?
Ответили: (30)
# Ответить
29. bg38th (файл скачал) 18.12.2012 16:43
(27) andrewks, Гружу из общего макета (заменил МакетКомп=ТекОбъект.ПолучитьМакет("_1CDLib") на МакетКомп=ПолучитьОбщийМакет("_1CDLib");) --- та ж хрень на том же месте. Толстый клиент, управляемое приложение.
Ответили: (32)
# Ответить
30. bg38th (файл скачал) 18.12.2012 16:43
(28) andrewks, Я написал в (20) - 8.2.16.368
# Ответить
31. r0610201 (файл скачал) 18.12.2012 16:44
(24) andrewks,

Да, win7 prof 64.

Но сейчас у меня ошибка уже не выскакивает даже в других базах. Что-то где-то закешировалось, что ли...
# Ответить
32. andrewks 18.12.2012 16:50
(29) bg38th, нет, так не пойдёт, у 1Сины ограничения на этот счёт. если ВК загружается из общего макета, то надо прописывать адрес именно общего макета, примерно так: УстановитьВнешнююКомпоненту("ОбщийМакет._1CDLib");

по крайней мере, в СП описано два способа размещения:


Строка, определяющая местоположение внешней компоненты.
В качестве строки может использоваться:
полное имя макета, в котором хранится внешняя компонента в архиве;
URL к внешней компоненте, упакованной в ZIP-архив, в формате, аналогичном ПолучитьНавигационнуюСсылку().


но заставить работать второй способ лично у меня пока не получилось
Ответили: (34)
# Ответить
33. r0610201 (файл скачал) 18.12.2012 16:51
(24) andrewks,

в журнале вот такая ошибка, не знаю, чем это может помочь:

Имя сбойного приложения: 1CV8C.exe, версия: 8.2.16.368, отметка времени: 0x505341e8
Имя сбойного модуля: ntdll.dll, версия: 6.1.7601.17725, отметка времени 0x4ec49b8f
Код исключения: 0xc0000374
Смещение ошибки: 0x000ce6c3
Идентификатор сбойного процесса: 0x161c
Время запуска сбойного приложения: 0x01cddd1dea13220c
Путь сбойного приложения: C:\Program Files (x86)\1cv82\8.2.16.368\bin\1CV8C.exe
Путь сбойного модуля: C:\Windows\SysWOW64\ntdll.dll
Код отчета: 4b88f5fc-4911-11e2-8fc1-e8039ade11b9
Ответили: (37)
# Ответить
34. bg38th (файл скачал) 18.12.2012 16:57
(32) andrewks, А подключать её такую как?
Ответили: (35) (36)
# Ответить
35. andrewks 18.12.2012 17:04
(34) bg38th, ПодключитьВнешнююКомпоненту("ОбщийМакет._1CDLib","T1CDLib");
# Ответить
36. andrewks 18.12.2012 17:05
(34) bg38th, попробуйте ещё эту версию, какие сообщения она выдаст при загрузке. может, проблема именно с записью в темп-папку
Ответили: (39)

Прикрепленные файлы:

ExtractObjects.epf
# Ответить
37. andrewks 18.12.2012 17:06
(33) r0610201, мистика. ВК тут и не пахнет, 1Сина где-то глючит при общении с WinAPI
# Ответить
38. r0610201 (файл скачал) 18.12.2012 17:11
Самое забавное, что раза с третьего перестает вываливаться и начинает работать :) В общем, шайтан.
# Ответить
39. bg38th (файл скачал) 18.12.2012 17:24
(36) andrewks, "Необработанное исключение в "0x773de6c3" в "1cv8.exe": 0xC0000374: Куча была повреждена." И как и прежде, если указать "Продолжить" то все работает.
Ответили: (41)
# Ответить
40. rеd80 18.12.2012 17:27
Значит это не для повседневной работы.
# Ответить
41. andrewks 18.12.2012 17:37
(39) bg38th, т.е. дело даже не доходит до показа Сообщить()? в клиенте 1с никаких более сообщений не появляется? попробуйте почистить кэш или произвести подключение на другом компьютере, какое-то странное поведение 1сины
Ответили: (42) (43) (44)
# Ответить
42. bg38th (файл скачал) 18.12.2012 17:45
(41) andrewks, Кэш почистил. (оба). Та ж хрень на том же месте. На другом компе попробую чуть погодя.

Замечу снова, что если ошибку провести через отладчик (см. выше), то компонента таки оказывается подключенной и работает. И перезапускать при этом внешнюю обработку можно сколь угодно раз - пока не перезапущена платформа, ошибка не проявляется.
# Ответить
43. bg38th (файл скачал) 18.12.2012 17:45
(41) andrewks, Не доходит. Просто GPF платформы и всё.
# Ответить
44. bg38th (файл скачал) 18.12.2012 18:11
(41) andrewks, На других компах: Server 2003 R2 x32 - It's Ok; Server 2008 R2 x64 - такая же ошибка как и на моем компе. Завтра попробую еще на XP x32.
Ответили: (67)
# Ответить
45. Abadonna (файл скачал) 18.12.2012 23:36
(18) andrewks,
чтобы не было проблем с обновлением версии самого файла компоненты в будущем

IMHO, лучше так:
Проверяем наличие КаталогВременныхФайлов()+"1CDLib.dll";, удаляем его без сомнений, и уж потом
КомпУст=ПодключитьВнешнююКомпоненту(СсылкаКомп,"T1CDLib",AddInType.Native);
Ответили: (46)
# Ответить
46. andrewks 18.12.2012 23:53
(45) Abadonna, дык не даст удалить, если файл уже захвачен 1синой. проще попробовать перезаписать в попытке
Ответили: (47) (48)
# Ответить
47. Abadonna (файл скачал) 19.12.2012 00:05
(46) Ага, это я лопухнулся ;)
P.S. Вообще, чую, надо в свои ВК добавить метод по деблокировке файлов, и, в случае загрузки через обработки, деблокировать и удалять в ПриЗакрытии
# Ответить
48. Abadonna (файл скачал) 19.12.2012 03:12
(46) +/47/
Есть интересная API MoveFileEx(PAnsiChar(FileName),PAnsiChar(NewFileName), MOVEFILE_REPLACE_EXISTING)- позволяет переименовать залоченный файл.
СсылкаКомп=КаталогВременныхФайлов()+"1CDLib.dll";
СсылкаКомпН=КаталогВременныхФайлов()+"_1CDLib.dll";
// -> метод Miracle--
Файлы.ПереименоватьФайл(СсылкаКомп,СсылкаКомпН);
// <- метод Miracle--
МакетКомп.Записать(СсылкаКомп);

...Показать Скрыть

Раз 15 перезапустил в таким кодом - все, как в аптеке ;)
P.S. "В самой себе", естественно, не поможет - оно ж не загружено еще...
Ответили: (49)
# Ответить
49. hogik 19.12.2012 03:40
(48)
"позволяет переименовать залоченный файл"(с)
Нет.
Можно только открытый с GENERIC_READ и FILE_SHARE_DELETE.
Так открываются DLL, EXE...
Один из способов удалить гадость из системы - переименовать, перезагрузиться, удалить.
Ответили: (50)
# Ответить
50. Abadonna (файл скачал) 19.12.2012 04:08
(49) hogik, умный ты, однако, глянь на кратинку
База открыта, переименовано обработкой с кодом
&НаКлиенте
Процедура Команда1(Команда)
	Файлы.ПереименоватьФайл("d:\СервисМ Работа с клиентами\MiracleNative.dll","d:\СервисМ Работа с клиентами\_MiracleNative.dll");
КонецПроцедуры
...Показать Скрыть

Давно бы пора привыкнуть, что я не пишу то, чего не проверил. Переименовать даёт,удалить - нет
Если не въехал, поясняю: MiracleNative.dll - залоченный базой файл ВК, вызывается метод самой же ВК, им же и переименовывается, в процессе работы базы (ВК).
Ответили: (51) (57)

Прикрепленные файлы:

Переименование.png
# Ответить
51. hogik 19.12.2012 04:13
(50)
Умный. :-)
Я опроверг твое слово "залоченный".
Т.е. возможность переименовать определяется способом открытия, а не блокировкой.
Читай внимательнее. Я не опровергаю возможности переименовать. Специально привел пример про удаление "гадости" из системы... ;-)
Ответили: (53)
# Ответить
52. Abadonna (файл скачал) 19.12.2012 04:25
Короче так, чтобы смело грузить ВК из макета в обработке, можно делать в обработке так:
&НаКлиенте
Процедура ПриЗакрытии()	
   СсылкаКомпН=КаталогВременныхФайлов()+"_1CDLib.dll";
   Файлы.ПереименоватьФайл(СсылкаКомп,СсылкаКомпН); // тут метод своей же ВК поставить
КонецПроцедуры
...Показать Скрыть
Ответили: (58)
# Ответить
53. Abadonna (файл скачал) 19.12.2012 04:28
(51) hogik, интересно, что ты опроверг во фразе "позволяет переименовать залоченный файл"
Файл залочен - да. Позволяет переименовать - да, да и да.
Ответили: (54)
# Ответить
54. hogik 19.12.2012 04:31
(53)
Эх. Мало ты разрабатывал программ-гадостей. :-)
Я всегда блокирую DLL и EXE, чтобы ты не мог их переименовать. :-)

P.S.
Файл залочен - да.
НЕТ !!!

P.P.S.
Всё.
Давай не будем грузить тему.
Разобрались в "терминах"... ;-)
Ответили: (55)
+ 1 [ faker1980tyumen; ]
# Ответить
55. Abadonna (файл скачал) 19.12.2012 05:10
(54) hogik, не путай файл, конкретно залоченный API LockFile, и файл, залоченный приложением.
И почему, собственно, тему не грузить? Тут что, юзверьки на "поздравлялку" собрались? Тут ВК, и проггеры должны быть разрядом чуть повыше, чем "одноэснеги"
Ответили: (56)
# Ответить
56. hogik 19.12.2012 05:36
(55)
Аркадий.
Давай не будем выяснять смысл слова "залоченный" ? :-)
Еще раз. Возможность переименовать открытый файл определяется режимом его открытия.
# Ответить
57. andrewks 19.12.2012 07:27
(50)
Переименовать даёт,удалить - нет

да, с удалением засада. провёл эксперимент: при запущенном сеансе, удерживающем dll, снимаю блокировку Unlocker'ом, удаляю файл, запускаю повторно обработку - 1сина валится.
видимо, повторная загрузка компоненты не выполняется в любом случае, даже если дескриптор загруженной ранее уже "протух"
Ответили: (74)
# Ответить
58. andrewks 19.12.2012 07:30
(52) Abadonna, оно, конечно, хорошо, но, опять-таки, есть нюанс...

а если 1сина упала во время выполнения, файл-то останется. и всё равно придётся это предусмотреть, и опять выходим к попытке перезаписи. а при наличии оной переименовывать при закрытии уже становится необязательно
Ответили: (59)
# Ответить
59. Abadonna (файл скачал) 19.12.2012 08:20
(58) andrewks, тогда уж для полного счастья лучше сперва попытку сперва удалить, а уж потом попытку записать.
тогда в новом сеансе спокойно загрузится ВК последней версии.
Хотя... при перезаписи оно и так обновится..
Ответили: (74)
# Ответить
60. DoctorRoza 19.12.2012 10:21
Складывается ощущение, что сие творение может попасть в разряд "для хакера". Безопасность бд резко падает!
Ответили: (61) (62) (63)
# Ответить
61. Abadonna (файл скачал) 19.12.2012 10:28
(60) Чушь! Как будто более простыми способами ее поломать нельзя
# Ответить
62. bg38th (файл скачал) 19.12.2012 10:58
(60) DoctorRoza, Нехай сделают управление хранилищем (программное) через платформу - интерес к таким утилям поуменьшится...
# Ответить
63. andrewks 19.12.2012 11:33
(60) DoctorRoza, о какой безопасности файловых БД можно вообще говорить? не было её, нет, и, думаю, не будет
# Ответить
64. TitanLuchs 19.12.2012 14:28
Замечательно, давно хотелось поковыраться в нутре снеговика )))))))
# Ответить
65. OldthiefXXX (файл скачал) 19.12.2012 14:37
Что за проблема?
{Форма.Форма1.Форма(125)}: Значение не является значением объектного типа (SaveTableDataToFile)
FileDB.SaveTableDataToFile(TableName,FileNameDescription,FileNameRecords,FileNameBLOB,FileNameIndexes);
Ответили: (66)
# Ответить
66. andrewks 19.12.2012 16:18
(65) OldthiefXXX, у Вас при открытии обработки какие-нибудь сообщения об ошибках возникали?
# Ответить
67. andrewks 19.12.2012 16:21
(44) bg38th, глюк с подключением ВК на Win7/Win2008 не исчез? также стабильно проявляется?

ещё прошу отписаться тех, у кого на Win7/Win2008 загрузка компоненты проходит нормально, без ошибок
Ответили: (68)
# Ответить
68. bg38th (файл скачал) 19.12.2012 16:53
(67) andrewks, С чего бы ему исчезать? Вышибает как миленькая. С прежней ошибкой Повреждение кучи (heap corruption 0xC0000374)

На XP, кстати, проверил. Работает без ошибок. Похоже проблема возникает именно при инициализации dll и лолко под Win7/Server2008R2 (за висту и server2008 не подпишусь - не пробовал)
Ответили: (69) (75)
# Ответить
69. andrewks 19.12.2012 17:01
(68) bg38th,
С чего бы ему исчезать?

ну, у r0610201 тоже сначала были глюки при загрузке, а потом заработало нормально, вот я и подумал.

а запуск сеансов 1с на Win7/Server2008R2 делаете под учётками с админскими правами винды, или под юзерскими?
Ответили: (70) (71)
# Ответить
70. bg38th (файл скачал) 19.12.2012 17:11
(69) andrewks, Если платформу не закрывать, то после первого прохода ошибки она уже не возникает. Потому я и сказал что ошибка - на этапе инициализации ВК. Если платформу закрыть - ошибка возникает опять.

Под админскими, но без выключения UAC. Это, кстати, мысль. Сейчас попробую с выключением UAC стартануть...
# Ответить
71. bg38th (файл скачал) 19.12.2012 17:13
(69) andrewks, Попробовал. "Запуск от имени администратора" не влюёт. Ошибка возникает.
# Ответить
72. OldthiefXXX (файл скачал) 19.12.2012 18:19
нет ни каких ошибок небыло!
Ответили: (73)
+ 1 [ dim_ts71; ]
# Ответить
73. andrewks 19.12.2012 20:18
(72) OldthiefXXX, приведите, пожалуйста, точную последовательность действий, которые приводят к такому эффекту. у Вас список таблиц заполняется? какой релиз платформы, версия ОС?
# Ответить
74. hogik 20.12.2012 01:53
(57)(59)
Аркадий и andrewks.
Вот, чего не понимаю. ;-)
Извините, расскажу на примере "семерки".
Запускаю сессию 1С-а (локально). Запускаю Unlocker. Делаю выбор каталога BIN. Вижу только "залоченные" файлы. Среди этих файлов только ВК. Но не все, что я загрузил в конфигурации. Половина. ;-) Никаких других файлов в списке нетУ. Естественно, переименовать "залоченные" файлы не удается. Все/любые остальные - легко.
Дык, чего не могу понять. Почему в списке именно эти файлы? Загружаю все ВК одинаковыми операторами. Лежат они только в каталоге BIN.
Чего/как/где можно подумать/почитать/посмотреть для осознания эТТого явления? ;-)
Ответили: (76)
# Ответить
75. Abadonna (файл скачал) 20.12.2012 04:56
(68) bg38th,
Windows Server ® 2008 Standard Service Pack 2, х64 - без базаров, сейчас спецом проверил.
В скобках замечу, что прав у меня на том сервере (как, впрочем, и на любых других) - немеряно.
# Ответить
76. andrewks 20.12.2012 07:31
(74) hogik, я Вам больше скажу. у меня в один день сабжевая длл-ка компилилась без закрытия сенса и обработки, из которых она подгружалась с фиксированного места на диске, без макетов и прочего. и, главное, после закрытия и открытия обработки, но без закрытия сеанса у меня подгружалась новая версия компоненты.
на след.день с этой же обработкой с открытым сеансом компилятор уже не мог записать длл-ку - выдавал ошибку.

вот как это можно объяснить?
# Ответить
77. Kopman 20.12.2012 08:08
Великолепная штука, вот бы еще функционал получения хотя бы части информации из *.dt. Например версии.
# Ответить
78. OldthiefXXX (файл скачал) 20.12.2012 15:46
Форма обычная, последовательно список. а потом сохранить!
Ответили: (79)
# Ответить
79. andrewks 21.12.2012 17:35
(78) OldthiefXXX, как это "Форма обычная"? т.е. вы не обработку-пример запускаете, а свою обработку сделали? тогда прикрепите ей сюда, посмотрю
# Ответить
80. andrewks 24.12.2012 23:32
Обновил версию
Ответили: (81)

Прикрепленные файлы:

Описание свойств и методов.pdf
# Ответить
81. bg38th (файл скачал) 25.12.2012 10:22
(80) andrewks, Вобщем, те же яйца, вид сбоку. Платформа падает на подключении компоненты с комментарием отладчика "Куча повреждена"
Ответили: (82)
# Ответить
82. andrewks 25.12.2012 10:31
(81) bg38th, собственно, на тему загрузки dll-ки я ничего и не исправлял. если у Вас будет как-нибудь немного свободного времени в будущем, и желание потестить, то могу подготовить специальную тестовую сборку длл-ки, чтобы хотя бы выяснить, после какого этапа инициализации у Вас происходит падение
Ответили: (83)
# Ответить
83. bg38th (файл скачал) 25.12.2012 11:22
(82) andrewks, Пуркуа бы и не па. Давайте. Только не тяните с этим. У меня может пропасть возможность запускать это на компе с отладчиком.
Ответили: (84)
# Ответить
84. andrewks 25.12.2012 16:22
(83) bg38th, сделал тестовый комплект. внутри архива - обработка на УФ и dll-ка. в обработке нужно будет указать тестовую длл-ку (из папки test), также у Win-юзера должны быть права на запись в папку C:\TEMP (в неё будет записываться лог-файл 1CDLib.log)

интересует содержимое этого лог-файла на момент сразу после краха, на момент после продолжения работы через отладчик, и на момент после закрытия сеанса 1С, в котором осуществлялась загрузка длл-ки
Ответили: (86) (100)

Прикрепленные файлы:

test.zip
# Ответить
85. kj6370 25.12.2012 16:41
страшная вещь
# Ответить
86. bg38th (файл скачал) 25.12.2012 16:57
(84) andrewks,
1)2012-12-25 16:49:55.446: Initialization
2012-12-25 16:49:55.446: GetClassObject() enter
2012-12-25 16:49:55.446: GetClassObject() leave

2) ничего

3) 2012-12-25 16:52:30.659: DestroyObject() enter
2012-12-25 16:52:30.659: DestroyObject() leave
2012-12-25 16:52:30.659: Finalization
Ответили: (87)
# Ответить
87. andrewks 25.12.2012 17:35
(86) bg38th, есть над чем подумать. пересобрал с более расширенным логированием, если не сложно, проделайте то же самое
Ответили: (88)

Прикрепленные файлы:

test.zip
# Ответить
88. bg38th (файл скачал) 25.12.2012 17:51
(87) andrewks,
1)2012-12-25 17:48:37.531: Initialization
2012-12-25 17:48:37.531: GetClassObject() enter
2012-12-25 17:48:37.531: GetClassObject() leave
2012-12-25 17:48:37.531: _Init() enter
2012-12-25 17:48:37.531: _Init() leave
2012-12-25 17:48:37.531: _setMemManager() enter
2012-12-25 17:48:37.531: _setMemManager() leave
2012-12-25 17:48:37.531: _SetLocale() enter
2012-12-25 17:48:37.531: _SetLocale() leave
2012-12-25 17:48:37.531: _GetInfo() enter
2012-12-25 17:48:37.532: _GetInfo() leave
2012-12-25 17:48:37.532: _RegisterExtensionAs() enter
2012-12-25 17:48:37.532: _RegisterExtensionAs() leave

2) ничего

3) 2012-12-25 17:50:42.963: _Done() enter
2012-12-25 17:50:42.963: _Done() leave
2012-12-25 17:50:42.963: DestroyObject() enter
2012-12-25 17:50:42.963: DestroyObject() leave
2012-12-25 17:50:42.963: Finalization
Ответили: (89)
+ 1 [ andrewks; ]
# Ответить
89. andrewks 25.12.2012 17:59
(88) bg38th, вылет происходит вне кода компоненты, т.е. все функции компоненты отрабатывают, и управление возвращается назад к коду 1С, а далее происходит вылет.
но вот причины падения так и остаются непонятными.
спасибо за содействие. если что придумаю, отпишусь
Ответили: (90)
# Ответить
90. bg38th (файл скачал) 25.12.2012 18:38
(89) andrewks, Да. Но причиной вылета является работа кода компоненты так или иначе.

Повторю декрипшн ошибки, возвращаемый отладчиком:
========================================
Необработанное исключение в "0x776fe6c3" в "1cv8.exe": 0xC0000374: Куча была повреждена.
========================================

Погугли про 0xC0000374 "heap corruption". Там забавно.
Ответили: (91)
# Ответить
91. andrewks 26.12.2012 08:33
(90) bg38th, нашёл в интерфейсном модуле пару мест, где не совсем корректное общение с памятью. проверьте, пожалуйста. если и этот вариант не прокатит, то больше мыслей нет.
Ответили: (92) (93) (96)

Прикрепленные файлы:

test.zip
# Ответить
92. bg38th (файл скачал) 26.12.2012 12:06
(91) andrewks, Увы! :((( Всё то же самое... :((
Ответили: (93)
# Ответить
93. andrewks 26.12.2012 14:28
(92) bg38th, жаль...
вот мне подумалось тут, а может мы ищем чёрную кошку в тёмной комнате в то время, когда её там нет?
конкретно: может, дело не в компоненте (или не только в компоненте).

какие есть мысли:
1. попробовать на релизах 1С, отличных от 8.2.16 (на 8.2.15, 8.2.17)
2. попробовать на Win2008 x64 без установленного отладчика (кто знает, может, это он накладывает такой отпечаток?)
3. попробовать запустить при отключенном DEP

также прошу других участников, имеющих доступ к Win7 x64 и Win2008R2 x64, проверить комплект из (91), статистика не повредит, ибо как минимум двое участников в этой ветке уже высказывались, что у них на обозначенных системах компонента загружается без сбоев
# Ответить
94. 1cyku (файл скачал) 28.12.2012 08:26
8.2.15.310 Падает

Имя сбойного приложения: 1CV8C.exe, версия: 8.2.15.310, отметка времени: 0x4f838bea
Имя сбойного модуля: 1CDLib.dll, версия: 1.0.2.0, отметка времени 0x00000000
Код исключения: 0xc0000005
Смещение ошибки: 0x0001aff6
Путь сбойного модуля: C:\test\1CDLib.dll
Ответили: (95) (97)
# Ответить
95. andrewks 28.12.2012 08:40
(94) 1cyku, просьба:
1. озвучить версию и разрядность ОС
2. привести содержимое C:\TEMP\1CDLib.log на момент сразу после падения
+ 1 [ faker1980tyumen; ]
# Ответить
96. 1cyku (файл скачал) 09.01.2013 07:58
w2k8 R2 standard x64
1CDLib.log - нет такого файла.
Компоненту брал в (91).
# Ответить
97. andrewks 09.01.2013 08:08
(94) 1cyku,
Путь сбойного модуля: C:\test\1CDLib.dll

внутри архива - обработка на УФ и dll-ка. в обработке нужно будет указать тестовую длл-ку (из папки test), также у Win-юзера должны быть права на запись в папку C:\TEMP (в неё будет записываться лог-файл 1CDLib.log)

у Вас либо нет папки C:\TEMP, либо у текущего пользователя нет прав на запись в эту папку
# Ответить
98. andrewks 09.01.2013 08:09
кстати, за это время тестил компоненту на двух разных компах с Win7 x64 и 1С 8.2.17 - ни одного падения
# Ответить
99. 1cyku (файл скачал) 10.01.2013 05:22
"у Вас либо нет папки C:\TEMP, либо у текущего пользователя нет прав на запись в эту папку"
Как говорится знал бы куда падать - соломки б подложил. Создал папку - перестала падать на этапе загрузки.
Ответили: (100)
# Ответить
100. andrewks 10.01.2013 08:15
(99) 1cyku,
Как говорится знал бы куда падать - соломки б подложил

:-) это тестовая сборка длл-ки, без функционала, только загрузка. была создана для отслеживания падений при загрузке, см. (84)

рабочая версия - в публикации
Ответили: (112)
# Ответить
101. 1cyku (файл скачал) 10.01.2013 09:47
Рабочая не падает.
Ответили: (102)
+ 2 [ sasha_r; andrewks; ]
# Ответить
102. andrewks 10.01.2013 09:57
(101) 1cyku, спасибо.
# Ответить
103. andrewks 13.01.2013 22:48
очередное обновление. теперь компонента умеет читать данные записей таблиц

Прикрепленные файлы:

Описание свойств и методов.pdf
+ 2 [ sasha_r; awa; ]
# Ответить
104. andrewks 13.01.2013 22:50
(9) r0610201, интересующий Вас функционал реализован в новой версии
# Ответить
105. r0610201 (файл скачал) 14.01.2013 15:14
Да, все работает, спасибо.

Единственное, так пока и не удалось запустить компоненту на сервере. На клиенте - без проблем, на сервере ПодключитьВнешнююКомпоненту возвращает всегда Ложь. И по пути пробовал, и в общий макет засовывал, и в общий макет с манифестом - результат одинаков.
Ответили: (106) (165)
# Ответить
106. andrewks 14.01.2013 15:30
(105) r0610201, сервер х64?
# Ответить
107. r0610201 (файл скачал) 14.01.2013 16:09
Ага.
Ответили: (108)
# Ответить
108. andrewks 14.01.2013 16:32
(107) r0610201, ну, естественно, х32 сборка не будет работать на стороне х64 ))
х64 сборка компоненты тоже возможна, но не могу сказать, когда у меня доберутся до этого руки.
сейчас следующая главная цель - "научить" компоненту изменять/добавлять/удалять записи таблиц
# Ответить
109. r0610201 (файл скачал) 14.01.2013 16:39
Я, честно говоря, не знал, данная сборка x32 или x64, надеялся, что x64 :)
# Ответить
110. NOVOPRO 16.01.2013 05:28
Посмотрел журнал там ошибка в чем проблема?
Имя сбойного приложения: 1CV8C.exe, версия: 8.2.16.368, отметка времени: 0x505341e8
Имя сбойного модуля: ntdll.dll, версия: 6.1.7601.17725, отметка времени 0x4ec49b8f
Код исключения: 0xc0000374
Смещение ошибки: 0x000ce6c3
Идентификатор сбойного процесса: 0x161c
Время запуска сбойного приложения: 0x01cddd1dea13220c
Путь сбойного приложения: C:\Program Files (x86)\1cv82\8.2.16.368\bin\1CV8C.exe
Путь сбойного модуля: C:\Windows\SysWOW64\ntdll.dll
Код отчета: 4b88f5fc-4911-11e2-8fc1-e8039ade11b9
Ответили: (111)
# Ответить
111. andrewks 16.01.2013 08:14
(110) NOVOPRO, озвучьте ОС, её разрядность; откуда и какую версию компоненты Вы взяли
# Ответить
112. yuraos (файл скачал) 08.02.2013 20:37
(100) andrewks,
ты структуру файловой базы основательно расковырял.
насколько трудно с твоей точки зрения реализовать провайдер данных
для доступа к файловой базе через ADO ???
:)
German тебя за это, наверное, расцеловал бы.
Ответили: (113)
# Ответить
113. andrewks 08.02.2013 21:35
(112) yuraos, задачка нетривиальная. основная проблема - нехватка времени. поэтому на чистом альтруизме поднять это вряд ли получится, вот если бы нашёлся какой-нибудь студент с кучей свободного времени и лютой жаждой обретения ценного опыта... :-)
Ответили: (114)
# Ответить
114. yuraos (файл скачал) 09.02.2013 07:48
(113) andrewks,
нда... время, а еще - деньги...

Говорят когда Бог создал время, то его было достаточно.
Насчет денег при этом умалчивается.

Надо полагать, что люди создали из божественного времени деньги
и поэтому его стало катастрофически не хватать.
:)

PS:
Вставил ссылочку на твою статью в свою публикацию.
# Ответить
115. andrewks 18.02.2013 08:09
очередное обновление. теперь компонента умеет записывать данные, извлекать/записывать deflate-данные, и кое-чего ещё по мелочам
Ответили: (116)

Прикрепленные файлы:

Описание свойств и методов.pdf
# Ответить
116. awa 18.02.2013 11:04
(115) Правильно я понимаю, что при изменении записей индексы не изменяются? Имхо, это стоит отметить в публикации.
Ответили: (117)
# Ответить
117. andrewks 18.02.2013 11:13
(116) awa, да, правильно.

пока вариант такой: если добавили записи, или изменили индексируемые поля, то перестроить индексы можно при помощи chdbfl.exe с взведённой галкой "исправлять ошибки"

специально указывать это пока не стал из следующих соображений: пометил, что вообще весь функционал по изменению/добавлению записей находится в стадии "бета", т.е., грубо говоря, пока собираю косяки
# Ответить
118. reznic (файл скачал) 19.02.2013 20:15
у меня выдалось вот такое сообщение на шаге извлечь

поле объекта не обнаружено _recordlsdeleted

другие шаги делать не дает

с чем это связано?
Ответили: (119)
# Ответить
119. andrewks 19.02.2013 22:37
(118) reznic, забыл сменить название поля в обработке. замените __RecordIsDeleted на __IsRecordDeleted, должно заработать
# Ответить
120. reznic (файл скачал) 20.02.2013 00:12
если я правильно понял то можно таблицу в одной базе удалить и загрузить из другой?
Ответили: (121)
# Ответить
121. andrewks 20.02.2013 08:14
(120) reznic, да. только, если хотите заменить, то удалять не обязательно, содержимое заменится
# Ответить
122. reznic (файл скачал) 20.02.2013 14:26
если я правильно понял то данные хранятся в таблицах начинающихся с _

то есть в чистую конфигурацию можно загрузить таблицы из битой базы и по идеи должно работать?
Ответили: (123)
# Ответить
123. andrewks 20.02.2013 17:03
(122) reznic, на практике не всё так просто. в чистой, вновь созданной базе, даже созданной из идентичной конфигурации, скорее всего, будут другие имена у таблиц. поэтому проще определить, что не так в битой базе, и исправлять прямо в ней. заменить битую таблицу, например, на старую версию (из старого бэкапа)
Ответили: (125)
# Ответить
124. reznic (файл скачал) 21.02.2013 01:19
вот подобрался я к интересному моменту из битой базы выгружена таблица _ACCRG467, в небитой она называется _ACCRG640

в каталог скопированы только файлы, но при загрузке он взял имя из битой базы _ACCRG467, как сделать так чтоб он загрузил данные с именем новой базы
Ответили: (131)
# Ответить
125. reznic (файл скачал) 21.02.2013 01:21
(123) беккапы умерли так же как и база
Ответили: (126)
# Ответить
126. yuraos (файл скачал) 21.02.2013 17:08
(125) reznic,
Бэкап сдох!!!
это из глубинных кошмаров подсознания ОДМИНОВ.
:)
# Ответить
127. reznic (файл скачал) 21.02.2013 19:15
кошмар и произошел, в одну минуту выгорели все компы, сервера, базы, беккапы......
# Ответить
128. bg38th (файл скачал) 21.02.2013 19:55
В одну минуту?! У вас там, что, метеорит в офис попал?
Ответили: (133) (134)
+ 1 [ yuraos; ]
# Ответить
129. reznic (файл скачал) 21.02.2013 20:27
там не только компы, вся электрика в здании, провода оплавились, какой то косяк в электросети
Ответили: (130)
# Ответить
130. andrewks 22.02.2013 08:19
(129) reznic, вот-вот, не зря я обращаю внимание на такие, казалось бы, мелочи.
в http://infostart.ru/public/174806/ изложил советы на эту тему, написанные, так сказать, жизнью и кровью
# Ответить
131. andrewks 22.02.2013 08:22
(124) reznic, фишка в том, что имена меняются у всех метаданных, т.е., не только названия таблиц, но и названия полей.

Вам нужно закачать данные объектов записей, блоб, и индексов, а описание оставить (при условии, что структура и порядок полей идентичны)
Ответили: (132)
# Ответить
132. reznic (файл скачал) 22.02.2013 09:51
(131) спасибо, к этому пришел уже опытным путем
# Ответить
133. andrewks 22.02.2013 10:05
(128) bg38th, кстати, как у Вас ведёт себя новая версия? так же падает?
# Ответить
134. yuraos (файл скачал) 22.02.2013 17:54
(128) bg38th,
ага!
И контора срочно заказала противо-метеоритную оборону.
А то ведь они щас как снег этой зимой в Новосибирске!!!
:)
# Ответить
135. reznic (файл скачал) 22.02.2013 18:16
andrewks и awa Спасибо Вам за действительно классные инструменты

В принципе моя база потихоньку восстанавливается и приобретает нормальный вид

Если вкратце, то пошел по пути переноса данных в чистую базу, смотрю какие таблицы заполнены в битой базе, определяю их соответствие в новой базе и загружаю
# Ответить
136. Antoska 06.03.2013 11:47
Эх! Думал тут работа с другими СУБД... Очень интересует вопрос обмена с базой на Postgres'е. Если с чтение все понятно (запросы SQL), то с записью возникают вопросы... Решаю, пока, тоже через SQL, но приходится формировать множество запросов и городить кучу кода.
# Ответить
137. Sergoninfostarru (файл скачал) 07.03.2013 02:00
Обработка прекрасна, но извечная проблема - нет элементарного описания для пользователя. Описание свойств и методов - это хорошо, но неужели тяжело прямо в описании формы обработки кратко описать что и куда извлекается и откуда восстанавливается ?
Учитывая, что шаги нужно выполнять последовательно, то нужно делать недоступным вторую и далее кнопки слева от "Прочитать", пока не будет нажата "Прочитать". Аналогично, Удалить и Восстановить, если не нажата была "Извлечь" ...
А все остальное - практично и продумано.
# Ответить
138. desty (файл скачал) 15.03.2013 22:44
(0) Библиотека только для 1С ?
Ответили: (139)
# Ответить
139. andrewks 15.03.2013 23:39
(138) desty, да
Ответили: (140)
# Ответить
140. lustin (файл скачал) 16.03.2013 00:49
(139) andrewks, Неприятненько...

Предназначается для технических специалистов с целью низкоуровневой работы с данными


У меня тут сложилась ситуация - есть как бы технический специалист, хочет поработать низкоуровнево с данными. Но блин не 1С-ник он. Ему бы С# сборку чтобы к проекту присоединить.
Судя по всему компонента написана на Lazarus/FreePascal (учитывая другие публикации), хотя могу и ошибаться. Но в любом случае компонента была бы нужна наверное больше не программистам 1С.

В любом случае - компонента отличная, меня только не спасет.
Ответили: (141) (146)
# Ответить
141. andrewks 16.03.2013 09:53
(140) lustin,
Но в любом случае компонента была бы нужна наверное больше не программистам 1С.

компонента позиционируется для восстановления разрушенных файловых баз, поэтому предназначается именно программистам и администраторам 1с
# Ответить
142. reznic (файл скачал) 18.03.2013 18:11
andrewks подскажите если знаете что еще нужно догрузить

загрузил проводки, оборотками и анализами они выводятся

загрузил контрагентов и договора, все открывается

но вот задача, при выводе обороток для аналитики пишет объект не найден, то есть например для счета 58.03 он не видит контрагента и договор (интересует только он)
Ответили: (143)
# Ответить
143. andrewks 18.03.2013 18:32
(142) reznic, проверьте, все ли таблицы ACC* вы перегрузили

а вообще, обычно проще что-то догрузить в битую базу, чем лить все таблицы из битой в чистую
# Ответить
144. reznic (файл скачал) 18.03.2013 19:23
немой вариант, у меня полностью описание убито
# Ответить
145. krein (файл скачал) 18.03.2013 19:34
1) В http://infostart.ru/public/176476/ более новая компоненты из-за этого после запуска одной обработки,второй не хватает методов в dll для работы, было бы удобней, если б публикации обновлялись одновременно
2) Думал, что удаление не сработало, но надо было просто запустить chdfl с галкой исправлять, сразу после этого размер БД изменился
3) Указанную выше обработку использовал, чтобы посмотреть по именам, какие таблицы надо удалить,
если это сюда добавить (хоть обработка и позиционируется просто как пример работы) то гораздо проще было бы выбирать таблицы
4) Если после удаления база работает, проблем не возникает, то в дальнейшем может вылезти какая-то ошибка? или это означает, что все прошло удачно?
Ответили: (147)
# Ответить
146. expert.1c8 18.03.2013 19:55
На win7 x64 нормально запускается и отрабатывает, в том числе удаление,
главное, чтоб 1с пореже меняли формат БД,
любые компоненты, которые позволяют работать с таблицами БД с закрытым форматом
несомненно полезны, до сих пор с содроганием вспоминаю,
как раньше приходилось выкручиваться в таких ситуациях - например, в крайнем случае высылать самой 1с для ремонта файловой базы за деньги...

(140) lustin,
установите 1с на Sql-сервер, и оттуда получайте все данные, которые нужны,
такое позиционирование автором компоненты кажется вполне правильным
Ответили: (148) (149)
# Ответить
147. andrewks 18.03.2013 20:01
(145) krein,
было бы удобней, если б публикации обновлялись одновременно

бесспорно. но время - такая штука, что его постоянно не хватает ;-)

Думал, что удаление не сработало, но надо было просто запустить chdfl с галкой исправлять, сразу после этого размер БД изменился

да, про это прямо сказано в публикации (там написано про добавление и изменение, надо будет ещё добавить, что при удалении индексируемых записей, естественно, такая же петрушка)

Указанную выше обработку использовал, чтобы посмотреть по именам, какие таблицы надо удалить,
если это сюда добавить (хоть обработка и позиционируется просто как пример работы) то гораздо проще было бы выбирать таблицы

в принципе, код той обработки открытый, можно и сюда перекопировать. если дойдут руки когда-нибудь - обновлю.

Если после удаления база работает, проблем не возникает, то в дальнейшем может вылезти какая-то ошибка? или это означает, что все прошло удачно?


с 1с нельзя быть уверенным на 100%, даже если и не пользовался этой компонентой для прямого доступа ;-)
Ответили: (155)
# Ответить
148. andrewks 18.03.2013 20:04
(146) expert.1c8,
например, в крайнем случае высылать самой 1с для ремонта файловой базы за деньги...

а разве 1с не должна бесплатно ремонтировать, при наличии ИТС? хотя, по отзывам, люди ждут неделями, и с непредсказуемым результатом.

я же при помощи данной компоненты и вспомогательных обработок (представленных в других публикациях) могу отремонтировать базу за 2-3 часа при не очень сложном случае, за 4 или более часов - в сложных случаях. (естественно, бывают ещё и безнадёжные случаи, но приведу мини-статистику: из примерно 10 реанимированных мной баз 9 были восстановлены полностью, одна - частично (пару справочников пришлось откатывать версиями из старого архива), естественно, тут многое зависит от того, есть ли старые архивы, типовая ли была конфа, и т.п.)
Ответили: (153)
# Ответить
149. lustin (файл скачал) 18.03.2013 21:11
(146) expert.1c8, Не понял про SQL сервер. Видимо вы не совсем поняли что мне нужно.

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

И мне не надо его чинить ;-). Мне его надо читать, причем постоянно.
Зачем - более подробно тут https://snegopat.ru/forum/viewtopic.php?f=1&t=110
Ответили: (152) (153)
# Ответить
150. reznic (файл скачал) 18.03.2013 22:21
andrewks восстановите мою
Ответили: (151)
# Ответить
151. andrewks 18.03.2013 23:39
(150) reznic, написал в личку
# Ответить
152. andrewks 18.03.2013 23:40
(149) lustin, ясно. не вникал особо в проблему, но - читать из-под 1с - не вариант?
Ответили: (154)
# Ответить
153. expert.1c8 20.03.2013 01:00
(148) Может и чаще бесплатно, не помню, но точно ооочень долго и не всегда успешно (а поэтому часто уже и бесполезно из-за сроков)

(149) посмотрел, да конечно, совсем о другом речь,
Redmine (SVN) + 1с интересная тема,
но разве там нужна выгрузка базы, а не выгрузка конфигурации?
и еще не очень понял зачем для этого обязательно нужен платный снегопат..
Ответили: (154)
# Ответить
154. lustin (файл скачал) 20.03.2013 04:14
(152) andrewks, под Снегопатом - вариант один: через epfLoader. Это вариант сейчас и исследую - с компонентой ;-)

(153) expert.1c8, выгрузка конфигурации это работает в том числе и у меня - но это не наш метод ;-). Нам нужно читать из хранилища напрямую - а оно и есть база. Хранилище - это база файлового формата 1С, только там таблицы немного другие. Возьмите Tool_1CD и откройте файл в папке хранилища - там есть вся информация: модули, версии и т.д.
# Ответить
155. krein (файл скачал) 20.03.2013 20:10
(147) Попробовал еще на нескольких базах поудалять таблицы, сработало везде нормально,
но обновление обработки на почту почему-то не приходит (
Ответили: (156)
# Ответить
156. andrewks 20.03.2013 20:14
(155) krein,
но обновление обработки на почту почему-то не приходит

не совсем понял, о чём речь
# Ответить
157. progres488 (файл скачал) 26.03.2013 13:52
Народ ткните пожалуйста носом где можно прочитать как загрузить таблицы. Выгрузил с одной базы одну таблицу, а как ее загрузить в другую не пойму
# Ответить
158. quick 06.05.2013 01:57
может у кого руки дойдут приделать файл базы как виртуальная файловая система (подключаемый диск).
Тогда можно было бы конфигурацию сразу в какой нибудь git ложить. есть в помощь http://dokan-dev.net/en/
# Ответить
159. yuraskas (файл скачал) 20.06.2013 09:02
Уважаемые, подскажите, а мне не зарегистрировать длл. Делаю командой regsvr32 1cdlib.dll (предварительно поместив ее в system32), выдает ошибку типа: не удалось найти точку входа для DllRegisterServer. Что делать?
Ответили: (162)
# Ответить
160. sasha_r 27.06.2013 07:49
Добрый день!

Работает ли эта замечательная компонента с базами от 8.3?

Спасибо!
Ответили: (161)
# Ответить
161. andrewks 05.07.2013 08:10
(160) sasha_r, работает
+ 1 [ sasha_r; ]
# Ответить
162. andrewks 05.07.2013 08:11
(159) yuraskas, её не надо регистрировать. она подключается по технологии 1С NativeAPI
Ответили: (163)
# Ответить
163. yuraskas (файл скачал) 05.07.2013 10:31
(162) Первый раз с этим сталкиваюсь, не дадите ссылочку, как это все подключается? А то беглый поиск по инету особо ничего не дал.
Ответили: (164)
# Ответить
164. andrewks 05.07.2013 10:47
(163) yuraskas, к компоненте приложена демонстрационная обработка, можете в ней посмотреть
# Ответить
165. serg_infostart 10.09.2013 11:20
(105) Gazza, т.е. без 1С ее нельзя использовать?
Ответили: (166)
# Ответить
166. andrewks 10.09.2013 11:32
(165) serg_infostart, компонента не является самостоятельным приложением, а является Native-API компонентой для 1С >= 8.2


соответственно, работает только в среде 1С 8.2 и выше

однако сами обрабатываемые базы могут быть 8.0, 8.1, 8.2, 8.3
# Ответить
167. seermak (файл скачал) 26.09.2013 07:07
Я, конечно извиняюсь, но не будет ли так удобнее - при чтении не отмечать объекты, а добавить поле поиска и по поиску отмечать нужное - вот как на рисунке

Прикрепленные файлы:

001.jpg
002.jpg
# Ответить
168. lom_it 17.10.2013 14:18
Доброе время суток всем!
Почему то не сохраняются данные после закрытия файла

Запись делаю следующим образом.
res = FileDB1.WriteSimpleValue(0,"FILENAME",FILENAME);
res = FileDB1.WriteSimpleValue(0,"CREATION",CREATION);

Результат выдает положительный и вижу что данные попали в запись, но после закрытия таблицы ничего не остается :(
Ответили: (169)

Прикрепленные файлы:

99px_ru_avatar_150299_brazilskij_macho_narisovannij_v_multjashnom_stile_na_beregu.jpg
# Ответить
169. andrewks 17.10.2013 14:46
(168) lom_it, обратите внимание на описание компоненты, а именно, на свойство AutoFlushRecords.

если оно = ложь, то изменения нужно сбрасывать на диск при помощи метода FlushRecord(ИндексЯчейки)
# Ответить
170. andrewks 17.10.2013 15:06
кстати, что-то я забыл включить этот метод в документацию

FlushRecord / СброситьЗапись
Сбросить актуальные данные записи в файл (на диск)

Параметры
1) CellIndex / Целое число

Индекс ячейки таблицы
# Ответить
171. nk1c (файл скачал) 05.11.2013 15:42
а у меня обработка не запускается 1с 8.2.18.61- упп
Ответили: (172)
# Ответить
172. andrewks 05.11.2013 16:06
(171) nk1c, обработка в демо-примере написана для режима управляемого приложения (сама компонента работает в любом режиме)

самое простое - создать новую чистую БД без конфигурации, и запустить там
# Ответить
173. Radnaev 21.01.2014 09:51
Подскажите, пожалуйста. Сломался винт, головка сгорела. отдали спецам восстановили 2 из 2 БД, одна работает без проблем, 2 выдает ошибку "Ошибка формата потока", перепробовал все возможные способы. результата нет. с помощью этой чудо обработки извлек данные. Как можно загрузить в другую бд???
Ответили: (174)
# Ответить
174. andrewks 21.01.2014 10:35
(173) Radnaev,
отдали спецам восстановили 2 из 2 БД, одна работает без проблем, 2 выдает ошибку "Ошибка формата потока"

подождите, что-то я не понял, как это - восстановили 2 из 2, но одна из них не работает?
тогда получается, что восстановили 1 из 2.
или спецы восстанавливали не БД, а сам винт?

на самом деле, практически невозможно дать совет в случае ошибки "Ошибка формата потока", не зная, в какой таблице она возникает.
есть возможность прислать архив сбойной БД в личку?
# Ответить
175. Cat-Ek (файл скачал) 25.02.2014 13:48
У меня почему-то вообще не открывается обработка, даже по точке останова не доходит до процедуры при открытии :(
Ответили: (176)
# Ответить
176. andrewks 25.02.2014 17:14
(175) нужно открывать в режиме управляемого приложения
# Ответить
177. 7OH (файл скачал) 02.03.2014 14:48
Я конечно всё понимаю, а где обычная форма ?
Далеко не все перешли на управляемые.
Управляемая форма открывается только из конфигурации, и при этом вылетает на "ПолучитьПутьОбработкиНаДиске".
# Ответить
178. lev6975 (файл скачал) 11.08.2014 13:06
Вопрос к народу: С помощью этой компоненты можно осуществить экспресс - загрузку полных кладров из одной базы 8 в другую при условии, что объект регистрсведений.адресныйклассификатор однотипный и там и там?Никто не пробовал?Если делали - нормально ложится?
Ответили: (179)
# Ответить
179. lev6975 (файл скачал) 11.08.2014 13:15
(178) lev6975, Хотя, сам попробую через эту же обработку - выгружу два тэйбла адресного классификатора из загруженной базы и из базы с пустым, поменяю файлы в одной выгрузке на другую и загружу...просто, руки не дошли, пока...с однотипными базами, думаю, прокатит, интересно попробовать с разными, например, из ЗУПа в Буху или УТ...
# Ответить
180. baluba (файл скачал) 03.09.2014 13:11
а на 3.0 заработает ?
Ответили: (181)
# Ответить
181. andrewks 04.09.2014 15:22
(180) baluba, не понял вопроса. может, имелась в виду 8.3?
# Ответить
182. zels (файл скачал) 08.10.2014 23:27
Нет ли более подробного описания методов, в частности: OpenMetadata, GetGUIDByDBName, GetPresByTabName, GetPresByGUID, GetMetadataDescByGUID?
Также непонятно, чем различаются по использованию методы OpenBinFile и Open1CDFile.
Ответили: (184)
# Ответить
184. andrewks 08.10.2014 23:51
(182) zels,
Также непонятно, чем различаются по использованию методы OpenBinFile и Open1CDFile.


очевидно из названий - первая функция открывает бинарный файл с блочной структурой, это необязательно должен быть файл 1CD, методы работы с бинарными файлами даны в описании "Методы для работы с произвольными двоичными блочными файлами"

Нет ли более подробного описания методов, в частности

это функции, возвращающие информацию из двух внутренних файлов 1С, содержащих перечисления метаданных. это файлы DBNames и ещё один файл с UID-именем.
оттуда, например, берутся синонимы имён метаданных
Ответили: (185)
# Ответить
185. zels (файл скачал) 09.10.2014 22:54
(184) andrewks, хотелось бы не гадать что и как работает, а просто брать инфомацию из описания.

Вот, например, раздел "Методы для работы с файлами БД 1С".
Среди перечисленных в нем методов нет методов типа ReadBlockToBuffer, но методы работают.
Неочевидно, что методы для работы с произвольными двоичными блочными файлами будут также
работать для файлов, открытых по Open1CDFile. Является ли Open1CDFile расширением для
OpenBinFile или у них просто есть несколько одинаково названных методов?
Ответили: (186)
# Ответить
186. andrewks 10.10.2014 08:26
(185) zels,
Является ли Open1CDFile расширением для
OpenBinFile

является
Ответили: (187)
+ 1 [ zels; ]
# Ответить
187. zels (файл скачал) 12.10.2014 12:15
(186) andrewks, если не сложно, добавьте в таблицу, возвращаемую функцией GetTablesArray колонку с индексом заголовка таблицы из базы.
# Ответить
188. crazydimka 20.10.2014 16:28
А сможет ли эта компонента когда-нибудь читать файл 1CD хранилища конфигураций для чтения метаданных ? Или если она это уже умеет подскажите как ?
Ответили: (189)
# Ответить
189. andrewks 21.10.2014 08:28
(188) crazydimka, что Вы вкладываете в слова "чтение метаданных хранилища"?
Ответили: (190)
# Ответить
190. crazydimka 21.10.2014 10:56
(189) andrewks, Ну вот есть файл 1CD хранилища, там ведется разработка и соответственно есть метаданные, древо метаданных конфигурации. Сможет ли она его считать, т.к. сейчас используя ее выдает сообщение об ошибке т.к. структура таблиц файла 1CD хранилища и 1CD инф. базы различны. Так вот вопрос не думали ли вы расширить функционал и для чтения 1CD хранилища.
Ответили: (191)
# Ответить
191. andrewks 21.10.2014 11:38
(190) crazydimka, а какую ошибку выдаёт? можете скинуть в личку архив с файлом, на котором выдаёт ошибку
Ответили: (192)
# Ответить
192. crazydimka 21.10.2014 13:46
(191) andrewks, вот что выдает обработка epf которая использует компоненту. {Форма.Форма.Форма(438)}: Ошибка при вызове метода контекста (ОткрытьМетаданные)
FileDB.OpenMetadata();
по причине:
Ошибка внешней компоненты

В сообщении же выдает:
OpenTable() : Table with name PARAMS is not found!.

Файл. Можно взять любой файл хранилища конфигурации. Что бы его создать надо открыть 1С в конфигураторе. Меню Хранилище конфигурации - Создать хранилище, указываем путь, ну и собственно в том катале и будет файл "1cv8ddb.1CD". Это он и есть.
# Ответить
193. Yav4ik (файл скачал) 27.11.2014 18:20
Шикарная обработка, восстановил базу, заменив таблицу "config", на такую же.
# Ответить
194. LadyDy (файл скачал) 14.03.2015 22:32
Скажите, как подключить обработку. Вернее открыть я ее открыла, как мне можно просмотреть содержимое таблицы?
# Ответить
195. mb@icomf.ru (файл скачал) 20.05.2015 13:21
Добрый день! попробуйте восстановить мою базу данных
# Ответить
196. zels (файл скачал) 22.05.2015 12:26
(195) mb@icomf.ru, что за база, где ее взять и какова цена вопроса?
# Ответить
197. АнатолийАндреевич 01.10.2015 11:41
При попытке выполнить первый шаг ("Прочитать") вылетает ошибка:

{Форма.Форма.Форма(441)}: Ошибка при вызове метода контекста (ОткрытьФайлБД)
	FileDB.Open1CDFile(ИмяФайла);
по причине:
Ошибка внешней компоненты
# Ответить
198. dskull86 28.01.2016 17:10
эта обработка считает таблицу IBVERSION?
Ответили: (199)
# Ответить
199. andrewks 28.01.2016 20:00
(198) dskull86, конечно
# Ответить
200. Di_Denis (файл скачал) 13.02.2016 11:37
Спасибо! Помогло решить проблему!
# Ответить
Внимание! За постинг в данном форуме $m не начисляются.
Внимание! Для написания сообщения необходимо авторизоваться
Текст сообщения*
Прикрепить файл