Вход | Регистрация



Создание УИД УФ

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

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

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

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

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

Даже преобразование для верности в строку сделал УИДСтрока, хотя она и так строка. Подскажите, пожалуйста, что тут не так?
 
 
   Lexey_
 
1 - 23.03.18 - 14:13
(0) "преобразование для верности в строку сделал УИДСтрока, хотя она и так строка" сделай на всякий случай побольше преобразований Строка(Строка(Строка(Строка(УИДСтрока))))
   Lexey_
 
2 - 23.03.18 - 14:16
(0) УИДСтрока не является ли реквизитом формы другого типа?
   VitShvets
 
3 - 23.03.18 - 14:16
(0) Вместо "Строка(..." попробуй "СокрЛП(". Конструктор так ругается, когда кривой параметр.
(1) :)
   Малыш Джон
 
4 - 23.03.18 - 14:18
(0) буквы русские есть в УИД
   VitShvets
 
5 - 23.03.18 - 14:19
(4) Нету. У меня нормально отрабатывает:
Новый УникальныйИдентификатор("1a0ea41b-2d68-9644-b609-096e577bba48")
   LeoKeyn
 
6 - 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) отладчик что говорит?
   Lexey_
 
10 - 23.03.18 - 14:21
(6) "преобразовываю в строку по необходимости и обратно в УИД нужно" зачем обратно? есть же источник Ссылка.УникальныйИдентификатор?
 
 Рекламное место пустует
   LeoKeyn
 
11 - 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();
            КонецЦикла;
        КонецЕсли;
    //Исключение

    //    Сообщить(ОписаниеОшибки());

    //КонецПопытки;


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


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

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

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

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

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

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


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует