Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 07:38

Помогите найти ошибку в запросе sql

Автор esip90100, 20 дек 2021, 05:19

0 Пользователей и 1 гость просматривают эту тему.

esip90100

пишет: таблица или представление пользователя не существует. Хотя все названия таблиц проверены, все правильно указаны


"select
|act.act_num,
|ACT.ACT_DATE,
|AM.NOMSIGN,
|AM.NOMNAME,
|AM.QTY,
|ae.nomsign,
|ae.nomname,
|ae.move_qty as kol,
|m.shortname,
|(select shortname from OBJ_ENUMERATIONS_VALUES where code = oa.A_6321) name_str,
|(select distinct ((move_qty*nvl(ae.rate,1))-(nvl( pureweight,0)*am.qty))*OA.A_6323/100 as ww from DET_EXPENSE DE,
|STOCKOBJ SO where AM.NOMSIGN = SO.SIGN and SO.UNVCODE = DE.DETCODE) struzhka,
|(select shortname from OBJ_ENUMERATIONS_VALUES where code = oa.A_6322) name_lom,
|(select distinct ((move_qty*nvl(ae.rate,1))-(nvl( pureweight,0)*am.qty))*(100-OA.A_6323)/100 as ww from DET_EXPENSE DE,
|STOCKOBJ SO where AM.NOMSIGN = SO.SIGN and SO.UNVCODE = DE.DETCODE) lom
|from
|OMP_ADM.iface_act_process_material_exp ae,
|OMP_ADM.iface_act_process_material_mak am,
|OMP_ADM.iface_act_process_material act,
|obj_attr_values_345 oa,
|measures m
|where OA.SOCODE = ACT.CODE
|          and act.code = AM.DOCID
|          and AM.ID = AE.ACT_MAKE_CODE
|          and oa.a_6326 is not NULL
|          and ae.measid = m.code
|          and ACT.CONFIRMED=1"

LexaK

esip90100, так, насколько помню оригинальный SQL, такие конструкции в запросе недопустимы

"select
|act.act_num,
|ACT.ACT_DATE,
|AM.NOMSIGN,
|AM.NOMNAME,
|AM.QTY,
|ae.nomsign,
|ae.nomname,
|ae.move_qty as kol,
|m.shortname,
|>>>>      (select shortname from OBJ_ENUMERATIONS_VALUES where code = oa.A_6321) name_str,
|>>>>      (select distinct ((move_qty*nvl(ae.rate,1))-(nvl( pureweight,0)*am.qty))*OA.A_6323/100 as ww from DET_EXPENSE DE,
|STOCKOBJ SO where AM.NOMSIGN = SO.SIGN and SO.UNVCODE = DE.DETCODE) struzhka,
|>>>>      (select shortname from OBJ_ENUMERATIONS_VALUES where code = oa.A_6322) name_lom,
|>>>>      (select distinct ((move_qty*nvl(ae.rate,1))-(nvl( pureweight,0)*am.qty))*(100-OA.A_6323)/100 as ww from DET_EXPENSE DE,
|STOCKOBJ SO where AM.NOMSIGN = SO.SIGN and SO.UNVCODE = DE.DETCODE) lom
|from


их необходимо перенести в область From

(если рассматривать классический СКЛ, а какая у вас вариация вы не пишите, может это и не причем)

если помогло нажмите: Спасибо!

esip90100

LexaK, Прошу прощения за свою тупость, но я правильно перенес? Ничего не изменилось

("
|select
|act.act_num,
|ACT.ACT_DATE,
|AM.NOMSIGN,
|AM.NOMNAME,
|AM.QTY,
|ae.nomsign,
|ae.nomname,
|ae.move_qty as kol,
|m.shortname,
|STOCKOBJ SO where AM.NOMSIGN = SO.SIGN and SO.UNVCODE = DE.DETCODE) struzhka,
|STOCKOBJ SO where AM.NOMSIGN = SO.SIGN and SO.UNVCODE = DE.DETCODE) lom
|from
|shortname from OBJ_ENUMERATIONS_VALUES where code = oa.A_6321) name_str,
|distinct ((move_qty*nvl(ae.rate,1))-(nvl( pureweight,0)*am.qty))*OA.A_6323/100 as ww from DET_EXPENSE DE,
|shortname from OBJ_ENUMERATIONS_VALUES where code = oa.A_6322) name_lom,
|distinct ((move_qty*nvl(ae.rate,1))-(nvl( pureweight,0)*am.qty))*(100-OA.A_6323)/100 as ww from DET_EXPENSE DE,
|OMP_ADM.iface_act_process_material_exp ae,
|OMP_ADM.iface_act_process_material_mak am,
|OMP_ADM.iface_act_process_material act,
|obj_attr_values_345 oa,
|measures m
|where OA.SOCODE = ACT.CODE
|          and act.code = AM.DOCID
|          and AM.ID = AE.ACT_MAKE_CODE
|          and oa.a_6326 is not NULL
|          and ae.measid = m.code
|          and ACT.CONFIRMED=1");

LexaK

esip90100, если не работает - значить не правильно! (это же элементарно)

а по поводу подсказки, это вам надо на другой форум СКЛ-ников, здесь-то в основном 1С-ники
здесь запросы типа Выбрать ... Из Документ...

и бездумно переносить код, это...
|from
|(select shortname from OBJ_ENUMERATIONS_VALUES where code = oa.A_6321) name_str,
|(select distinct ((move_qty*nvl(ae.rate,1))-(nvl( pureweight,0)*am.qty))*OA.A_6323/100 as ww from DET_EXPENSE DE,
|(select shortname from OBJ_ENUMERATIONS_VALUES where code = oa.A_6322) name_lom,
|(select distinct ((move_qty*nvl(ae.rate,1))-(nvl( pureweight,0)*am.qty))*(100-OA.A_6323)/100 as ww from DET_EXPENSE DE,
|OMP_ADM.iface_act_process_material_exp ae,
|OMP_ADM.iface_act_process_material_mak am,
|OMP_ADM.iface_act_process_material act,
|obj_attr_values_345 oa,

вот сразу ошибка видна
(select shortname from OBJ_ENUMERATIONS_VALUES where code = oa.A_6321) name_str,

использует алиас оа, а он определен здесь, и ни как в запрос в скобках не падает
obj_attr_values_345 oa,

вам необходимо использовать команду Левое соединение, т.е. Left Joint (кажется так)

(а еще лучше, обратиться к СКЛ-нику, который вообще сначала разобрался бы со структурой ваших таблиц)
если помогло нажмите: Спасибо!

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск