Имя: Пароль:
1C
 
1c8 + внешняя база данных + BLOB
0 RommBoss
 
31.03.15
12:25
Во внешней базе данных, подключенной к 1С как внешний источник, есть поле типа BLOD (содержит текстовое описание), в результате запроса 1С определяет тип этого поля как  Двоичные данные.
Как преобразовать в при загрузке 1С в обычную строку? мысли?
1 shuhard
 
31.03.15
12:28
(0) выгрузит в файлик
распарсить
2 RommBoss
 
31.03.15
12:46
так не интересно. проще все выгрузить в эксель и оттуда закинуть в 8-ку
3 Karav
 
31.03.15
12:49
4 Karav
 
31.03.15
12:51
+ (3) Ну т.е. как я понял если ты запросы сам к базе генерируешь то можешь прям в запросе преобразовать CAST(a.ar_options AS CHAR(10000) CHARACTER SET utf8)
5 RommBoss
 
31.03.15
12:53
(4) спасибо, попробую
6 RommBoss
 
31.03.15
13:41
(4) увы 1с язык запросов не позволяет таких конструкций
7 alex_shkut
 
31.03.15
13:48
А вариант =Строка(BLOB) не пробовал?
8 alex_shkut
 
31.03.15
13:50
Я внешние источники данных сильно не изучал, но там посмотри, нельзя ли явно указать тип поля например Строка(0) вместо BLOB.
9 shuhard
 
31.03.15
14:10
(6) это было очевидно
трансформировать данные нужно на стороне сиквела
10 RommBoss
 
31.03.15
14:15
(8) нет. нельзя
(9) у меня нет туда доступа, да и это не сиквел, а нечто подобное но корявое...
задачи именно из 1С при/после запроса привести значение в удобочитаемую форму
11 alex_shkut
 
31.03.15
14:19
ВЫРАЗИТЬ(BLOB как Строка(100)) больше в запросе, как мне известно - нельзя;
Строка(0) я не пробовал, но поробуй хоть 100 - может получится?
12 RommBoss
 
31.03.15
14:21
(11) нельзя так
13 Лефмихалыч
 
31.03.15
14:22
(6) именно по этому такие магические конструкции надо кастовать на стороне внешней базы
14 shuhard
 
31.03.15
14:26
(10) внимательно читаем (1), перестаем выпендриваться и начинаем кодировать
15 Karav
 
31.03.15
14:30
(6) А причем тут язык запросов 1С, у тебя же какая-то внешняя база данных ты как к ней цепляешься ? через какой-нить ведь oledb driver Или я путаю ?
16 shuhard
 
31.03.15
14:35
(15)[Во внешней базе данных, подключенной к 1С как внешний источник]
это ODBC
17 Karav
 
31.03.15
14:36
(16) Дак может driver поменять :) да напрямую читать :)
18 Лефмихалыч
 
31.03.15
14:38
(15) даже через ODBC ты строку из блоба с разбегу не получишь. Придется, один болт, конвертить
19 Karav
 
31.03.15
14:40
(10) Всмысле а что там такого то... что за база ?
sqllite,mysql,oracl, или что-то экзотическое ?
20 shuhard
 
31.03.15
14:55
(17) можно пустить ADODB поверх ODBC и сделать Convert поверх,
но имею двоичные данные в неизвестной кодировке это гемор

файлик локально куда как проще
21 RommBoss
 
31.03.15
15:01
яфил

видимо проще вторым заходом через эксель загрузить только это ОДНО поле
22 RommBoss
 
31.03.15
15:04
(21) -> (19) :)
23 Drac0
 
31.03.15
15:05
(0) ИМХО, для доступа извне необходимо генерить отдельную вьюху с учетом особенностей потребителя. И к ней уже цепляться. А остальное - это дикий изврат.
24 Drac0
 
31.03.15
15:06
+(23) Почему не рассматриваете этот вариант?
25 RommBoss
 
31.03.15
15:08
мне не надо доступ из вне, мне надо только периодически забирать определенные данные. Зачем мне и заказчику ради этого заморачиваться с "отдельной вьюхой"?
26 Garykom
 
гуру
31.03.15
15:10
(25) ну тогда не как внешний источник подрубай, а через ВК юзай
27 RommBoss
 
31.03.15
15:11
(26) ради одного поля? все остальное же намного удобней
28 Garykom
 
гуру
31.03.15
15:12
(26)+ но вариант (1) самый простой и надежный...подразумевается эти "двоичные данные" записать в файл и прочитать оттуда как надо
29 RommBoss
 
31.03.15
15:15
(28) не сталкивался с таким.. и не нашел пока как 2-е данные записать в файл, а потом открыть его как текст
30 shuhard
 
31.03.15
15:18
(27) записать и открыть блокнотом пробовал ?
31 RommBoss
 
31.03.15
15:42
(1)(30) - выпил кофе и все стало просто и понятно!
32 МихаилМ
 
31.03.15
16:17
ЗначениеВСтрокуВнутр() пробуйте с разбором содержимого.
33 RommBoss
 
31.03.15
16:29
(32) так пробовал - дает шестадцатиричный код...
34 RommBoss
 
31.03.15
16:30
Вопрос решился файлом, даже парсить его не надо было, значение поля = ТекстФайла и все..
35 МихаилМ
 
31.03.15
16:34
(33)
приведите пример кода
36 shuhard
 
31.03.15
16:42
(34) глянул я и действительно, охуительно, охуительно (с)
37 RommBoss
 
31.03.15
16:53
BLOD.Записать(ИмяФайла);
Текст = Новый ТекстовыйДокумент();
Текст.Прочитать(ИмяФайла);
ВесьТекст = Текст.ПолучитьТекст();
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.