Версия для печати темы (https://pro1c.org.ua/index.php?showtopic=52379)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Система компоновки данных _ Сравнить УникальныйИдентификатор и СТРОКУ

Автор: Constantus 05.06.19, 15:46

Приветствую, Форумчане!
1с8.3.6, БСП, самопис, УФ

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

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

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

Т.е. сравнивать в СКД УникальныйИдентификатор и СТРОКУ?

Автор: Vofka 05.06.19, 15:58

ВЫРАЗИТЬ(УникальныйИдентификатор КАК СТРОКА)

Автор: pablo 05.06.19, 16:35

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

Для сравнения строка должна быть ограниченной длины

Автор: Vofka 06.06.19, 7:57

pablo @ Вчера, 17:35 * ,
тогда лучше КАК СТРОКА(36)

Автор: Petre 06.06.19, 8:11

Из разговора программистов:
...
- Возьмем, например, 1000, или для ровного счета 1024...

Автор: Vofka 06.06.19, 9:12

Petre, в сообщении выше я не поумничать хотел. Если преобразовать идентификатор к строке с длиной 40, я не проверял, но предполагаю, что возможно, в строке будет 4 пробела в конце и как следствие если сравнивать такую строку со строкой без пробелов, оно может дать не тот эффект, который ожидается. А если приводить к строке с длиной 36 символов, то такого 100% не будет.

Автор: pablo 06.06.19, 9:31

Моя вина в том, что я поленился считать количество символов

Автор: Petre 06.06.19, 10:06

Vofka @ Today, 9:12 * ,
Все верно, 36. 32 значимых и 4 для дефизов. Я тоже за то, чтобы считать точно smile.gif

Автор: Constantus 06.06.19, 11:09

Попробую уточнить задачу, сейчас подробности вышли (как всегда до последнего в тайне держат

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

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

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

Как в СКД сделать подобное объединение?

Автор: Vofka 06.06.19, 11:22

Constantus, ну так написали ж: ВЫРАЗИТЬ(УникальныйИдентификатор КАК СТРОКА(36)). Это мы привели УникальныйИдентификатор к строке. Делайте с ним дальше что хотите, он уже строка.

Автор: Vidocq05 06.06.19, 13:02

Цитата(Vofka @ 06.06.19, 11:22) *
Это мы привели УникальныйИдентификатор к строке.

Вроде бы в запросе нельзя преобразовывать типы.

Автор: Vofka 06.06.19, 13:15

Vidocq05, можно.

Автор: Vidocq05 06.06.19, 13:25

Vofka @ Сегодня, 13:15 * ,

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


Ругается

Автор: Vofka 06.06.19, 13:55

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

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

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

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

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

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


?

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

?

Автор: Vidocq05 06.06.19, 14:53

Цитата(Vofka @ 06.06.19, 13:55) *
ГУИД = СокрЛП(ДокСсылка.УникальныйИдентификатор());

Так Вы уже преобразовали в строку, т.е. в запрос уже пошла строка.

Автор: Vofka 06.06.19, 14:57

Vidocq05, я понимаю, но мне интересно вот что: можно ли преобразовать строку в строку (меньшего размера), число в строку?

Автор: Vidocq05 06.06.19, 15:03

Цитата(Vofka @ 06.06.19, 13:55) *
И так
| ВЫРАЗИТЬ(100 КАК СТРОКА(10)) КАК Поле1

?

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

Vofka @ Сегодня, 14:57 * ,
Строку в строку меньшего размера можно

На сколько я знаю, преобразовать тип значения в другой тип в запросе нельзя вообще.

Автор: Constantus 06.06.19, 16:50

Vofka @ Сегодня, 14:22 * ,


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

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


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

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

Где нужно преобразовывать? В связях между временными таблицами?

Автор: Petre 06.06.19, 17:00

Преобразования типов в запросе нет - только приведение.

Автор: Constantus 06.06.19, 17:03

Petre @ Сегодня, 20:00 * ,

Так возможно левое объединение таблиц в одной из которой связующее поле уникальный индентификатор, а у другой строка?

Автор: Petre 07.06.19, 7:59

Constantus @ Yesterday, 17:03 * ,
Вы ведь сами убедились, что нет.

Автор: Vofka 07.06.19, 8:21

Цитата(Vidocq05 @ 06.06.19, 16:03) *
На сколько я знаю, преобразовать тип значения в другой тип в запросе нельзя вообще.

Я думал, что можно bk.gif

Автор: pablo 07.06.19, 9:37

В СКД можно использовать функции общего модуля, в которой Вы можете преобразовать идентификатор в строку.

Автор: Petre 07.06.19, 9:54

pablo @ Today, 9:37 * ,
На этапе выборки?

Автор: pablo 07.06.19, 10:41

Petre @ Сегодня, 9:54 * ,
Да, если соединять не таблицы в запросе, а наборы данных в СКД

Автор: Constantus 07.06.19, 14:52

pablo @ Сегодня, 13:41 * ,

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

Автор: pablo 07.06.19, 15:48

http://pro1c.org.ua/redirect.php?https://dropmefiles.com/hLjBv

Смотреть на вычисляемое поле

Автор: Vidocq05 24.06.19, 14:50

Constantus @ 07.06.19, 15:52 * ,
Vofka @ 07.06.19, 9:21 * ,
Немного запоздалый ответ, но все таки...
Можно преобразовать в строку путем

|ПРЕДСТАВЛЕНИЕ(Источник.ГУИД) КАК ГУИД


Хотя нет, все равно ругается при сравнении

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua