Имя: Пароль:
1C
 
Создание УИД УФ
, , ,
0 LeoKeyn
 
23.03.18
14:09
Всем привет! Подскажите, пожалуйста, что я делаю не правильно?
Создаю новый УИД на основе строки

УИД = Новый УникальныйИдентификатор(Строка(УИДСтрока));

Где УИДСтрока = "1a0ea41b-2d68-9644-b609-096e577bba48"

В итоге получаю ошибку:

{ВнешняяОбработка.ОбработкаОбращения.Форма.ФормаСписка.Форма(91)}: Ошибка при вызове конструктора (УникальныйИдентификатор)
    УИД = Новый УникальныйИдентификатор(Строка(УИДСтрока));
по причине:
Недопустимое значение параметра (параметр номер '1')

Даже преобразование для верности в строку сделал УИДСтрока, хотя она и так строка. Подскажите, пожалуйста, что тут не так?
1 Lexey_
 
23.03.18
14:13
(0) "преобразование для верности в строку сделал УИДСтрока, хотя она и так строка" сделай на всякий случай побольше преобразований Строка(Строка(Строка(Строка(УИДСтрока))))
2 Lexey_
 
23.03.18
14:16
(0) УИДСтрока не является ли реквизитом формы другого типа?
3 VitShvets
 
23.03.18
14:16
(0) Вместо "Строка(..." попробуй "СокрЛП(". Конструктор так ругается, когда кривой параметр.
(1) :)
4 Малыш Джон
 
23.03.18
14:18
(0) буквы русские есть в УИД
5 VitShvets
 
23.03.18
14:19
(4) Нету. У меня нормально отрабатывает:
Новый УникальныйИдентификатор("1a0ea41b-2d68-9644-b609-096e577bba48")
6 LeoKeyn
 
23.03.18
14:19
(4) Нету, получаю его из Ссылка.УникальныйИдентификатор, потом преобразовываю в строку по необходимости и обратно в УИД нужно
(3) Не помогло:(
7 Галахад
 
гуру
23.03.18
14:20
(6) Больше кода.
8 Малыш Джон
 
23.03.18
14:20
(5) да, тоже попробовал
9 Малыш Джон
 
23.03.18
14:21
(6) отладчик что говорит?
10 Lexey_
 
23.03.18
14:21
(6) "преобразовываю в строку по необходимости и обратно в УИД нужно" зачем обратно? есть же источник Ссылка.УникальныйИдентификатор?
11 LeoKeyn
 
23.03.18
14:22
Записываю в другую базу SQL:
         //Инициализация переменных
    ИмяСервераSQL = "SQL20141C";
    ПользовательSQL = "res";
    ПарольSQL = "rj;puca2015";
    БазаДанныхSQL = "Recourses";
    ТаблицаSQL = "RecoursessFiles";


    /////////////////////////////////////////
    //Подключение к SQL-серверу
    Попытка
        Соединение  = Новый COMОбъект("ADODB.Connection");
        Команда     = Новый COMОбъект("ADODB.Command");
        Выборка     = Новый COMОбъект("ADODB.RecordSet");
        Соединение.ConnectionString =
            "driver={SQL Server};" +
            "server="+ИмяСервераSQL+";"+
            "uid="+""+";"+
            "pwd="+""+";"+
            "database="+БазаДанныхSQL+";";
        Соединение.ConnectionTimeout = 30;
        Соединение.CommandTimeout = 600;
        //Открытие соединение
        Соединение.Open();
        Команда.ActiveConnection   = Соединение;
    Исключение
        Сообщить(ОписаниеОшибки());
        Возврат;
    КонецПопытки;
    УИД = Объект.ДокументСсылка.УникальныйИдентификатор();
        Для Каждого Строка ИЗ Объект.Файлы Цикл
        ДвоичныйДокумент = Новый ДвоичныеДанные(Строка.ПутьКФайлу);
        ДвоичныйДокумент = Base64Строка(ДвоичныйДокумент);
        //Хранилище = Новый ХранилищеЗначения(ДвоичныйДокумент);
         ТекстТекущейИнструкции =
        "INSERT INTO "+ТаблицаSQL+"
        |([Link], [FileName], [File],  [Format])
        |VALUES ('"+УИД+"', '"+Строка.ИмяФайла+"', '"+ДвоичныйДокумент+"', '"+Строка.ФорматФайла+"')";
    Попытка
        Соединение.Execute(ТекстТекущейИнструкции,,128);
    Исключение
        Сообщить(ОписаниеОшибки());
    КонецПопытки;

КонецЦикла;
ЭтаФорма.Закрыть("Успех");
КонецПроцедуры

Потом Достаю:

&НаКлиенте
Процедура ЗаполнитьТаблицу()

             //Инициализация переменных
    ИмяСервераSQL = "SQL20141C";
    ПользовательSQL = "res";
    ПарольSQL = "rj;puca2015";
    БазаДанныхSQL = "Recourses";
    ТаблицаSQL = "RecoursessFiles";


    /////////////////////////////////////////
    //Подключение к SQL-серверу
    Попытка
        Соединение  = Новый COMОбъект("ADODB.Connection");
        Команда     = Новый COMОбъект("ADODB.Command");
        Выборка     = Новый COMОбъект("ADODB.RecordSet");
        Соединение.ConnectionString =
            "driver={SQL Server};" +
            "server="+ИмяСервераSQL+";"+
            "uid="+""+";"+
            "pwd="+""+";"+
            "database="+БазаДанныхSQL+";";
        Соединение.ConnectionTimeout = 30;
        Соединение.CommandTimeout = 600;
        //Открытие соединение
        Соединение.Open();
        Команда.ActiveConnection   = Соединение;
    Исключение
        Сообщить(ОписаниеОшибки());
        Возврат;
    КонецПопытки;
    Если Объект.ДокументСсылка.Пустая() Тогда
        ТекстИнструкции =
        "SELECT
        |   *
        |FROM "+ТаблицаSQL;
    Иначе
        ТекстИнструкции =
        "SELECT
        |   *
        |FROM "+ТаблицаSQL+"
        |WHERE Link="+Строка(Объект.ДокументСсылка.УникальныйИдентификатор());
    КонецЕсли;
    
    /////////////////////////////////////////
    //Читаем записи
    
    //Попытка
        Команда.CommandText = ТекстИнструкции;
        Выборка = Команда.Execute();
        Если Выборка.BOF = Ложь Тогда
            Выборка.MoveFirst();
            Пока Выборка.EOF = Ложь Цикл
                //Сообщить("[C_DateTime]="+Дата(Выборка.Fields("C_DateTime").Value)
                //    +", [C_Char]="+СокрЛП(Выборка.Fields("C_Char").Value)
                //    +", [C_Numeric]="+Число(Выборка.Fields("C_Numeric").Value));
                    Строчка = Объект.Файлы.Добавить();
                    Строчка.Основание = ПолучитьСсылку(Выборка.Fields("Link").Value);
                    Строчка.ИмяФайла = Выборка.Fields("FileName").Value;
                    Строчка.ПутьКФайлу = Выборка.Fields("File").Value;
                    Строчка.ФорматФайла = Выборка.Fields("Format").Value;
                Выборка.MoveNext();
            КонецЦикла;
        КонецЕсли;
    //Исключение
    //    Сообщить(ОписаниеОшибки());
    //КонецПопытки;

КонецПроцедуры // ЗаполнитьТаблицу()

&НаСервере
Функция ПолучитьСсылку(УИДСтрока)
    УИД = Новый УникальныйИдентификатор(СокрЛП(УИДСтрока));
    Возврат Справочники.Клиенты.ПолучитьСсылку(УИД);    

КонецФункции // ПолучитьСсылку()
12 hhhh
 
23.03.18
14:22
(6) пиши всегда

XMLСтрока(УИДСтрока)

функцию Строка выкинь везде на всякий случай.
13 LeoKeyn
 
23.03.18
14:23
(11) В SQL поле типа varchar(MAX)
14 LeoKeyn
 
23.03.18
14:23
(12) Тоже не помогло
15 LeoKeyn
 
23.03.18
14:24
(12) Может попробовать делать его строкой перед записью в базу. Сейчас попробую
16 Малыш Джон
 
23.03.18
14:25
(15) в отладчике в строке с ошибкой какое значение у УИДСтроки?
17 LeoKeyn
 
23.03.18
14:27
(16) Вот это (0)
18 LeoKeyn
 
23.03.18
14:27
(16) тип строка, значение выше написал
19 Lexey_
 
23.03.18
14:27
(18) скрин отладчика давай
20 VitShvets
 
23.03.18
14:32
(18) Чудес не бывает. в (5) я в табло вставил строку, отработало без ошибок.
21 LeoKeyn
 
23.03.18
14:32
22 LeoKeyn
 
23.03.18
14:33
(20) так в том и дело, не могу понять в чем проблема то, почему он артачится
23 LeoKeyn
 
23.03.18
14:34
24 LeoKeyn
 
23.03.18
14:34
25 LeoKeyn
 
23.03.18
14:34
(24) эт уже не то)
26 Малыш Джон
 
23.03.18
14:35
если честно, странно получаешь ссылку:

сначала говоришь SELECT Link FROM Table WHERE Link = Строка(Ссылка.УИД()), а потом говоришь ССылка  = Новый УИД(Link)

а нельзя сразу ссылку использовать?
27 LeoKeyn
 
23.03.18
14:37
(26) Так он когда кладет ее в базу превращает в строку
28 Малыш Джон
 
23.03.18
14:37
я про момент получения говорю
29 LeoKeyn
 
23.03.18
14:38
(26) а условие на случай когда понадобится отбор по ссылке
30 Малыш Джон
 
23.03.18
14:39
(29) а ты можешь просто проверить наличие УИДа ссылки в выборке и если она там есть, то не получать её заново из УИДа из выборки, просто использовать ту ссылку, которую ты для условия в запросе использовал?
31 LeoKeyn
 
23.03.18
14:40
(30) так а если я не использую условие и мне нужно вывести все ссылки
32 LeoKeyn
 
23.03.18
14:43
(30) А не только по отбору
33 Малыш Джон
 
23.03.18
14:43
(32) значит SQL что-то не то с уидом делает. передавай в другую базу не уид, а строку
34 LeoKeyn
 
23.03.18
14:44
(33) то есть преобразовать его в строку до того как кинуть в базу? сейчас вот попробую
35 LeoKeyn
 
23.03.18
15:04
(33) не помогло, то же самое
36 Малыш Джон
 
23.03.18
15:15
(35) скрин из отладчика кинь