Access подключенный к 1С базе #601239


#0 by sda553
Началась разработка с безумной идеей, связать ms access с базой 1С по таким то и таким то данным. Вначале мне показалось все просто. Подумаешь, делаешь несколько query в access которые прилинкованы к sql базе 1С и наслаждешься. Однако трудности возникли почти сразу: Допустим, хочу я в комбобоксе на форме аксеса выбрать номенклатуру какую то. Делаю в аксесе query вида типа: from _Reference1234 --там типа справочник номенклатуры where true....--тут какие то условия отбирающие 10 номенклатур. Естественно я в комбобоксе настраиваю свойства, чтобы он показывал колонки _Code и _Descr (код и наименование) но при выборе, в качестве value был бы _IDRRef (логично, не по наименованию же их в памяти хранить и использовать). Началось с того что combobox отлично дает выбрать номенклатуру, но в качестве value (_IDRRef) аксес показывает строку "binary" и все тут, хоть ты тресни. До байтов этого binary я добраться не могу, или как то предобразовать их в массив байтов. Пока кривое решение, типа из комбобокса беру номер строки которую выбрали, потом беру рекордсет который в этом комбобоксе и отсчитываю этот номер строки и оттуда получаю поле _IDRRef как массив байтов. Пробовал заменить на select cast(_IDRRef as varchar), _Code, _Descr вообще какую то "погоду" возвращает Я конечно понимаю, что я почти везде первопроходец, но может кто нибудь уже "вязал" аксес с 1С-ной базой? Как выкрутились с этими varbinary которые в 1с-ной базе в качестве ссылок везде?
#1 by 774816
конвертируй в INT CAST(_IDRRef AS INT) AS ID
#2 by МихаилМ
select 0+ _IDRRef
#3 by sda553
Сча попробуем
#4 by sda553
Какое то подозрительно маленькое число возвращает, должно ведь быть байтов 16 в таком целом, видимо INT такого не тянет
#5 by sda553
То же самое, слишком маленькое целое
#6 by МихаилМ
есть вероятность , что без nolock курсор заблокирует всю таблицу
#7 by sda553
Скажите а можно в sql как то это поле в BASE64 строку преобразовать в запросе?
#8 by sda553
Нет, это выставляется в свойствах query
#9 by sda553
Вернее в свойствах комбобокса в которам в качестве data source задан этот query
#10 by МихаилМ
лучше не нарываться
#11 by sda553
ап, нет тут аксес спецов?
#12 by КМ155
Adp - зло
#13 by МимохожийОднако
Из 1С в Акцесс попробуй.
#14 by fantomask
ТОже в свое время мучался с такой проблемой, но в конце концов, сконвертировал все Таблицы access в XLS и загрузил в 1С. Так как это нужно было делать единожды.
#15 by sda553
У меня в обратную сторону подключение
#16 by sda553
Ну вообщем кому интересно, я сделал stored function для преобразования 1С-ных UID в строку вида '0x97CAC8DDA6AFB42A45BB01C70B7648B3' и соответственно заменил запрос на from _Reference1234
#17 by МихаилМ
С одной стороны - молодец с другой - скоро Вас выселят в копию базы. Ну зачем Вам видеть представления гуидов. надеюсь, Вы их отображаете по правилам 1с. иначе могут вазникнеть неувязочки.
#18 by sda553
Представления Гуидов никто не видит. Комбобокс аксесса ссылается на query список вида ТоварКод/ТоварНаименование/УИД '001'/'Зеленая коробка'/'0x97CAC8DDA6AFB42A45BB01C70B7648B3' '001'/'Красная коробка'/'0xb86ab59487144b69484ce36c3adaad92' В комбобоксе показываются только первые две колонки, третья имеет нулевую ширину (так обычно в аксесе делают), а значение комбобокса привязано к третьей. Т.е. пользователь раскрывает комбобокс, выбирает зеленую коробку, видит эту зеленую коробку, а программа видит, что combobox1.value = '0x97CAC8DDA6AFB42A45BB01C70B7648B3' Далее эта строчка легко подставляется используя VBA в дальнейшие sql запросы вида и можно делать в аксесе что надо по этим товарам. Пользователи не видят ИДшников, как в 1С так и в аксесе, они только для внутреннего использования
#19 by sda553
Ну и в довесок функция преобразования binary в varchar ALTER FUNCTION [dbo].[sp_hexadecimal] (    -- Add the parameters for the function here    @binvalue varbinary AS BEGIN    -- Declare the return variable here     select = + 1   end    -- Return the result of the function END
#20 by МихаилМ
спасибо за код. подскажу алтернативу встроенную в мс скл master.dbo.fn_varbintohexstr
#21 by sda553
ух ты, и правда
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С