Имя: Пароль:
1C
1С v8
сравнить таблицы значений
0 unbred
 
02.11.17
18:55
зап2=новый запрос;
зап2.текст=
    "ВЫБРАТЬ
    |    таблица2вт.артикул КАК артикул,
    |    таблица2вт.размер КАК размер
    |ПОМЕСТИТЬ таблица2вт
    |ИЗ
    |    &таблица2вт КАК таблица2вт
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ
    |    таблицаВТ.артикул КАК артикул,
    |    таблицаВТ.размер КАК размер
    |ПОМЕСТИТЬ таблицаВТ
    |ИЗ
    |    &таблицаВТ КАК таблицаВТ
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ
    |    таблицаВТ.артикул,
    |    таблицаВТ.размер,
    |    таблица2вт.артикул КАК артикул1,
    |    таблица2вт.размер КАК размер1
    |ИЗ
    |    таблица2вт КАК таблица2вт
    |        ЛЕВОЕ СОЕДИНЕНИЕ таблицаВТ КАК таблицаВТ
    |        ПО таблица2вт.артикул <> таблицаВТ.артикул
    |            И таблица2вт.размер <> таблицаВТ.размер"
    ;
    зап2.УстановитьПараметр("таблицаВТ",таблица);
    зап2.УстановитьПараметр("таблица2вт",таблица2);

    рез2=зап2.Выполнить().Выгрузить();

для таблица и таблица2 написаны такие штуки


    таблица=новый ТаблицаЗначений;
    таблица.Колонки.Добавить("артикул",новый ОписаниеТипов("строка"));
    таблица.Колонки.Добавить("размер",новый ОписаниеТипов("строка"));
    
     Для каждого СтрокаТЗ Из РЕЗ1 Цикл
      
     ЗаполнитьЗначенияСвойств(таблица.Добавить(), СтрокаТЗ)
      

КонецЦикла;

при выполнении запроса ошибка о несоответствии типов

{ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(203)}: Ошибка при вызове метода контекста (Выполнить)
    рез2=зап2.Выполнить().Выгрузить();
по причине:
{(27, 25)}: Неверные параметры в операции сравнения. Нельзя сравнивать поля
неограниченной длины и поля несовместимых типов.
ПО таблица2вт.артикул <<?>><> таблицаВТ.артикул

подскажите пожалуйста ,где ошибка?
1 Cyberhawk
 
02.11.17
18:56
Нельзя сравнивать поля
неограниченной длины
2 unbred
 
02.11.17
18:57
(1) тоесть квалификатор обязателен?
3 Cyberhawk
 
02.11.17
18:57
ВЫРАЗИТЬ КАК Строка(1024)
4 Филиал-msk
 
02.11.17
18:58
Неограниченный размер. Что-то в этом есть.
5 unbred
 
02.11.17
19:13
(1) спасибо. не знаю,получил ли я данные,но ошибки нет. теперь "недостаточно памяти")))   (файловый вариант)
6 Cyberhawk
 
02.11.17
21:22
(5) Плохой запрос
7 novichok79
 
02.11.17
21:57
упорядочи все колонки каждой таблицы а потом эбни это дело в значениевстрокувнутр, а потом сравни как строки, не?
8 novichok79
 
02.11.17
21:59
и соединять надо полным соединением, а не лошевым левым

ВЫБРАТЬ
    таблицаВТ.артикул,
    таблицаВТ.размер,
    таблица2вт.артикул КАК артикул1,
    таблица2вт.размер КАК размер1
ИЗ
    таблица2вт КАК таблица2вт
        ПОЛНОЕ СОЕДИНЕНИЕ таблицаВТ КАК таблицаВТ
        ПО таблица2вт.артикул = таблицаВТ.артикул
            И таблица2вт.размер = таблицаВТ.размер
Где таблицаВТ.артикул есть null или таблица2вт.артикул есть null

есть запрос не пустой, то значит сасяо, то есть таблицы не равны. ну и конечно таблицы должны быть без дублирующихся строк
Независимо от того, куда вы едете — это в гору и против ветра!