|
GUID из 1С в MS SQL и обратно, как реализовывается?
|
|||
---|---|---|---|
#18+
В 1С ссылки хранятся в БД в бинарном виде, например так 0x898BBCAEC5369A3611E6DC86B0D27F78, а 1С их отдает в виде строки вот так "85cbd3bd-06ec-11e6-a37b-14dae906a3f2", а как реализован этот механизм преобразования туда, а потом обратно? Так вроде работает: SELECT CONVERT(binary(16), 'b0d27f78-dc86-11e6-898b-bcaec5369a36', 0) AS GUID;, но насколько это точно не знаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2018, 10:02 |
|
GUID из 1С в MS SQL и обратно, как реализовывается?
|
|||
---|---|---|---|
#18+
sc2r2bey, обратно вот такая функция подходит, опубликована была на SQL.ru, кто автор не помню : Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24.
Такая функция нужна, что бы в 1С не получать ComeSafeAray Потом в 1С пишите: UID = ADOНаборДанныхТовары.Fields(0).Value; Номенклатура = Справочники.Номенклатура.ПолучитьСсылку(Новый УникальныйИдентификатор(UID)); Вполне себе работает, тормозная правда немного на больших объемах. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2018, 10:32 |
|
GUID из 1С в MS SQL и обратно, как реализовывается?
|
|||
---|---|---|---|
#18+
спасибо, но мне нужна прямая работа с sql server туда и обратно ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2018, 10:37 |
|
GUID из 1С в MS SQL и обратно, как реализовывается?
|
|||
---|---|---|---|
#18+
sc2r2bey, ну так это она и есть в направлении обратно. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2018, 10:43 |
|
GUID из 1С в MS SQL и обратно, как реализовывается?
|
|||
---|---|---|---|
#18+
sc2r2bey, т.е. эта функция вернет вам строку вида: "85cbd3bd-06ec-11e6-a37b-14dae906a3f2" из вашего же селекта: SELECT CONVERT(binary(16), 'b0d27f78-dc86-11e6-898b-bcaec5369a36', 0) AS GUID ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2018, 10:45 |
|
GUID из 1С в MS SQL и обратно, как реализовывается?
|
|||
---|---|---|---|
#18+
vitkhvsc2r2bey, т.е. эта функция вернет вам строку вида: "85cbd3bd-06ec-11e6-a37b-14dae906a3f2" из вашего же селекта: SELECT CONVERT(binary(16), 'b0d27f78-dc86-11e6-898b-bcaec5369a36', 0) AS GUID да, я понял, но насколько SELECT CONVERT(binary(16), 'b0d27f78-dc86-11e6-898b-bcaec5369a36', 0) AS GUID; дает точный 85cbd3bd-06ec-11e6-a37b-14dae906a3f2? ЗЫ 1С знает толк в извращениях ))) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2018, 10:48 |
|
GUID из 1С в MS SQL и обратно, как реализовывается?
|
|||
---|---|---|---|
#18+
на инфостате похожее было https://forum.infostart.ru/forum9/topic183950/ но там CONVERT не используется ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2018, 10:49 |
|
GUID из 1С в MS SQL и обратно, как реализовывается?
|
|||
---|---|---|---|
#18+
sc2r2beyна инфостате похожее было https://forum.infostart.ru/forum9/topic183950/ но там CONVERT не используется Эта еще тормознее так как в ней используеться fn_sqlvarbasetostr. Вы это читали, там я давал ссылку на что есть Guid в 1С, там все по полочкам разложено. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2018, 10:54 |
|
GUID из 1С в MS SQL и обратно, как реализовывается?
|
|||
---|---|---|---|
#18+
sc2r2bey, и вообще fn_sqlvarbasetostr не документирована. Когда-то тоже с помощью нее пытался преобразования делать. Но нафиг, если binary в строку преобразовывается и обратно, а дальше просто местами меняешь значения. Подобные функции и на 1С кстати есть. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2018, 11:11 |
|
GUID из 1С в MS SQL и обратно, как реализовывается?
|
|||
---|---|---|---|
#18+
sc2r2bey, Вот эта функция на 1С: Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
взято отсюда . ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2018, 11:26 |
|
GUID из 1С в MS SQL и обратно, как реализовывается?
|
|||
---|---|---|---|
#18+
vitkhvsc2r2bey, Вот эта функция на 1С: Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
взято отсюда . Вот еще нашел тут тоже накручено http://dubraver.ru/?page_id=146 я не 1С поэтому приходится работать напрямую со скулем тут три задачи, вытянуть бинарник, перевести его в строку перевести строку в бинарник и сгенерировать ссылку и кинуть ее в таблицу ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2018, 11:31 |
|
GUID из 1С в MS SQL и обратно, как реализовывается?
|
|||
---|---|---|---|
#18+
sc2r2beyтут три задачи, вытянуть бинарник, перевести его в строку перевести строку в бинарник и сгенерировать ссылку и кинуть ее в таблицу И на фига это все? Т.е. зачем это гонять туда сюда, смысл какой? Получить представление в 1С ном виде, что бы потом 1С ники могли использовать вот это: ПолучитьСсылку(Новый УникальныйИдентификатор(UID))? SQL та это нафиг не надо, SQL чистый бинарник подсовываешь, без всяких преобразований вот в таком виде: SELECT * FROM _Reference16990 WHERE _IDRref = 0x898BBCAEC5369A3611E6DC86B0D27F78 и все работает. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2018, 11:42 |
|
GUID из 1С в MS SQL и обратно, как реализовывается?
|
|||
---|---|---|---|
#18+
потому что 1С не справляется со своим рестом и бинарник нельзя в json засунуть ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2018, 11:53 |
|
GUID из 1С в MS SQL и обратно, как реализовывается?
|
|||
---|---|---|---|
#18+
прилетает вот такая хрень Код: javascript 1. 2. 3. 4. 5. 6. 7. 8.
засунь vehicle в бинарное поле ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2018, 11:54 |
|
GUID из 1С в MS SQL и обратно, как реализовывается?
|
|||
---|---|---|---|
#18+
а vehicle это ссылка на элемент другого справочника ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2018, 12:00 |
|
GUID из 1С в MS SQL и обратно, как реализовывается?
|
|||
---|---|---|---|
#18+
sc2r2bey, Да я понял. Та функция которую я дал она вам в обратку. 100% то, что надо. Которая же из 1с делает представление в sql у меня не было необходимости, поэтому проверьте просто запросом, найдет idrref или нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2018, 12:09 |
|
GUID из 1С в MS SQL и обратно, как реализовывается?
|
|||
---|---|---|---|
#18+
Я так вызвал функцию и параметры, насколько правильно я не знаю Код: sql 1.
Вернул 3c29ac92-4a0b-11e8-9414-bcaec5369a36 а а вот SELECT CONVERT(binary(16), '3c29ac92-4a0b-11e8-9414-bcaec5369a36', 0) AS GUID; Вернул 0x33433239414339322D344130422D3131 т.е. неправильно или я неправильно передал параметр ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2018, 12:21 |
|
GUID из 1С в MS SQL и обратно, как реализовывается?
|
|||
---|---|---|---|
#18+
sc2r2bey, У вас гуид получить из полученой функцией sp_getid строки не получиться. Вам же надо выкинутьиз строки минусы, переставить местами литералы и добавить в начало 0x. Вон как я на 1с вам функцию скинул. Там в этой статье есть нужная вам функция на sql которая это делает. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2018, 12:37 |
|
GUID из 1С в MS SQL и обратно, как реализовывается?
|
|||
---|---|---|---|
#18+
sc2r2bey, вот она на 1С которую в SQL переписать можно 1 к 1: Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2018, 13:21 |
|
GUID из 1С в MS SQL и обратно, как реализовывается?
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2018, 13:40 |
|
GUID из 1С в MS SQL и обратно, как реализовывается?
|
|||
---|---|---|---|
#18+
sc2r2bey, вот вам преобразование туда обратно: declare @GUIDasStr char(36),@GUID1С char(36); SET @GUID1С = '3c29ac92-4a0b-11e8-9414-bcaec5369a36' SET @GUIDasStr ='0x'+SUBSTRING(@GUID1С,20,4)+SUBSTRING(@GUID1С,25,13)+SUBSTRING(@GUID1С,15,4)+SUBSTRING(@GUID1С,10,4)+SUBSTRING(@GUID1С,1,8) SELECT dbo.sp_getid(CONVERT(binary(16),@GUIDasStr,1)) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2018, 13:44 |
|
GUID из 1С в MS SQL и обратно, как реализовывается?
|
|||
---|---|---|---|
#18+
vitkhv, вы маньяк! ) Про эту ссылку https://infostart.ru/public/236956/ ? Она ужасна, там нет чистого sql ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2018, 13:47 |
|
GUID из 1С в MS SQL и обратно, как реализовывается?
|
|||
---|---|---|---|
#18+
sc2r2bey, причем без всяких недокументированных fn_sqlvarbasetostr и fn_varbintohexstr ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2018, 13:49 |
|
GUID из 1С в MS SQL и обратно, как реализовывается?
|
|||
---|---|---|---|
#18+
я правильно понял: Код: php 1.
Зн - это GUID, мы берем 33 символа справа, потом из полученного результата 32 символа слева и конкатенируем с 0x ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2018, 13:50 |
|
GUID из 1С в MS SQL и обратно, как реализовывается?
|
|||
---|---|---|---|
#18+
я про fn_sqlvarbasetostr и fn_varbintohexstr и не слышал, пока не столкнулся с 1С, я использовал https://docs.microsoft.com/ru-ru/sql/t-sql/functions/cast-and-convert-transact-sql?view=sql-server-2017 лучше не бывает ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2018, 13:51 |
|
|
start [/forum/topic.php?fid=28&msg=39694757&tid=1518327]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
31ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
62ms |
get tp. blocked users: |
2ms |
others: | 16ms |
total: | 160ms |
0 / 0 |