0
sereban
04.04.14
✎
14:03
|
Необходимо получить данные записанные в поле с типом ХранилищеЗначений через внешний источник данных. Т.е. к одной базе 1с подключена таблица другой базы 1с через внешний источник данных. Тип данных ХЗ воспринимается во внешних источниках данных как ДвоичныеДанные. Если в этих двоичных данных находится ХЗ без сжатия, то извлекается так:
ДвоичныеДанные.Записать("F:\Отладка\ТекстХЗ.txt");
ТекстДок = Новый ТекстовыйДокумент;
ТекстДок.Прочитать("F:\Отладка\ТекстХЗ.txt",КодировкаТекста.UTF8);
ТекстХЗ = ТекстДок.ПолучитьТекст();
ТекстХЗ = Прав(ТекстХЗ,СтрДлина(ТекстХЗ)-11);
ЗначениеХЗ = ЗначениеИзСтрокиВнутр(ТекстХЗ);
Если же ХЗ записано со сжатием, то данный вариант не подходит. Каким образом можно распаковать данные хранилища со сжатием, чтобы получить из него значение?
|
|
4
sereban
07.04.14
✎
10:54
|
Получилось)
ИмяФайлаХЗ = "F:\Отладка\ТекстХЗ.txt";
ИмяРаспакованногоФайлаХЗ = "F:\Отладка\ТекстХЗРаспакованный.txt";
ДвоичныеДанные.Записать(ИмяФайлаХЗ);
ТекстДок = Новый ТекстовыйДокумент;
ТекстДок.Прочитать(ИмяФайлаХЗ,КодировкаТекста.ANSI,"");//3-ий параметр обязательный, иначе 1с дописывает лишние байты из-за переносов строк
ТекстХЗ = ТекстДок.ПолучитьТекст();
ТекстХЗ = Прав(ТекстХЗ,СтрДлина(ТекстХЗ)-18);
ТекстДок.УстановитьТекст(ТекстХЗ);
ТекстДок.Записать(ИмяФайлаХЗ,КодировкаТекста.ANSI,"");//3-ий параметр обязательный, иначе 1с дописывает лишние байты из-за переносов строк
СтрокаЗапуска = "C:\Users\f0340633\Downloads\v8unpack\V8Unpack.exe -i """ + ИмяФайлаХЗ + """ """ + ИмяРаспакованногоФайлаХЗ + """";
WshShell = Новый COMОбъект("WScript.Shell");
WshShell.Run(СтрокаЗапуска, 0, Истина);
ТекстДок = Новый ТекстовыйДокумент;
ТекстДок.Прочитать(ИмяРаспакованногоФайлаХЗ,КодировкаТекста.UTF8);
ТекстХЗ = ТекстДок.ПолучитьТекст();
ТекстХЗ = Прав(ТекстХЗ,СтрДлина(ТекстХЗ)-9);
ЗначениеХЗ = ЗначениеИзСтрокиВнутр(ТекстХЗ);
|
|