Имя: Пароль:
1C
 
1C и TECDOC
0 kolts23381
 
31.12.14
14:38
Пытаюсь связать TECDOC и 1с. Есть в интернете примеры да и запросы
текдока можно прослушать, но все равно нужно изучить таблицы. Пока пытаюсь наскоком решить. Нашел вот такой запрос который строит дерево запчастей, но это запрос к mysql.
SELECT    STR_ID,    TEX_TEXT AS STR_DES_TEXT,    IF(        EXISTS(            SELECT                *
FROM      SEARCH_TREE AS SEARCH_TREE2
WHERE                SEARCH_TREE2.STR_ID_PARENT <=> SEARCH_TREE.STR_ID
LIMIT    1), 1, 0) AS DESCENDANTS
FROM           SEARCH_TREE
INNER JOIN DESIGNATIONS ON DES_ID = STR_DES_ID
INNER JOIN DES_TEXTS ON TEX_ID = DES_TEX_ID
WHERE    STR_ID_PARENT <=> @STR_ID AND    DES_LNG_ID = @LNG_ID AND    EXISTS (
SELECT            *
FROM                       LINK_GA_STR
INNER JOIN LINK_LA_TYP ON LAT_TYP_ID = @TYP_ID AND                     LAT_GA_ID = LGS_GA_ID
INNER JOIN LINK_ART ON LA_ID = LAT_LA_ID
WHERE            LGS_STR_ID = STR_ID
LIMIT    1    );

Он выдает ошибку compile error:  ')' expected, в той строке где IF. Каким должен быть правильный IF и что за знак <=> - не равно? Есть оригинальный запрос, но там тоже нелегко разобраться
1 Стальная Крыса
 
31.12.14
16:03
все вроде верно синтаксически.
IF() аналог ?() в 1С
оператор <=> - "безопасное сравнение", может сравнивать аргументы с NULL

зы. текст более структурно сделать, может что и увидится
2 Стальная Крыса
 
31.12.14
16:07
хз, но
может быть EXISTS нельзя использовать внутри IF()
3 Стальная Крыса
 
31.12.14
16:10
попробовать вместо IF() использовать оператор CASE
4 kolts23381
 
31.12.14
18:01
SELECT    STR_ID,
TEX_TEXT AS STR_DES_TEXT,
IF(EXISTS(SELECT *
FROM TOF_SEARCH_TREE AS SEARCH_TREE2                                WHERE SEARCH_TREE2.STR_ID_PARENT <=> TOF_SEARCH_TREE.STR_ID
LIMIT    1), 1, 0) AS DESCENDANTS
FROM TOF_SEARCH_TREE
INNER JOIN TOF_DESIGNATIONS ON DES_ID = STR_DES_ID
INNER JOIN TOF_DES_TEXTS ON TEX_ID = DES_TEX_ID
WHERE STR_ID_PARENT <> NULL AND    DES_LNG_ID = 16
AND EXISTS (
SELECT *
FROM TOF_LINK_GA_STR
INNER JOIN TOF_LINK_LA_TYP ON LAT_TYP_ID = "
+ ЭлементыФормы.ТаблицаМодификаций.ТекущаяСтрока.ИД +
" AND LAT_GA_ID = LGS_GA_ID
INNER JOIN TOF_LINK_ART ON LA_ID = LAT_LA_ID
WHERE LGS_STR_ID = STR_ID
LIMIT 1)"
Кто-то сделал сайт и перенес базу в mysql поэтому может быть запрос отличается. Буду ковырять дальше
5 kolts23381
 
31.12.14
18:02
Нет предпросмотра чтоб нормально сделал. Может кто-то заморачивался этим вопросом и подскажет.