Имя: Пароль:
1C
1C 7.7
v7: ВыполнитьSQL_ИзТЗ Недопустимое имя объекта
,
0 OnePrg
 
30.09.21
06:59
RS.Выполнить("DROP TEMPORARY TABLE IF EXISTS tmp_table;");
    RS.Выполнить("CREATE TEMPORARY TABLE tmp_table(КодИБ str, Склад int)");
    RS.ДобПараметр(1,14,3,0);
    RS.ДобПараметр(1, 4,3,0);
    RS.Подготовить("
      |insert into tmp_table(КодИБ, Склад)
      |values(?, ?)");
    RS.ВыполнитьSQL_ИзТЗ(тбСклады);

При выполнении ругается
RS.ВыполнитьSQL_ИзТЗ(тбСклады);
Недопустимое имя объекта "tmp_table".
1 Volodja
 
30.09.21
07:45
Что есть -  тбСклады ?
2 DrZombi
 
гуру
30.09.21
07:57
(0) Некогда не нравилась эта приблуда в 1С++...
Лучше выполни это все обычными методами :)
3 DrZombi
 
гуру
30.09.21
07:57
+(2) Я про "ВыполнитьSQL_ИзТЗ"... странное оно... непонятное :)
4 OnePrg
 
30.09.21
08:41
(1)
    Если тбСклады.КоличествоСтрок() = 0 Тогда
        тбСклады.НоваяКолонка("КодИБ");
        тбСклады.НоваяКолонка("Склад");
    КонецЕсли;
    Пользователи         = СоздатьОбъект("Справочник.Пользователи");
    Пользователи.ВыбратьЭлементы();
    Пока Пользователи.ПолучитьЭлемент() = 1 Цикл
        Если Найти(Пользователи,"Кассир")<>0 Тогда
            КодИб = СтрЗаменить(СокрЛП(Пользователи.Наименование),"Кассир","");
            тбСклады.НоваяСтрока();
            тбСклады.КодИБ = КодИБ;
            тбСклады.Склад = Пользователи.СкладМагазина.Код;
        КонецЕсли;
    КонецЦикла;
5 OnePrg
 
30.09.21
08:42
(2) Например?
6 Volodja
 
30.09.21
10:39
(0) А что мешает сразу к Справочник.Пользователи Select применить с JOIN-ом Склады ?
Зачем виртуальную таблицу создавать?
7 OnePrg
 
01.10.21
06:37
Получилось

    RS = СоздатьОбъект("ODBCRecordset");
    RS.ВыполнитьСкалярный("
          |IF OBJECT_ID('tempdb..#ТаблВрем', 'U') IS NOT NULL
          |  DROP TABLE #ТаблВрем;
          |CREATE TABLE #ТаблВрем (КодИБ Char(3),Склад int);");
    RS.Подготовить("
      |insert into #ТаблВрем(КодИБ, Склад)
      |values(?, ?)");
    RS.ВыполнитьSQL_ИзТЗ(тбСклады);

Когда заполнял таблицу тбСклады, то поле Склад заполнял как СкладМагазина.Код. Поле Склад временной таблицы при этом не заполнялось - было пустое, хотя тип кода число длинной 3. Заменил на тбСклады.Склад = Число(СкладМагазина.Код) - стала заполняться.
8 Злопчинский
 
01.10.21
06:39
(7) "хотя тип кода число длинной 3."
в базе код все равно строка
9 OnePrg
 
01.10.21
09:02
(8) понял, спасибо.
10 trad
 
01.10.21
09:09
у тебя в (0) синтаксис MySQL, а в (7) - t-sql
11 pechkin
 
01.10.21
09:18
Ну так поэтому и не работало