Имя: Пароль:
1C
1С v8
Сравнение с УИД
0 seraf
 
03.02.20
17:11
Привет, как сделать чтобы эта конструкция заработала

Несовместимые типы "ВЫРАЗИТЬ"
ПО t1.Заказ = <<?>>ВЫРАЗИТЬ(t2.УИДУслуги

    Запрос = Новый Запрос();
    Запрос.Текст = "ВЫБРАТЬ
                   |    Заказ
                   |ПОМЕСТИТЬ ВнешняяТаблицаОстатковРасчетов
                   |ИЗ
                   |    &ВнешняяТаблицаОстатковРасчетов КАК ВнешняяТаблицаОстатковРасчетов
                   |;
                   |
                   |////////////////////////////////////////////////////////////////////////////////
                   |ВЫБРАТЬ
                   |    t2.Время КАК Время,
                   |    t2.УИДУслуги КАК УИДУслуги
                   |ИЗ
                   |    ВнешняяТаблицаОстатковРасчетов КАК t1
                   |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СтатусыУслуг КАК t2
                   |        ПО t1.Заказ = ВЫРАЗИТЬ(t2.УИДУслуги КАК СТРОКА(100))";
    
    ТЗ = ТаблицаОстатковРасчетов.Выгрузить();
    Запрос.УстановитьПараметр("ВнешняяТаблицаОстатковРасчетов", ТЗ);

В таблице значений заказ - строка УИД
1 ДенисЧ
 
03.02.20
17:20
не прокатит
2 acht
 
03.02.20
17:21
(0) Использовать в таблице уникальный идентификатор для заказа
3 hhhh
 
03.02.20
17:22
(0) в ТаблицаОстатковРасчетов сравнить. А потом уже запрос
4 seraf
 
03.02.20
17:24
А как тогда в таблице значений колонку строковую Заказ преобразовать в УИД временно одним махом?
5 seraf
 
03.02.20
17:28
Добавить колонку и перебить строки в
Новый УникальныйИдентификатор(Заказ) ? А потом с ней сравнить что ли
6 1Сергей
 
03.02.20
17:31
(5) именно
7 seraf
 
03.02.20
17:54
После добавление УИД во внешнюю ТЗ, такое

{(4, 2)}: Тип не может быть выбран в запросе
<<?>>&ВнешняяТаблицаОстатковРасчетов КАК ВнешняяТаблицаОстатковРасчетов

ТЗ = ТаблицаОстатковРасчетов.Выгрузить();
        ТЗ.Колонки.Добавить("УИД");
        Для Каждого Строка ИЗ ТЗ Цикл
            Строка.УИД = Новый УникальныйИдентификатор(Строка.Заказ);
        КонецЦикла;
        Запрос.УстановитьПараметр("ВнешняяТаблицаОстатковРасчетов", ТЗ);
        РезультатЗапроса = Запрос.Выполнить();
8 1Сергей
 
03.02.20
18:03
(7) гугли как передать ТЗ в запрос
9 seraf
 
03.02.20
18:05
ТЗ.Колонки.Добавить("УИД", Новый ОписаниеТипов("УникальныйИдентификатор")) что-то не помогло
10 seraf
 
03.02.20
18:05
а что там загуглить, ну передана как параметр, что не так
11 GANR
 
03.02.20
18:09
(0) А нельзя ли заменить этот УИД услуги на ссылку на документ в регистре!? А потом пользоваться им в своё удовольствие. Это же капец - писать кучу овнокода, по преобразованию ссылки в УИД и обратно всюду, где ни лень.
12 1Сергей
 
03.02.20
18:10
(10) хитрость там. Надо перво-наперво из такой таблицы обязательно сделать внутреннюю таблицу


ВЫБРАТЬ
    ...
ПОМЕСТИТЬ ВТ
ИЗ
    &ТЗ КАК ТЗ
;
13 1Сергей
 
03.02.20
18:11
(12) *временную таблицу
14 GANR
 
03.02.20
18:13
Почему во всей это ветке никто не задумался о том, как перепроектировать структуру данных, чтобы впредь стало проще работать?
15 unbred
 
03.02.20
18:15
(14)                               ВЫРАЗИТЬ("""" КАК СТРОКА(36)) КАК УИД
     стр.УИД = строка(стр.ссылка.УникальныйИдентификатор());
   ссылка = Справочники.Справочник.ПолучитьСсылку(Новый УникальныйИдентификатор(Стр.УИД));
16 1Сергей
 
03.02.20
18:32
(14) Кто мы такие чтобы запрещать человеку стрелять себе в ногу? :)
17 seraf
 
03.02.20
19:26
(12) так я в (1) помещаю в ВТ, это ошибка с ней прилетает.
18 hhhh
 
03.02.20
19:55
(17) внешнюю таблицу можно засовывать во внутренний запрос. Только если в нем примитивные типы: строки, числа, даты.
19 seraf
 
03.02.20
20:08
Как посоветуете решить тогда?
20 hhhh
 
03.02.20
20:34
(19) не передавать из внешней базы ссылка и уиды. А передавать только строки, числа, даты.
21 victuan1
 
04.02.20
05:32
(20) Так УУИД это и есть строка)
22 ДенисЧ
 
04.02.20
05:37
(21) УИД это число )))
23 unbred
 
04.02.20
18:46
(22) уид это уид
24 unbred
 
04.02.20
18:47
(19) я тебе всё написал в (15) , код за тебя написать?
25 VS-1976
 
04.02.20
19:01
(15) Вместо строка(стр.ссылка.УникальныйИдентификатор());
XMLСтрока( стр.ссылка )
26 victuan1
 
05.02.20
05:59
(23) в (15) видно, что все-таки строка:
стр.УИД = строка(стр.ссылка.УникальныйИдентификатор())