Имя: Пароль:
1C
1С v8
Сложный SQL-запрос работает в SQL Management Studio, но не работает в 1С81
0 ZiggyX
 
25.02.16
17:32
Доброго вечера.
Есть запрос, общий вид такой:
UPDATE     Base1
SET    Base1.Field1 = XXX,
    Base1.Field2 = (    
        SELECT    Base2.Field1
        FROM    Base2
        WHERE    Base2.Field2 = YYY
    ),
    Base1.Field3 = (    
        SELECT    Base3.Field1
        FROM    Base3
        WHERE    Base3.Field2 = ZZZ
    )    
WHERE    Base1.Field4 = (    
        SELECT    Base4.Field1
        FROM    Base4
        WHERE     Base4.Field2 = WWW
    )
AND    Base1.Field5 = (    
        SELECT    Base5.Field1
        FROM    Base5
        WHERE    Base5.Field2 = VVV
    )
Т.е. обновляются 5 полей одной таблицы, согласно условиям из 4-ех связанных таблиц. Этот код корректно выполняется из под оснастки SQL Management Studio, но как только он выполняется из под 1с, он...не выполняется. Ошибок нет, но и в базу новые значения не пишутся.
Посмотрел в этой теме последнее сообщение: v8: 1с + ADO - "Операция не допускается, если объект закрыт" - HELP!
и действительно, как только из секций SET и WHERE убираю по одному SELECT, запись происходит. Как только в секциях SET или WHERE становится более одного SELECT, ничего не пишется.
Попробовал через JOIN составить запрос, но ничего не пишется тоже.
Сам запрос такой:
UPDATE        Base1
SET        Base1.Field1 = XXX,
        Base1.Field2 = Base2.Field1,
        Base1.Field3 = Base3.Field1
FROM        Base1
INNER JOIN    Base2
ON        Base1.Field2 = Base2.Field1
INNER JOIN      Base3
ON        Base1.Field3 = Base3.Field1
INNER JOIN      Base4
ON        Base1.Field4 = Base4.Field1
INNER JOIN    Base5
ON        Base1.Field5 = Base5.Field1
WHERE        Base2.Field2 = YYY
AND        Base3.Field2 = ZZZ
AND        Base4.Field2 = WWW
AND        Base4.Field2 = VVV
Т.е. нет возможности обновить стороннюю базу MSSQL, используя методы 1С?
Для записи пользуюсь ADODB.
1 эксвилл
 
25.02.16
17:35
ADODB - это не метод 1С.
Независимо от того, куда вы едете — это в гору и против ветра!