powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / [игнор отключен] [закрыт для гостей] / GUID из 1С в MS SQL и обратно, как реализовывается?
129 сообщений из 129, показаны все 6 страниц
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39694718
Фотография sc2r2bey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В 1С ссылки хранятся в БД в бинарном виде, например так 0x898BBCAEC5369A3611E6DC86B0D27F78, а 1С их отдает в виде строки вот так "85cbd3bd-06ec-11e6-a37b-14dae906a3f2", а как реализован этот механизм преобразования туда, а потом обратно?
Так вроде работает: SELECT CONVERT(binary(16), 'b0d27f78-dc86-11e6-898b-bcaec5369a36', 0) AS GUID;, но насколько это точно не знаю.
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39694745
vitkhv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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.
CREATE function [dbo].[sp_getid] (@id binary(16)) 
	returns char(36) 
    	as 
	begin 
	declare @unidentifier char(36) 
	declare @charvalue char(36) 
	select @unidentifier = CONVERT(char(36),CAST(@id as uniqueidentifier)) 
		select @charvalue = 
		right(@unidentifier, 8) 
		+ substring(@unidentifier,24,5) 
		+ substring(@unidentifier,19,5) 
		+ '-' 
		+ substring(@unidentifier,7,2) 
		+ substring(@unidentifier,5,2) 
		+ '-' 
		+ substring(@unidentifier,3,2) 
		+ left(@unidentifier,2) 
		+ substring(@unidentifier,12,2) 
		+ substring(@unidentifier,10,2) 
		+ substring(@unidentifier,17,2) 
		+ substring(@unidentifier,15,2) 
	
		return ( @charvalue ) 
		end; 



Такая функция нужна, что бы в 1С не получать ComeSafeAray

Потом в 1С пишите:
UID = ADOНаборДанныхТовары.Fields(0).Value;
Номенклатура = Справочники.Номенклатура.ПолучитьСсылку(Новый УникальныйИдентификатор(UID));

Вполне себе работает, тормозная правда немного на больших объемах.
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39694747
Фотография sc2r2bey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
спасибо, но мне нужна прямая работа с sql server туда и обратно
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39694748
vitkhv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sc2r2bey,
ну так это она и есть в направлении обратно.
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39694750
vitkhv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sc2r2bey,

т.е. эта функция вернет вам строку вида: "85cbd3bd-06ec-11e6-a37b-14dae906a3f2"
из вашего же селекта: SELECT CONVERT(binary(16), 'b0d27f78-dc86-11e6-898b-bcaec5369a36', 0) AS GUID
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39694752
Фотография sc2r2bey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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С знает толк в извращениях )))
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39694753
Фотография sc2r2bey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
на инфостате похожее было https://forum.infostart.ru/forum9/topic183950/ но там CONVERT не используется
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39694757
vitkhv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sc2r2beyна инфостате похожее было https://forum.infostart.ru/forum9/topic183950/ но там CONVERT не используется
Эта еще тормознее так как в ней используеться fn_sqlvarbasetostr.

Вы это читали, там я давал ссылку на что есть Guid в 1С, там все по полочкам разложено.
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39694769
vitkhv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sc2r2bey,
и вообще fn_sqlvarbasetostr не документирована.
Когда-то тоже с помощью нее пытался преобразования делать. Но нафиг, если binary в строку преобразовывается и обратно, а дальше просто местами меняешь значения.
Подобные функции и на 1С кстати есть.
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39694788
vitkhv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sc2r2bey,
Вот эта функция на 1С:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
Функция ПолучитьВнутрСсылку(лСсылка) Экспорт
    Если лСсылка = Неопределено Тогда
        Возврат "";
    КонецЕсли;
    Зн = ЗначениеВСтрокуВнутр(лСсылка); //Тот самый метод, о котором я писал выше.
    Зн = "0x" + Лев(Прав(Зн, 33), 32);
    Возврат Зн;
КонецФункции



взято отсюда .
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39694794
Фотография sc2r2bey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vitkhvsc2r2bey,
Вот эта функция на 1С:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
Функция ПолучитьВнутрСсылку(лСсылка) Экспорт
    Если лСсылка = Неопределено Тогда
        Возврат "";
    КонецЕсли;
    Зн = ЗначениеВСтрокуВнутр(лСсылка); //Тот самый метод, о котором я писал выше.
    Зн = "0x" + Лев(Прав(Зн, 33), 32);
    Возврат Зн;
КонецФункции



взято отсюда .
Вот еще нашел тут тоже накручено http://dubraver.ru/?page_id=146
я не 1С поэтому приходится работать напрямую со скулем
тут три задачи, вытянуть бинарник, перевести его в строку
перевести строку в бинарник
и сгенерировать ссылку и кинуть ее в таблицу
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39694813
vitkhv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sc2r2beyтут три задачи, вытянуть бинарник, перевести его в строку
перевести строку в бинарник
и сгенерировать ссылку и кинуть ее в таблицу

И на фига это все? Т.е. зачем это гонять туда сюда, смысл какой? Получить представление в 1С ном виде, что бы потом 1С ники могли использовать вот это: ПолучитьСсылку(Новый УникальныйИдентификатор(UID))?

SQL та это нафиг не надо, SQL чистый бинарник подсовываешь, без всяких преобразований вот в таком виде: SELECT * FROM _Reference16990 WHERE _IDRref = 0x898BBCAEC5369A3611E6DC86B0D27F78 и все работает.
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39694828
Фотография sc2r2bey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
потому что 1С не справляется со своим рестом и бинарник нельзя в json засунуть
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39694831
Фотография sc2r2bey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
прилетает вот такая хрень
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
[
  {
    "date": 1509397200,
    "latitude": 44.3641,
    "longitude": 56.3641,
    "vehicle": "85cbd3bd-06ec-11e6-a37b-14dae906a3f2"
  }
]


засунь vehicle в бинарное поле
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39694836
Фотография sc2r2bey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а vehicle это ссылка на элемент другого справочника
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39694847
vitkhv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sc2r2bey,

Да я понял. Та функция которую я дал она вам в обратку. 100% то, что надо. Которая же из 1с делает представление в sql у меня не было необходимости, поэтому проверьте просто запросом, найдет idrref или нет.
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39694867
Фотография sc2r2bey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я так вызвал функцию и параметры, насколько правильно я не знаю
Код: sql
1.
SELECT LOWER([dbo].[sp_getid](0x9414BCAEC5369A3611E84A0B3C29AC92)) AS GUID;


Вернул 3c29ac92-4a0b-11e8-9414-bcaec5369a36
а а вот SELECT CONVERT(binary(16), '3c29ac92-4a0b-11e8-9414-bcaec5369a36', 0) AS GUID;
Вернул 0x33433239414339322D344130422D3131
т.е. неправильно или я неправильно передал параметр
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39694879
vitkhv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sc2r2bey,

