Имя: Пароль:
1C
1С v8
Передача таблицы значений в запрос
0 drey1912
 
24.11.15
02:33
Здравствуйте, есть регистр сведений "КонтрольУникальностиШПИ". ШПИ - некоторый буквенно-циферный код. Указывается в заказе покупателя. ЗаказПокупателя - регистратор данного регистра.

Есть обработка по обновлению этих самых ШПИ у заказов, она их подгружает из excel.

Теперь проблема: Мне нужно проверить есть ли в файле - ШПИ, которые есть в регистре, если есть, то эту строку я пропускаю при обработке. Если нет, то присваиваю заказу новый ШПИ.
Вот запрос:
ТаблицаЗначений = ЧтениеДанныхИзФайловНаСервере.ПрочитатьИзВременногоХранилища_xls(ФайлНаСервере.АдресВременногоХранилища, 1, 14);
    ТаблицаЗначений.Колонки.Колонка16.Имя= ("НомерЗаказа");
    ТаблицаЗначений.Колонки.Колонка10.Имя= ("ШПИ");
    
            
    Запрос = Новый Запрос;
        Запрос.Текст =
    
        "ВЫБРАТЬ
        |    ТабЗнч.ШПИ КАК ШПИ,
        |    ТабЗнч.НомерЗаказа КАК НомерЗаказа
        |ПОМЕСТИТЬ ВТ_Заказы
        |ИЗ
        |    &ТабЗнч КАК ТабЗнч
        |;
        |
        |////////////////////////////////////////////////////////////////////////////////
        |ВЫБРАТЬ
        |    ВТ_Заказы.НомерЗаказа
        |ИЗ
        |    ВТ_Заказы КАК ВТ_Заказы
        |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КонтрольУникальностиШПИ КАК КонтрольУникальностиШПИ
        |        ПО ВТ_Заказы.ШПИ = КонтрольУникальностиШПИ.ШПИ
        |ГДЕ
        |    КонтрольУникальностиШПИ.ШПИ ЕСТЬ NULL ";
        
        Запрос.УстановитьПараметр("ТабЗнч", ТЗ);
        
        Выборка = Запрос.Выполнить();
        ШПИ =  Выборка;


При выполнении запроса появляется ошибка "Тип не может быть выбран в запросе". Про нее я читал, требуется явное приведение типов, НО ТЗ заполняется из табдокумента... не могу понять как здесь сделать приведение типов или может вы подскажите другой вариант проверки на уникальность значений...
1 drey1912
 
24.11.15
02:42
P.S. Так же в документе ексель содержится номер заказа - по которому я ищу в базе нужный заказ для замены ШПИ.
2 patria0muerte
 
24.11.15
03:57
Типизировать можно и в запросе.

"ВЫБРАТЬ
|    ВЫРАЗИТЬ(ТабЗнч.ШПИ КАК СТРОКА(300)) КАК ШПИ,
|    ВЫРАЗИТЬ(ТабЗнч.НомерЗаказа КАК КАК СТРОКА(300)) КАК НомерЗаказа
|ПОМЕСТИТЬ ВТ_Заказы
|ИЗ
|    &ТабЗнч КАК ТабЗнч";
3 drey1912
 
24.11.15
22:45
В запросе как раз таки нельзя в моем случае) Уже решил задачу)