Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Сравнить УникальныйИдентификатор и СТРОКУ
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Система компоновки данных
Constantus
Приветствую, Форумчане!
1с8.3.6, БСП, самопис, УФ

Имеется некий отчет СКД, который получает данные

1. 62eb77f6-0bf6-4ba3-84e9-8751e13ee027 - уникальный код как СТРОКА
2. 62eb77f6-0bf6-4ba3-84e9-8751e13ee027 - как "УникальныйИдентификатор"

Как видно визуально значения одинаковы, но типы разные... Имеется ли возможность сравнить эти два типа и сделать вывод, что эти значения одинаковы или нет?

Т.е. сравнивать в СКД УникальныйИдентификатор и СТРОКУ?
Vofka
ВЫРАЗИТЬ(УникальныйИдентификатор КАК СТРОКА)
pablo
ВЫРАЗИТЬ(УникальныйИдентификатор КАК СТРОКА(40))

Для сравнения строка должна быть ограниченной длины
Vofka
pablo @ Вчера, 17:35 необходимо зарегистрироваться для просмотра ссылки ,
тогда лучше КАК СТРОКА(36)
Petre
Из разговора программистов:
...
- Возьмем, например, 1000, или для ровного счета 1024...
Vofka
Petre, в сообщении выше я не поумничать хотел. Если преобразовать идентификатор к строке с длиной 40, я не проверял, но предполагаю, что возможно, в строке будет 4 пробела в конце и как следствие если сравнивать такую строку со строкой без пробелов, оно может дать не тот эффект, который ожидается. А если приводить к строке с длиной 36 символов, то такого 100% не будет.
pablo
Моя вина в том, что я поленился считать количество символов
Petre
Vofka @ Today, 9:12 необходимо зарегистрироваться для просмотра ссылки ,
Все верно, 36. 32 значимых и 4 для дефизов. Я тоже за то, чтобы считать точно smile.gif
Constantus
Попробую уточнить задачу, сейчас подробности вышли (как всегда до последнего в тайне держат

Есть Заказ, в его ТЧ есть реквизит "КлючСтроки" как уникальный индентификатор

Имеется регистр накопления, "Итоги", там имеются данные с регистром "КлючСтроки", но как СТРОКА...

Требуется объединить (левое объединение) ТЧ Заказа и этого РН "Итоги" по реквизиту "КлючСтроки" один из которых уникальный индентификатор (ТЧ Заказа) другой СТРОКА из регистра накопления...

Как в СКД сделать подобное объединение?
Vofka
Constantus, ну так написали ж: ВЫРАЗИТЬ(УникальныйИдентификатор КАК СТРОКА(36)). Это мы привели УникальныйИдентификатор к строке. Делайте с ним дальше что хотите, он уже строка.
Vidocq05
Цитата(Vofka @ 06.06.19, 11:22) необходимо зарегистрироваться для просмотра ссылки
Это мы привели УникальныйИдентификатор к строке.

Вроде бы в запросе нельзя преобразовывать типы.
Vofka
Vidocq05, можно.
Vidocq05
Vofka @ Сегодня, 13:15 необходимо зарегистрироваться для просмотра ссылки ,

ГУИД = ДокСсылка.УникальныйИдентификатор();    
    
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    ВЫРАЗИТЬ(&ГУИД КАК СТРОКА(36)) КАК Поле1";
    
    Запрос.УстановитьПараметр("ГУИД", ГУИД);
    
    РезультатЗапроса = Запрос.Выполнить();
    
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        // Вставить обработку выборки ВыборкаДетальныеЗаписи
    КонецЦикла;


Ругается
Vofka
Vidocq05, хм. А так ругается:

ГУИД = СокрЛП(ДокСсылка.УникальныйИдентификатор());
    
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
|    ВЫРАЗИТЬ(&ГУИД КАК СТРОКА(10)) КАК Поле1";

Запрос.УстановитьПараметр("ГУИД", ГУИД);

РезультатЗапроса = Запрос.Выполнить();

ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
    // Вставить обработку выборки ВыборкаДетальныеЗаписи
КонецЦикла;


?

И так
| ВЫРАЗИТЬ(100 КАК СТРОКА(10)) КАК Поле1

?
Vidocq05
Цитата(Vofka @ 06.06.19, 13:55) необходимо зарегистрироваться для просмотра ссылки
ГУИД = СокрЛП(ДокСсылка.УникальныйИдентификатор());

Так Вы уже преобразовали в строку, т.е. в запрос уже пошла строка.
Vofka
Vidocq05, я понимаю, но мне интересно вот что: можно ли преобразовать строку в строку (меньшего размера), число в строку?
Vidocq05
Цитата(Vofka @ 06.06.19, 13:55) необходимо зарегистрироваться для просмотра ссылки
И так
| ВЫРАЗИТЬ(100 КАК СТРОКА(10)) КАК Поле1

?

И так ругается

Vofka @ Сегодня, 14:57 необходимо зарегистрироваться для просмотра ссылки ,
Строку в строку меньшего размера можно

На сколько я знаю, преобразовать тип значения в другой тип в запросе нельзя вообще.
Constantus
Vofka @ Сегодня, 14:22 необходимо зарегистрироваться для просмотра ссылки ,


Пытаюсь добавить в одной временной таблице поле:

ВЫРАЗИТЬ(ПоступлениеИзделийВПодразделениеОсновнаяКомплектация.КлючСтроки КАК СТРОКА(36))


Ошибка: Несовместимые типы "Выразить"

Это я пытался из уникального индентификатора во временной таблице сделать строку, чтобы потом связать по нему с другой ВТ

Где нужно преобразовывать? В связях между временными таблицами?
Petre
Преобразования типов в запросе нет - только приведение.
Constantus
Petre @ Сегодня, 20:00 необходимо зарегистрироваться для просмотра ссылки ,

Так возможно левое объединение таблиц в одной из которой связующее поле уникальный индентификатор, а у другой строка?
Petre
Constantus @ Yesterday, 17:03 необходимо зарегистрироваться для просмотра ссылки ,
Вы ведь сами убедились, что нет.
Vofka
Цитата(Vidocq05 @ 06.06.19, 16:03) необходимо зарегистрироваться для просмотра ссылки
На сколько я знаю, преобразовать тип значения в другой тип в запросе нельзя вообще.

Я думал, что можно bk.gif
pablo
В СКД можно использовать функции общего модуля, в которой Вы можете преобразовать идентификатор в строку.
Petre
pablo @ Today, 9:37 необходимо зарегистрироваться для просмотра ссылки ,
На этапе выборки?
pablo
Petre @ Сегодня, 9:54 необходимо зарегистрироваться для просмотра ссылки ,
Да, если соединять не таблицы в запросе, а наборы данных в СКД
Constantus
pablo @ Сегодня, 13:41 необходимо зарегистрироваться для просмотра ссылки ,

А можно детальней про общий модуль и как его применить в самом СКД?
pablo
необходимо зарегистрироваться для просмотра ссылки

Смотреть на вычисляемое поле
Vidocq05
Constantus @ 07.06.19, 15:52 необходимо зарегистрироваться для просмотра ссылки ,
Vofka @ 07.06.19, 9:21 необходимо зарегистрироваться для просмотра ссылки ,
Немного запоздалый ответ, но все таки...
Можно преобразовать в строку путем
|ПРЕДСТАВЛЕНИЕ(Источник.ГУИД) КАК ГУИД


Хотя нет, все равно ругается при сравнении
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.