У вас гуид получить из полученой функцией sp_getid строки не получиться. Вам же надо выкинутьиз строки минусы, переставить местами литералы и добавить в начало 0x. Вон как я на 1с вам функцию скинул. Там в этой статье есть нужная вам функция на sql которая это делает.
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39694916
vitkhv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sc2r2bey,

вот она на 1С которую в SQL переписать можно 1 к 1:

Код: sql
1.
скульныйгуид = "0x" + СтрПолучитьСтроку(гуид,4) + СтрПолучитьСтроку(гуид,5) + СтрПолучитьСтроку(гуид,3) + СтрПолучитьСтроку(гуид,2) + СтрПолучитьСтроку(гуид,1); 
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39694933
Хитроглазый
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sc2r2bey,

для общего развития
https://ru.wikipedia.org/wiki/GUID
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39694938
vitkhv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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))
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39694942
Фотография sc2r2bey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vitkhv, вы маньяк! )
Про эту ссылку https://infostart.ru/public/236956/ ?
Она ужасна, там нет чистого sql
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39694947
vitkhv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sc2r2bey,
причем без всяких недокументированных fn_sqlvarbasetostr и fn_varbintohexstr
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39694949
Фотография sc2r2bey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я правильно понял:
Код: php
1.
Зн = "0x" + Лев(Прав(Зн, 33), 32);


Зн - это GUID, мы берем 33 символа справа, потом из полученного результата 32 символа слева и конкатенируем с 0x
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39694951
Фотография sc2r2bey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я про fn_sqlvarbasetostr и fn_varbintohexstr и не слышал, пока не столкнулся с 1С, я использовал https://docs.microsoft.com/ru-ru/sql/t-sql/functions/cast-and-convert-transact-sql?view=sql-server-2017 лучше не бывает
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39694958
Фотография sc2r2bey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vitkhv,


Код: php
1.
скульныйгуид = "0x" + СтрПолучитьСтроку(гуид,4) + СтрПолучитьСтроку(гуид,5) + СтрПолучитьСтроку(гуид,3) + СтрПолучитьСтроку(гуид,2) + СтрПолучитьСтроку(гуид,1); 


гуид это, который мы получили из

Код: 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.
CREATE function [dbo].[sp_getid] (@id binary(16)) 
	returns char(36) 
    	as 
	begin 
	declare @unidentifier char(36) 
	declare @charvalue char(36) 
	select @unidentifier = CONVERT(char(36),CAST(@id as uniqueidentifier)) 
		select @charvalue = 
		right(@unidentifier, 8) 
		+ substring(@unidentifier,24,5) 
		+ substring(@unidentifier,19,5) 
		+ '-' 
		+ substring(@unidentifier,7,2) 
		+ substring(@unidentifier,5,2) 
		+ '-' 
		+ substring(@unidentifier,3,2) 
		+ left(@unidentifier,2) 
		+ substring(@unidentifier,12,2) 
		+ substring(@unidentifier,10,2) 
		+ substring(@unidentifier,17,2) 
		+ substring(@unidentifier,15,2) 
	
		return ( @charvalue ) 
		end; 
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39694967
vitkhv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sc2r2beyя правильно понял:
Код: php
1.
Зн = "0x" + Лев(Прав(Зн, 33), 32);


Зн - это GUID, мы берем 33 символа справа, потом из полученного результата 32 символа слева и конкатенируем с 0x

ну да, только эта функция преобразовывает значение полученное 1С ной функцией ЗначениеВСтрокуВнутр(). У вас та такой нет, поэтому вам она не нужна. Просто в начале не понятно было, что вам нужно, я думал вы в 1С пишите.
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39694975
vitkhv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sc2r2beyvitkhv,


Код: php
1.
скульныйгуид = "0x" + СтрПолучитьСтроку(гуид,4) + СтрПолучитьСтроку(гуид,5) + СтрПолучитьСтроку(гуид,3) + СтрПолучитьСтроку(гуид,2) + СтрПолучитьСтроку(гуид,1); 


гуид это, который мы получили из

Код: 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.
CREATE function [dbo].[sp_getid] (@id binary(16)) 
	returns char(36) 
    	as 
	begin 
	declare @unidentifier char(36) 
	declare @charvalue char(36) 
	select @unidentifier = CONVERT(char(36),CAST(@id as uniqueidentifier)) 
		select @charvalue = 
		right(@unidentifier, 8) 
		+ substring(@unidentifier,24,5) 
		+ substring(@unidentifier,19,5) 
		+ '-' 
		+ substring(@unidentifier,7,2) 
		+ substring(@unidentifier,5,2) 
		+ '-' 
		+ substring(@unidentifier,3,2) 
		+ left(@unidentifier,2) 
		+ substring(@unidentifier,12,2) 
		+ substring(@unidentifier,10,2) 
		+ substring(@unidentifier,17,2) 
		+ substring(@unidentifier,15,2) 
	
		return ( @charvalue ) 
		end; 



да. Функция полностью выглядит так:
Код: sql
1.
2.
3.
4.
5.
гуид = Строка(докссылка.УникальныйИдентификатор());
Для й = 1 по СтрЧислоВхождений(гуид,"-") Цикл
гуид = СтрЗаменить(гуид,"-", Символы.ПС);
КонецЦикла;
скульныйгуид = "0x" + СтрПолучитьСтроку(гуид,4) + СтрПолучитьСтроку(гуид,5) + СтрПолучитьСтроку(гуид,3) + СтрПолучитьСтроку(гуид,2) + СтрПолучитьСтроку(гуид,1); 
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39694982
Фотография sc2r2bey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot vitkhv]sc2r2beyvitkhv,
да. Функция полностью выглядит так:
Код: sql
1.
2.
3.
4.
5.
гуид = Строка(докссылка.УникальныйИдентификатор());
Для й = 1 по СтрЧислоВхождений(гуид,"-") Цикл
гуид = СтрЗаменить(гуид,"-", Символы.ПС);
КонецЦикла;
скульныйгуид = "0x" + СтрПолучитьСтроку(гуид,4) + СтрПолучитьСтроку(гуид,5) + СтрПолучитьСтроку(гуид,3) + СтрПолучитьСтроку(гуид,2) + СтрПолучитьСтроку(гуид,1); 



Сейчас синтаксис 1С выучу ))

авторгуид = Строка(докссылка.УникальныйИдентификатор()); - это, например,
Код: php
1.
50cb4263-dd5c-11e6-898b-bcaec5369a36


авторДля й = 1 по СтрЧислоВхождений(гуид,"-") Цикл
гуид = СтрЗаменить(гуид,"-", Символы.ПС);
КонецЦикла;
Это непонятно, зачем цикл, чтобы удалить "-", т.е. должно получится "50cb4263dd5c11e6898bbcaec5369a36"
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39694986
vitkhv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sc2r2bey,

этот цикл преобразовывает 50cb4263-dd5c-11e6-898b-bcaec5369a36
в:
50cb4263
dd5c
11e6
898b
bcaec5369a36

итого 5 строк.
а потом просто строчку по номеру получает и в новом порядке их конкатенирует с добавлением 0x
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39694992
Фотография sc2r2bey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vitkhvsc2r2bey,

этот цикл преобразовывает 50cb4263-dd5c-11e6-898b-bcaec5369a36
в:
50cb4263
dd5c
11e6
898b
bcaec5369a36

итого 5 строк.
а потом просто строчку по номеру получает и в новом порядке их конкатенирует с добавлением 0x
т.е. это получается массив/коллекция, его собираем в строку "0х" + "898bbcaec5369a3611e6dd5c50cb4263"
Получилось, спасибо!!! Ты гений :)
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39695011
vitkhv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sc2r2bey,
да но только в 1С это работа с объектом текст, можно и через массив/коллекцию в той же 1С. С текстом просто быстрее будет.
Еще быстрее если со строкой работать:
Код: sql
1.
'0x'+SUBSTRING(@GUID1С,20,4)+SUBSTRING(@GUID1С,25,13)+SUBSTRING(@GUID1С,15,4)+SUBSTRING(@GUID1С,10,4)+SUBSTRING(@GUID1С,1,8)


в 1С даже синтаксис такой же.
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39695051
Фотография sc2r2bey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vitkhv, большое человеческое спасибо, я много дополнительного для себя подчерпнул!
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39695363
vitkhv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sc2r2bey,
всегда пожалуйста.

Дальше пишу как для вас, так и заметку для себя.

Функцию по получению UID из GUID написал свою:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
CREATE function [dbo].[sp_getid_] (@id binary(16)) 
	returns char(36) 
    WITH SCHEMABINDING
	as 
	begin 
	declare @unidentifier char(36),@charvalue char(36) 
	  
	SET @unidentifier = CONVERT(char(36),@id,1);  
	select @charvalue = SUBSTRING(@unidentifier,27,8)+'-'+SUBSTRING(@unidentifier,23,4)+'-'+SUBSTRING(@unidentifier,19,4)+'-'+SUBSTRING(@unidentifier,3,4)+'-'+SUBSTRING(@unidentifier,7,12); 
	

	return (@charvalue) 
	end; 
 


работает на 10-15% быстрее вот этой функции неизвестного автора:
Код: 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.
CREATE function [dbo].[sp_getid] (@id binary(16)) 
	returns char(36) 
    	as 
	begin 
	declare @unidentifier char(36) 
	declare @charvalue char(36) 
	select @unidentifier = CONVERT(char(36),CAST(@id as uniqueidentifier)) 
		select @charvalue = 
		right(@unidentifier, 8) 
		+ substring(@unidentifier,24,5) 
		+ substring(@unidentifier,19,5) 
		+ '-' 
		+ substring(@unidentifier,7,2) 
		+ substring(@unidentifier,5,2) 
		+ '-' 
		+ substring(@unidentifier,3,2) 
		+ left(@unidentifier,2) 
		+ substring(@unidentifier,12,2) 
		+ substring(@unidentifier,10,2) 
		+ substring(@unidentifier,17,2) 
		+ substring(@unidentifier,15,2) 
	
		return ( @charvalue ) 
		end; 


Думаю автор использовал преобразование binary через uniqueidentifier к CHAR , потому как видимо не разобрался как напрямую конвертировать binary в CHAR, CAST например это делать не умеет, только CONVERTс доп. параметром.


В моем варианте функции можно использовать вместо "+" для конкатенации функцию CONCAT (c 2012 MSSQL) или что еще лучше CONCAT_WS (c 2017 MSSQL) будет еще на 2-3% быстрее:
Код: sql
1.
CONCAT_WS('-',SUBSTRING(@unidentifier,27,8),SUBSTRING(@unidentifier,23,4),SUBSTRING(@unidentifier,19,4),SUBSTRING(@unidentifier,3,4),SUBSTRING(@unidentifier,7,12)); 


Вроде кажется, что такое 2-3 %, а на самом деле в нескольких местах выжмешь эти проценты и вот весь код начинает работать на 30-50% быстрее. Поэтому я такими вещами лучше не пренебрегать.

Ну и еще для тренировки написал функцию преобразования аналогичную:
Код: sql
1.
2.
3.
4.
5.
гуид = Строка(докссылка.УникальныйИдентификатор());
Для й = 1 по СтрЧислоВхождений(гуид,"-") Цикл
гуид = СтрЗаменить(гуид,"-", Символы.ПС);
КонецЦикла;
скульныйгуид = "0x" + СтрПолучитьСтроку(гуид,4) + СтрПолучитьСтроку(гуид,5) + СтрПолучитьСтроку(гуид,3) + СтрПолучитьСтроку(гуид,2) + СтрПолучитьСтроку(гуид,1);


но на TSQL:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
declare @GUIDasStr char(36),@GUID1С char(36);

SET @GUID1С = '3c29ac92-4a0b-11e8-9414-bcaec5369a36'

SELECT @GUIDasStr = '0x'+STRING_AGG(value,'') WITHIN GROUP(ORDER BY row ) /*функция доступна с 2017*/
FROM(
	SELECT CASE row 
		WHEN 4 THEN 1 
		WHEN 5 THEN 2 
		WHEN 3 THEN 3 
		WHEN 2 THEN 4 
		WHEN 1 THEN 5
		END row
	,value	 
	FROM(
		SELECT 
			ROW_NUMBER() OVER(ORDER BY 1/0) row, 
			value 
		FROM STRING_SPLIT(@GUID1С, '-') /*функция доступна с 2016*/
	)iQ
)iQQ; 

select ( CONVERT(binary(16),@GUIDasStr,1) ) 


Кстати самая тормозная часть этого запроса, желательно переписать:
Код: sql
1.
 WITHIN GROUP(ORDER BY row ) 


писал чтобы потренироваться в использовании табличной функции STRING_SPLIT. Функция удобная конечно, но для наших целей намного быстрее будет функция:
Код: sql
1.
'0x'+SUBSTRING(@GUID1С,20,4)+SUBSTRING(@GUID1С,25,13)+SUBSTRING(@GUID1С,15,4)+SUBSTRING(@GUID1С,10,4)+SUBSTRING(@GUID1С,1,8) 

или если MSSQL 2017 через CONCAT_WS вместо "+".
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39697296
Фотография sc2r2bey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
что-то все некорректно работает
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39697387
vitkhv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sc2r2beyчто-то все некорректно работает

Ну так проверьте почему?

Что выдаст такой запрос:
Код: sql
1.
2.
3.
4.
5.
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 * FROM _ReferenceXXX WHERE _IDRRef = CONVERT(binary(16),@GUIDasStr,1)



Где _ReferenceXXX это таблица справочника (вместо XXX номер), к которого должен формироваться запрос.
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39697393
vitkhv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если не знаете название таблицы, в 1С в табло выполните такой код:

Код: sql
1.
ПолучитьСтруктуруХраненияБазыДанных().Найти("Справочник.НужныйМнеСправочник","ИмяТаблицы").ИмяТаблицыХранения



вместо НужныйМнеСправочник напишите нужный справочник.
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39697397
vitkhv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для общей проверки работоспособности функции в табло выпоните такой код:
Код: sql
1.
Справочники.НужныйМнеСправочник.НайтиПоКоду("00000014622").УникальныйИдентификатор();


вместо НужныйМнеСправочник напишите нужный справочник.
вместо 00000014622 подставьте код имеющийся в НужномСправочнике.

Результат выполнения этой функции, а получиться что то подобное: "3c29ac92-4a0b-11e8-9414-bcaec5369a36"

вставляете в переменную @GUID1С вышеуказанного SQL запроса, соответственно вместо _ReferenceXXX подставляете результат функции ПолучитьСтруктуруХранения.

Табло вызывается в меню->сервис->табло

Выполняете, смотрите думаете.
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39697577
Фотография sc2r2bey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Напомню еще раз я не 1Сник, поэтому она далеко от меня, есть только SQL Server и веб сервер
Я получал GUID обоими функциями, потом на php преобразую в бинарник и пишу в базу, смотрю в 1С запись есть и все данные подтягиваются, но при при попытке открыть элемент справочника пишет объект не найден
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39697603
vitkhv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sc2r2bey,
авторпотом на php преобразую в бинарник

Как вы его на PHP преобразуете?
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39697614
vitkhv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sc2r2beyпишет объект не найден
там д.б. в таком виде: 193 86f0b888e3fcbec611e873b98345ccc8 первая цифра до пробела это и есть номер таблицы.

т.е. запрос в данном случае будет выглядеть так SELECT * FROM _Refernce193, а дальше неправильно преобразованный ГУИД 86f0b888e3fcbec611e873b98345ccc8 т.е. вам бы найти исходник GUID, и посмотреть в каком месте происходит неверное преобразование.
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39697619
vitkhv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
для того,чтобы точно убедиться, что там справочник выполните такой запрос:
Код: sql
1.
2.
3.
Select [TABLE_NAME] 
From INFORMATION_SCHEMA.TABLES
where TABLE_NAME like '%[A-Z,a-z]XXX'


где XXX номер таблицы из битой ссылки.
193 86f0b888e3fcbec611e873b98345ccc8

в данном случае 193.
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39697626
vitkhv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну а дальше уже выполняете вот это:

Код: sql
1.
2.
3.
4.
5.
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 * FROM _ReferenceXXX WHERE _IDRRef = CONVERT(binary(16),@GUIDasStr,1)



где @GUID1С берете из вашего файла обмена, а вместо _ReferenceXXX подставляете таблицу полученную в результате выполнения предыдущего запроса.
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39697787
Фотография sc2r2bey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
там что-то с 1С разбираются, как там все под капотом работает
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39697803
vitkhv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sc2r2beyтам что-то с 1С разбираются, как там все под капотом работает

Там видимо данные не догружаются, т.е. это не справочник не загрузился а, реквизит из этого справочника. Т.е. сам справочник загрузился нормально (иначе вы бы вообще ничего не увидели), а вот на то, что ссылается реквизит не загрузилось (другой справочник или перечисление или ПВХ или Документ). Поэтому я и говорю, выполните запрос который я дал и посмотрите есть ли вообще данные в таблице и что это за таблица. В общем донастраивайте обмен.
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39697806
vitkhv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sc2r2bey как там все под капотом работает
Ну удачи им, дусмаю через полгодика разберутся :)
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39697813
Фотография sc2r2bey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
надеюсь быстрее, данные падают в БД правильные, в 1С отображаются, а вот как они подтягиваются это магия ))
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39697830
vitkhv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sc2r2bey как они подтягиваются это магия ))

Честно говоря не понял про что вы, и причем здесь функции преобразования GUID.

Если вы про ссылку на реквизит, то обычный SELECT_Description FROM _ReferenceXXX WHERE _IDRref = @1, где @1 ссылка которая у вас битая и все это завернуто в sp_executesql или sp_execute. Если в профайлере не видите обращений, значит данные закешировались уже на сервере 1С.
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39697842
Фотография sc2r2bey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я тоже вас понимаю через раз
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39697846
Фотография sc2r2bey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот прилетают данные:
Код: javascript
1.
2.
3.
4.
5.
6.
{
    "date": 1536057600,
    "latitude": 45.3645,
    "longitude": 55.3645,
    "vehicle": "3c29ac92-4a0b-11e8-9414-bcaec5369a36"
}


вот в SQL Server
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39697847
Фотография sc2r2bey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а вот в 1С
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39697849
Фотография sc2r2bey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
т.е. он подтягивает и отображает данные а дальше непонятно как работает
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39697873
vitkhv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sc2r2beyт.е. он подтягивает и отображает данные а дальше непонятно как работает

В списке где ТС есть надпись объект не найден?

Это у вас регистр сведений _InfoRgXXX, периодический. Он подчинен регситратору, т.е. поле _RecorderRRef в этой таблице есть?

И вообще наименование всех полей в таблице покажите.
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39697880
Фотография sc2r2bey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
SELECT TOP 1 
      [_Fld8288]
      ,[_Fld8289]
      ,[_Fld8290RRef]
      ,[_Fld8291]
      ,[_Fld8292]
      ,[_Fld8293]
      ,[_Fld8294]
      ,[_Fld8295]
  FROM [tmsWeb].[dbo].[_InfoRg8287]
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39697881
Фотография sc2r2bey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Fld8290RRef - это ссылка на ТС
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39697902
vitkhv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sc2r2bey,


1. Он у вас даже не периодический, поля _Period нет.

2. Запустите 1С в режиме Обычного приложения с /RunModeOrdinaryApplication (Дополнительные параметры запуска в списке ИБ при запуске 1С, кнопка изменить).
3. В режиме обычного приложения запустите табло. Меню-Сервис-Табло.
3. В табло выполните команду Справочники.ТранспортныеСредства.ПолучитьСсылку(Новый УникальныйИдентификатор("3c29ac92-4a0b-11e8-9414-bcaec5369a36"))

Сообщите результат
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39697909
Фотография sc2r2bey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Справочники.уатТС.ПолучитьСсылку(Новый УникальныйИдентификатор("3c29ac92-4a0b-11e8-9414-bcaec5369a36"))
ИВЕКО 672
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39697915
vitkhv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sc2r2bey,
теперь в табло
ПолучитьСтруктуруХраненияБазыДанных().Найти("Справочник.уатТС","ИмяТаблицы").ИмяТаблицыХранения
что выдаст?
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39697918
Фотография sc2r2bey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ошибка

{Справочник.уатПараметрыВыработки.МодульМенеджера(89,33)}: Переменная не определена (уатОбновлениеИнформационнойБазы)
СпрОбъект.ЕдиницаИзмерения = <<?>>уатОбновлениеИнформационнойБазы.НайтиСоздатьЕдиницу(ОбластьНастроек.Область(НомерСтроки, 2, НомерСтроки, 2).Текст,
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39697927
vitkhv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sc2r2beyОшибка

{Справочник.уатПараметрыВыработки.МодульМенеджера(89,33)}: Переменная не определена (уатОбновлениеИнформационнойБазы)
СпрОбъект.ЕдиницаИзмерения = <<?>>уатОбновлениеИнформационнойБазы.НайтиСоздатьЕдиницу(ОбластьНастроек.Область(НомерСтроки, 2, НомерСтроки, 2).Текст,

Это у вас такая ошибка после запуска
Код: sql
1.
ПолучитьСтруктуруХраненияБазыДанных().Найти("Справочник.уатТС","ИмяТаблицы").ИмяТаблицыХранения


в табло ?
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39697929
vitkhv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sc2r2bey,
такого быть не может.
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39697931
Фотография sc2r2bey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39697932
vitkhv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sc2r2bey,
тогда вам надо идти в модуль менеджера и комментировать там весь код, иначе мы никогда не узнаем имя таблицы
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39697934
vitkhv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sc2r2bey,
либо запускать профайлер и открыть в этот момент справочник транспортные средства.
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39697942
vitkhv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sc2r2bey,
ну или запустить в табло такой код Справочники.уатТС.НайтиПоКоду("111111111111") снимая в этот момент трассу профайлера.

Там будет такой код:
Код: sql
1.
2.
3.
4.
exec sp_executesql N'SELECT
T1._IDRRef
FROM dbo._ReferenceXXX T1
WHERE ((T1._Fld1551 = @P1)) AND (T1._Code = @P2)',N'@P1 numeric(10),@P2 nvarchar(4000)',0,N'111111111111'


где _ReferenceXXX то что нам надо.
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39697951
vitkhv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Соответственно дальше запускаем вот это:


Код: sql
1.
2.
3.
4.
5.
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 * FROM _ReferenceXXX WHERE _IDRRef = CONVERT(binary(16),@GUIDasStr,1)



где _ReferenceXXX справочник уатТС
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39697959
Фотография sc2r2bey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторснимая в этот момент трассу профайлера
я вообще не понимаю что это
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39697960
Фотография sc2r2bey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сначала делали REST средствами 1С все работало, но 1С падала и тормозила постоянно, вот решили в обход и тут такие грабли
на скрине когда раст был 1с
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39697961
Фотография sc2r2bey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
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 * FROM _Reference170 WHERE _IDRRef = CONVERT(binary(16),@GUIDasStr,1)


этот код нормально отрабатывает, отдает строку из БД
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39697962
Фотография sc2r2bey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот этот метод https://yadi.sk/d/CSrfPmpngQdhNQ
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39697965
vitkhv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sc2r2bey
Код: sql
1.
2.
3.
4.
5.
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 * FROM _Reference170 WHERE _IDRRef = CONVERT(binary(16),@GUIDasStr,1)


этот код нормально отрабатывает, отдает строку из БД

Значит функция преобразования GUID которую я вам дал работает правильно.
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39697967
Фотография sc2r2bey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну да, я сразу это сказал, проблема как эта хрень читается в 1С ))
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39697968
vitkhv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sc2r2beyну да, я сразу это сказал, проблема как эта хрень читается в 1С ))
Она и в 1С читается правильно.
Видимо в справочнике ТС, ссылочные поля заполнены битыми ссылками.

Структуру справочника ТС пришлите.
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39697970
Фотография sc2r2bey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну так родной рест писал все открывалось(оба скрина выше), а мои данные нет :(
Код: 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.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
SELECT TOP 1 [_IDRRef]
      ,[_Version]
      ,[_Marked]
      ,[_PredefinedID]
      ,[_ParentIDRRef]
      ,[_Folder]
      ,[_Description]
      ,[_Fld2693]
      ,[_Fld2694]
      ,[_Fld2695]
      ,[_Fld2696RRef]
      ,[_Fld2697RRef]
      ,[_Fld2698RRef]
      ,[_Fld2699]
      ,[_Fld2700]
      ,[_Fld2701]
      ,[_Fld2702RRef]
      ,[_Fld2703]
      ,[_Fld2704]
      ,[_Fld2705]
      ,[_Fld2706]
      ,[_Fld2707]
      ,[_Fld2708]
      ,[_Fld2709]
      ,[_Fld2710]
      ,[_Fld2711]
      ,[_Fld2712RRef]
      ,[_Fld2713RRef]
      ,[_Fld2714RRef]
      ,[_Fld2715RRef]
      ,[_Fld2716]
      ,[_Fld2717]
      ,[_Fld2718RRef]
      ,[_Fld2719]
      ,[_Fld2720]
      ,[_Fld2721]
      ,[_Fld2722]
      ,[_Fld2723]
      ,[_Fld2724]
      ,[_Fld2725]
      ,[_Fld2726]
      ,[_Fld2727]
      ,[_Fld2728]
      ,[_Fld2729]
      ,[_Fld2730RRef]
      ,[_Fld2731RRef]
      ,[_Fld2732RRef]
      ,[_Fld2733RRef]
      ,[_Fld2734RRef]
      ,[_Fld2735_TYPE]
      ,[_Fld2735_RTRef]
      ,[_Fld2735_RRRef]
      ,[_Fld2736]
      ,[_Fld2737]
      ,[_Fld2738]
      ,[_Fld2739RRef]
      ,[_Fld2740]
      ,[_Fld2741]
      ,[_Fld2742]
      ,[_Fld2743RRef]
      ,[_Fld2744RRef]
      ,[_Fld2745RRef]
      ,[_Fld2746]
      ,[_Fld2747]
      ,[_Fld2748RRef]
      ,[_Fld2749RRef]
      ,[_Fld10037]
      ,[_Fld10038]
      ,[_Fld10039]
      ,[_Fld10040]
      ,[_Fld10041]
      ,[_Fld10042]
      ,[_Fld10043]
      ,[_Fld10044]
      ,[_Fld10045]
      ,[_Fld10046]
      ,[_Fld10047]
      ,[_Fld10048]
      ,[_Fld10049]
      ,[_Fld10050]
      ,[_Fld10051]
      ,[_Fld10052]
      ,[_Fld10053]
      ,[_Fld10054]
      ,[_Fld10055]
      ,[_Fld10156]
  FROM [].[dbo].[_Reference170]
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39697971
vitkhv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sc2r2bey, сделайте тестирование и исправление, пункт проверка ссылочной целостности. Это в конфигураторе меню-администрирование-тестирование и исправление
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39697973
Фотография sc2r2bey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
выходит, что мой код побил ссылки?
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39697980
vitkhv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sc2r2beyну так родной рест писал все открывалось(оба скрина выше), а мои данные нет :(


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


Вообще бы по идее снять трассу того, что ваш код преобразования делает в профайлере, там хотя бы понятнее станет, что происходит.

Скорей всего в одном из этих полей неправильно преобразованная ссылка:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
 ,[_Fld2696RRef]
      ,[_Fld2697RRef]
      ,[_Fld2698RRef]
      ,[_Fld2702RRef]
      ,[_Fld2712RRef]
      ,[_Fld2713RRef]
      ,[_Fld2714RRef]
      ,[_Fld2715RRef]
      ,[_Fld2718RRef]
      ,[_Fld2730RRef]
      ,[_Fld2731RRef]
      ,[_Fld2732RRef]
      ,[_Fld2733RRef]
      ,[_Fld2734RRef]
      ,[_Fld2735_TYPE]
      ,[_Fld2735_RTRef]
      ,[_Fld2735_RRRef]
      ,[_Fld2739RRef]
      ,[_Fld2743RRef]
      ,[_Fld2744RRef]
      ,[_Fld2745RRef]
      ,[_Fld2748RRef]
      ,[_Fld2749RRef]
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39697981
vitkhv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sc2r2beyвыходит, что мой код побил ссылки?
Да нет , я думаю где то не недогружает какие то данные.
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39697982
vitkhv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sc2r2beyвыходит, что мой код побил ссылки?
Она такое сообщение выдает в случае если в поле записанная ссылка на не существующий элемент.
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39697983
vitkhv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возьмите откройте справочник ТС и откройте ИВЕКО 672 . Посмотрите на каком поле битая ссылка.
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39697984
Фотография sc2r2bey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторВообще бы по идее снять трассу того, что ваш код преобразования делает в профайлере, там хотя бы понятнее станет, что происходит.
по идее не совсем понимаю
преобразование в одну сторону, мне приложение присылает вот такой массив:
Код: javascript
1.
2.
3.
4.
5.
6.
{
    "date": 1536057600,
    "latitude": 45.3645,
    "longitude": 55.3645,
    "vehicle": "3c29ac92-4a0b-11e8-9414-bcaec5369a36"
}



я записываю в БД:
Код: 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.
25.
26.
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)

INSERT INTO [tmsWeb].[dbo].[_InfoRg8287] 
(
		[_Fld8288], 
		[_Fld8289],
		[_Fld8290RRef],
		[_Fld8291],
		[_Fld8292],
		[_Fld8293],
		[_Fld8294],
		[_Fld8295]
)
VALUES 
(
		'4018-09-04 13:08:00',
		'2001-01-01 13:08:00',
		CONVERT(binary(16),@GUIDasStr,1),
		45.4,
		36.6,
		0,
		0,
		''
);



результат известен
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39697988
Фотография sc2r2bey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я тоже понимаю, что чего-то не хватает
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39697989
vitkhv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сделайте так
Код: sql
1.
2.
3.
4.
5.
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)

DELETE FROM  [tmsWeb].[dbo].[_InfoRg8287] WHERE _Fld8290RRef = CONVERT(binary(16),@GUIDasStr,1)



Посмотрите, будет после этого ругаться?
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39697991
Фотография sc2r2bey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
все удалил (строк обработано: 19010)
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39697992
vitkhv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в таблице записи остались?
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39697993
vitkhv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sc2r2bey,
если остались откройте регистр в 1С и посмотрите будет ли ругаться, на те поля которые вы не вносили своим кодом.
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39697994
Фотография sc2r2bey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нет
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39697995
vitkhv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sc2r2bey,
а еще лучше - внесите одну запись старым алгоритмом и одну запись новым, сравните чем отличаются.
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39697997
Фотография sc2r2bey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
старым не смогу, это с мобильного пишется через рест 1с у меня нет доступа к нему, могу только новым
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39698006
vitkhv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Судя по коду у вас там ещё и координаты пишутся, он скорей всего обращается при открытии к другому справочнику или РС и пишет вам что ссылка битая, т.к. получает ее через идентификатор.
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39698008
vitkhv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В это регистр вы все правильно пишите, смотрите что он пытается при открытии получить.
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39698020
vitkhv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sc2r2bey,

Попробуйте в отладчике поставить остановку по ошибке, и вызвать опять ошибку, м.б. покажет на какой строке ошибка.
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39698023
vitkhv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sc2r2bey,

Второй вариант, запустить профайлер и посмотреть какой запрос вызывает ошибку.
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39698026
vitkhv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати а ну как добавьте в этот регистр руками запись из 1С. Будет такую ошибку выдавать?
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39698031
Фотография sc2r2bey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторПопробуйте в отладчике поставить остановку по ошибке, и вызвать опять ошибку, м.б. покажет на какой строке ошибка.
я не знаю как это сделать
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39698032
Фотография sc2r2bey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторВторой вариант, запустить профайлер и посмотреть какой запрос вызывает ошибку.
что вы имеете ввиду?
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39698033
Фотография sc2r2bey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторКстати а ну как добавьте в этот регистр руками запись из 1С. Будет такую ошибку выдавать?
нет ошибки
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39698036
Фотография sc2r2bey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
руками стрелкой выделена разницы нет
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39698058
vitkhv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sc2r2bey,

Значит дальше смотрите алгоритм в менеджере записи регистра сведений, он кудан что-то ещё добавляет при записи, а потом при открытии это считывает. Кстати не помню есть ли подписка на событие для записи РС, если есть то ещё код м.б. в подписке.
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39698062
vitkhv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sc2r2bey,

А вообще лучше трассу снять в замере производительности или на крайний случай в профайлере, но вы не тем ни тем пользоваться не умеете. Профайлер та надо знать, как использовать, это же инструмент без которого как без рук в MSSQL. Почему вы им не пользуетесь? Я с помощью профайлера полностью приложение раскручивал, которое без документации было. А админ у меня не зная 1С только с помощью профайлера отследил, что и в какие таблички кладется не используя ПолучитьСтруктуруХранения(), причем отслеживал механизмы регистров расчетов, самое сложное, что есть в 1С. Я честно говоря был под впечатлением. Я та думал ну умеет он там какие-то простенькие селекты писать. А потом узнал уже, что у него сертификаты по скулю.
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39698072
vitkhv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sc2r2bey,

Ещё можно поставить признак остановка по ошибке, в конфигурационных, может остановиться на ошибке и тогда увидим к какой таблице обращение идёт.
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39698073
Фотография sc2r2bey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторЗначит дальше смотрите алгоритм в менеджере записи регистра сведений, он кудан что-то ещё добавляет при записи, а потом при открытии это считывает. Кстати не помню есть ли подписка на событие для записи РС, если есть то ещё код м.б. в подписке.
как это сделать?
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39698074
vitkhv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sc2r2beyавторПопробуйте в отладчике поставить остановку по ошибке, и вызвать опять ошибку, м.б. покажет на какой строке ошибка.
я не знаю как это сделать

В Гугле посмотрите, там инструкций полный интернет.
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39698075
Фотография sc2r2bey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторЕщё можно поставить признак остановка по ошибке, в конфигурационных, может остановиться на ошибке и тогда увидим к какой таблице обращение идёт.
как это сделать?
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39698077
Фотография sc2r2bey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
с профайлом разберусь, но как это мне поможет?
если в самой конфигурации добавляется нормально, если рест 1с добавляет нормально, а мой запрос работает не корректно, значит я что-то упускаю
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39698083
Фотография sc2r2bey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не знаю, правильно ли я сделал, но отладчик не перехватывает эту ошибку
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39698106
vitkhv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sc2r2beyкак это мне поможет?
ну как же, перед нажатием кнопки записать в РС при вводе нового, начнёте снимать трассу, и вырубите как запишеться элемент. Там в трассе будут все команды от 1С к SQL серверу. Соответственно там и увидите, что он там пишет помимо этого регистра, раз в коде 1С не хотите разбираться. Ну и вообще мне трудно объяснять такие элементарные вещи, вам лучше почитать зачем нужен профайлер и как его использовать совместно с 1С. Статей на эту тему море.
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39698109
vitkhv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sc2r2beyне знаю, правильно ли я сделал, но отладчик не перехватывает эту ошибку
У вас наверняка не подключен как предмет отладки сервер 1С, проверьте и подключите. Сервер 1С к отладчику подключается через правку реестра. Так же подключите отладку фоновых заданий. Как делается всё есть в Гугле.
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39698121
vitkhv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автормой запрос работает не корректно
ваш запрос полностью корректный, только вы должны понимать, что там запись идёт не только в эту таблицу, а в ещё и в другие. Запись может осуществляться как триггерами 1С (событийный механизм), так и модулями этого регистра.
Там также могут быть расширения конфигурации которые тоже работают как триггеры. В каком месте осуществляться такая запись вам нужно разобраться. Поэтому прямая запись в таблицы 1С и не рекомендуется т.к. необходимо обладать недюжинными знаниями. И 99.9% 1С ников скажут вам, что зря вы на такое замахнулись, кто-то вспомнит про "лицензионное соглашение" (кстати, запрет 1С на прямой, в обход платформы доступ мы можем игнорировать) .
Ваш же комментарий выделенный мною говорит о том, что знаний у вас на данном этапе недостаточно. Потому как запись в РС у вас осуществляться корректно, функции преобразования guid работают правильно, в чем мы с вами и убедились.
Поэтому вам так или иначе придется лезть в код и разбираться что к чему.
Будет ли вам достаточно, чтобы разобраться только алгоритмов MSSQL или придется ещё и разбираться с 1С я не знаю.
Но мне, чтобы писать обмены, между базами 1С на уровне MSSQL пришлось разбирать как архитектуру и алгоритмы конфигураций на уровне 1С, так и архитектуру БД на уровне MSSQL. Ушло у меня на это порядка полугода. Причем сами конфигурации между которыми осуществлялся обмен были различными УТ 11.1 и много Розница 2.2. После этого я знал на уровне консультанта эти конфигурации, сейчас уже подзабыл конечно многое т.к. у меня сейчас ERP и УПП.
Все это я рассказал, чтобы вы осознали сложность задачи за которую беретесь. У вас конечно все проще на несколько порядков, но так или иначе разбираться придется.
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39698194
vitkhv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sc2r2bey,
я вот сейчас подумал, может у вас сообщение вообще не системное, т.к. в системном сообщении д.б. идентификатор и номер таблицы. Сделайте глобальный поиск по конфигурации (Ctrl+Shift+F) слова "Объект не найден".
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39698208
Фотография sc2r2bey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторя вот сейчас подумал, может у вас сообщение вообще не системное, т.к. в системном сообщении д.б. идентификатор и номер таблицы. Сделайте глобальный поиск по конфигурации (Ctrl+Shift+F) слова "Объект не найден".
не хочется мне в 1С лезть, вот результаты поиска
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39698209
Фотография sc2r2bey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39698210
Фотография sc2r2bey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
с mssql разберусь я месяц с ним работаю
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39698226
vitkhv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sc2r2beyс mssql разберусь я месяц с ним работаю
В данной задаче этого может быть мало.


А почему вы не пользуете OPENJSON?

Код: 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.
25.
26.
27.
28.
29.
30.
31.
DECLARE @json NVARCHAR(4000) = N'{
    "date": 1536057600,
    "latitude": 45.3645,
    "longitude": 55.3645,
    "vehicle": "3c29ac92-4a0b-11e8-9414-bcaec5369a36"
}'

INSERT INTO [dbo].[_InfoRg8287] 
(		[_Fld8288], 
		[_Fld8289],
		[_Fld8290RRef],
		[_Fld8291],
		[_Fld8292],
		[_Fld8293],
		[_Fld8294],
		[_Fld8295])
SELECT
	'4018-09-04 13:08:00'
	,'2001-01-01 13:08:00', 
	CONVERT(binary(16),'0x'+SUBSTRING(vehicle,20,4)+SUBSTRING(vehicle,25,13)+SUBSTRING(vehicle,15,4)+SUBSTRING(vehicle,10,4)+SUBSTRING(vehicle,1,8),1)  vehicle
	,latitude
	,longitude
	,0
	,0
	,''
FROM OPENJSON(@json)  
WITH (date char(10)
	,latitude numeric(15,4)
	,longitude numeric(15,4)
	,vehicle  char(36))
AS t
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39698228
Фотография sc2r2bey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я уже несколько раз говорил, реализован REST на 1С
мне нужен костыль сделать напрямую писать этот объект в базу, т.к. 1С не справляется
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39698236
vitkhv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sc2r2bey,
а я пример вам чего привел? Там от 1С только таблицы. Массовый Insert будет явно быстрее вашего построчного insert. Которым вы вряд ли обгоните 1Сй менеджер записи РС.
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39698271
vitkhv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В поиске по Объект не найден ничего, что могло бы помочь не увидел.

В том методе что вы мне дали, у вас запись должна проходить по 2 РС:

1. МенЗаписи = РегистрыСведений.уатТекущееМестоположениеПоGPS.СоздатьМенеджерЗаписи();
2. МенЗаписи = РегистрыСведений.уатИсторияМестоположенияПоGPS.СоздатьМенеджерЗаписи();

в своем инсерте вы пишете только в 1.

Поэтому если не хотите лезть в 1С запустите профайлер и на ручной записи в 1С снимите трассу, покажите мне.

ИЛИ\И

2. включите отладку на сервере 1С, запустите 1С предприятие в режиме отладки
2.1 поставте галку останавливаться по ошибке, откройте РС с ошибкой.
2.2 если пункт 2.1 не поможет снимите трассу по замеру производительности. Покажите мне.
2.3 если не поможет уже тогда надо лезть в код и смотреть как минимум, что в менеджере записи и что происходит при открытии когда происходит ошибка.

3. препешите ваш код на OPENJSON, полностью работоспособный пример под вашу таблицу я привел выше, только естественно передавайте ей сразу весь полученный JSON. Этим вы добьетесь массового инсерта, что будет явно быстрее вашего построчного:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
INSERT INTO [tmsWeb].[dbo].[_InfoRg8287] 
(
		[_Fld8288], 
		......
)
VALUES 
(
		'4018-09-04 13:08:00',
		'2001-01-01 13:08:00',
		CONVERT(binary(16),@GUIDasStr,1),
		...
);



МенеджерЗаписи() для РС в 1С делает ровно тот же самый построчный insert into values что и у вас, только через препаред хранимку, что еще быстрее чем у вас.
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39698604
vitkhv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sc2r2bey,
скачал я эту конфу УАТ, повторил ошибку.

У вас эта проблема из-за времени

в полях со временем должно быть так:
в первом поле должна быть дата без времени:
'4018-09-05 00:00:00',
во втором поле время без даты:
'2001-01-01 13:08:00',
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39698613
vitkhv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Т.е. если взять ваш алгоритм, ошибка у вас в первом поле, там во времени вместо '4018-09-04 13:08:00' д.б. '4018-09-04 00:00:00'
Код: 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.
25.
26.
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)

INSERT INTO [tmsWeb].[dbo].[_InfoRg8287] 
(
		[_Fld8288], 
		[_Fld8289],
		[_Fld8290RRef],
		[_Fld8291],
		[_Fld8292],
		[_Fld8293],
		[_Fld8294],
		[_Fld8295]
)
VALUES 
(
		'4018-09-04 00:00:00',
		'2001-01-01 13:08:00',
		CONVERT(binary(16),@GUIDasStr,1),
		45.4,
		36.6,
		0,
		0,
		''
);
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39698648
Фотография sc2r2bey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vitkhv,

авторскачал я эту конфу УАТ, повторил ошибку.

У вас эта проблема из-за времени

в полях со временем должно быть так:
в первом поле должна быть дата без времени:
'4018-09-05 00:00:00',
во втором поле время без даты:
'2001-01-01 13:08:00',
даааа, спасибо!!!
а я был рядом с решением, я еще у нашего 1сника спрашиваю, почему так странно сделано два поля datatime2(0) из первого берется дата, а из второго время? )))))))) Рарус порадовал
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39698657
vitkhv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sc2r2beyvitkhv,

Рарус порадовал

Не ну а че, вставим в таблицу второе поле datetime2() и пофиг, что надо будет в два раза больше места для хранения и вставка идти будет медленнее. Да 1С ники они такие. Хотя фирма 1С такого себе не позволяет.

И перепишите все на
OPENJSON()
не повторяйте ошибок 1С ников.
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39698659
vitkhv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sc2r2bey,
и то, что в справочнике в модуле менеджера будет ошибка, которая не даст справочнику открыться и использовать метод ПолучитьСтруктуруХраненияБД() будет нельзя, тоже пофиг.

Я помню в 10 лет назад выпилил этот УАТ из УПП, т.к. от Раруса (ну или чей он там был 10 лет назад) еще и обновления не вовремя приходили и забыл как страшный сон.
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39698689
Фотография sc2r2bey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vitkhv, спасибо за OPENJSON() и за возню со мной ))
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39698690
Фотография sc2r2bey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sc2r2bey,

авторНе ну а че, вставим в таблицу второе поле datetime2() и пофиг, что надо будет в два раза больше места для хранения и вставка идти будет медленнее.
там еще три одинаковых индекса ))) сейчас в таблице 2000000 записей, добавь запись и пошла переиндексация, а запись идет регулярно и часто ))))
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39698757
vitkhv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot sc2r2bey]sc2r2bey,

автортри одинаковых индекса ))) сейчас в таблице 2000000 записей, добавь запись и пошла переиндексация, а запись идет регулярно и часто ))))


Я бы рассмотрел на вашем месте два предложения

1) Пусть 1С ник сделает второй такой же регистр с префиксом архив и в запросах переделает на объединение архивного и не архивного регистров. В архивном хранятся все записи кроме последнего месяца(или недели), а в неархивном регистре соответственно хранятся записи за последний месяц(или неделю). Записи из неархивном сливаются в архивный по ночам, за один день.

2) в регистр добавить поле с типом уникальный идентификатор и при вставке средствами SQL генерировать в этом поле sequintial GUID. Тогда вставка будет проходить пачками в конец таблицы, к чему это приведет и как это примерно сделать очень хорошо написано здесь .
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39698763
vitkhv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sc2r2beyvitkhv, спасибо за OPENJSON() и за возню со мной ))

Нет тут ценное в этом посте не openjson(), тем более в этом методе есть большой недостаток, нужен минимум 2016 сервер, что не каждый может себе позволить.
Как по мне, ценное в этом посте это информация о GUID собранная в одном месте с примерами и ссылками и функциии преобразования GUID.
Если бы в свое время мне бы объяснили на таком уровне, я бы не убил кучу времени на то, чтобы это осознать. Представьте, у тебя горят сроки, тебе надо писать прямые обмены между базами 1С, а ты сидишь и тупишь с GUID. У вас тоже самое бы было, если бы я этот путь предварительно не прошел и вам все это не объяснил.
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39698849
Фотография sc2r2bey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
согласен, это самое дорогое!
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39698851
Фотография sc2r2bey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я предложил отдельно создать таблицу и туда координаты писать, а потом из 1С по необходимости забирать, только по уму ее спроектировать(таблицу)
пакетной загрузки нет, координаты прилетают по одной из приложения. в перспективе можно оптимизировать, например сервер очередей развернуть
...
Рейтинг: 0 / 0
GUID из 1С в MS SQL и обратно, как реализовывается?
    #39698855
Фотография sc2r2bey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и сервер у меня 2008, надо сертифицироваться, подскажешь где? ))
...
Рейтинг: 0 / 0
129 сообщений из 129, показаны все 6 страниц
Форумы / [игнор отключен] [закрыт для гостей] / GUID из 1С в MS SQL и обратно, как реализовывается?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]