|   |   | 
| 
 | Внешние источники данных. Узнать ID добавленной записи | ☑ | ||
|---|---|---|---|---|
| 0
    
        Stim 27.05.15✎ 14:43 | 
        Подключена БД на MySQL.
 Добавляю запись: //1. Занести запись в SITE OPER_ID = MAX_ID; SITENAME = Транскрипция(OPERNAME); Стр = "INSERT INTO `SITE` (OPER_ID, SITENAME) VALUES("+OPER_ID+", "+SITENAME+")"; Попытка Соединение.Execute(Стр); Исключение //Сообщить("Что то пошло не так :( "); сообщить(ОписаниеОшибки()); Возврат; КонецПопытки; Добавление отрабатывает без проблем. Теперь хочу получить ID добавленной записи: Запрос = новый запрос; Запрос.Текст = "ВЫБРАТЬ | SITE.ID |ИЗ | ВнешнийИсточникДанных.Биллинг.Таблица.SITE КАК SITE |ГДЕ | SITE.SITENAME = &SITENAME |И SITE.OPER_ID = &OPER_ID"; запрос.УстановитьПараметр("SITENAME",SITENAME); запрос.УстановитьПараметр("OPER_ID",OPER_ID); Выборка = Запрос.Выполнить().Выбрать(); Если Выборка.Следующий() Тогда ID_SITE = Выборка.ID; КонецЕсли; Ошибка: Ошибка выполнения запроса по причине: Ошибка внешней базы данных: ошибка при выполнении запроса по причине: Ошибка ODBC. SQLSTATE: 42000 Номер ошибки: 1064 Описание: [MySQL][ODBC 5.1 Driver][mysqld-5.1.69-log]You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '"OPER_ID" = 252)' at line 4 почему так? Поле OPER_ID - числовое. | |||
| 1
    
        ЧеловекДуши 27.05.15✎ 14:47 | 
        (0) ID и OPER_ID , как то разные поля, нет? :)     | |||
| 2
    
        Fragster гуру 27.05.15✎ 14:49 | 
        а почему добавляешь через ADO, а получаешь через ВИД?     | |||
| 3
    
        ЧеловекДуши 27.05.15✎ 14:50 | 
        А вообще, SQL запросы лучше отладить на SQL сервере. А не из 1С.     | |||
| 4
    
        Stim 27.05.15✎ 14:50 | 
        (2) потому что через ВИД нельзя добавить. 
 или можно? | |||
| 5
    
        Stim 27.05.15✎ 14:50 | 
        (1)разные. читай внимательнее код     | |||
| 6
    
        eklmn гуру 27.05.15✎ 14:51 | 
        лучше все-таки посылать запрос скуля..     | |||
| 7
    
        Fragster гуру 27.05.15✎ 14:52 | 
        (4) или можно, начиная с 8.3.что-то     | |||
| 8
    
        Fragster гуру 27.05.15✎ 14:53 | 
        а вообще - в описании ВИД точно правильно тип указан? и в параметрах подклчения тип СУБД?     | |||
| 9
    
        ЧеловекДуши 27.05.15✎ 14:56 | 
        (5) Ага Увидел. Ты надеялся, что при добавлении записи, ИД ему присвоить автоматом.     | |||
| 10
    
        Stim 27.05.15✎ 14:56 | 
        (7) ну не важно как добавлять.
 даже простой код: Запрос = новый запрос; Запрос.Текст = "ВЫБРАТЬ | SITE.ID |ИЗ | ВнешнийИсточникДанных.Биллинг.Таблица.SITE КАК SITE |ГДЕ | SITE.OPER_ID = &OPER_ID"; запрос.УстановитьПараметр("OPER_ID",252); Выборка = Запрос.Выполнить().Выбрать(); Если Выборка.Следующий() Тогда ID_SITE = Выборка.ID; КонецЕсли; выдает ошибку | |||
| 11
    
        Fragster гуру 27.05.15✎ 14:57 | 
        (9) ты не поверишь, но как раз это норма.     | |||
| 12
    
        ЧеловекДуши 27.05.15✎ 14:57 | 
        (10) А на том сервере, где вертится эта БД, такой запрос тоже ошибку выдает?
 Я имею ввиду, такой же, но преобразованный в SQL-T | |||
| 13
    
        Stim 27.05.15✎ 14:59 | 
        (8) в описании OPER_ID - число(10,0)     | |||
| 14
    
        sapphire 27.05.15✎ 14:59 | 
        (0) Так тебе и надо, Паша, MySQL не твоё. Почитал бы чаво нить.     | |||
| 15
    
        ЧеловекДуши 27.05.15✎ 14:59 | 
        И еще, в Запросе ты передаешь значения "OPER_ID". И какого оно типа?     | |||
| 16
    
        sapphire 27.05.15✎ 15:00 | 
        (13) И с чего вдруг оно должно автоматом присваивается?
 Где уверенность, что поле автоинкрементальное? | |||
| 17
    
        sapphire 27.05.15✎ 15:01 | 
        Биллинг на мускуле, это, конечно, жесть :)     | |||
| 18
    
        Stim 27.05.15✎ 15:02 | 
        (16) присваивается, автоинкрементальное     | |||
| 19
    
        Stim 27.05.15✎ 15:02 | 
        (15) см 13     | |||
| 20
    
        Fragster гуру 27.05.15✎ 15:02 | 
        (17) а что? до пары сотен тысяч абонентов - взлетит без проблем. не надо просто покупать шаред хостинг за 100 рублей для него, а купить дедик за 3к     | |||
| 21
    
        Fragster гуру 27.05.15✎ 15:03 | 
        (13) а тип СУБД прописан в подключении?     | |||
| 22
    
        sapphire 27.05.15✎ 15:04 | 
        Для того, что бы нормально отрабатывал внешний источник на мускуле... Я бы.. Но, это же я, а не Паша.
 Прилинковал бы мускул к скулю. и там уже исвращался. | |||
| 23
    
        Asmody 27.05.15✎ 15:06 | 
        SELECT LAST_INSERT_ID()     | |||
| 24
    
        sapphire 27.05.15✎ 15:08 | 
        (20) Та речь-то не о том.
 Бог с ним, мс мускулом и его форками,кому нравится пусть юзает. Но, Павлик решил, что робята из 1С такие светлоголовые, что переварят любой диалект СУБД, лично я в этом не уверен, и (0) тому подтверждение. | |||
| 25
    
        sapphire 27.05.15✎ 15:08 | 
        (23) Это, Вить, еще знать надоть.     | |||
| 26
    
        Stim 27.05.15✎ 15:09 | 
        (21) да. сейчас передобавил таблицу SITE с типом СУБД MySQL     | |||
| 27
    
        Asmody 27.05.15✎ 15:10 | 
        (25) Так это гуглится на раз. 7.5 из 10 "веб-программистов" регулярно задают этот вопрос.     | |||
| 28
    
        Stim 27.05.15✎ 15:10 | 
        (23) не взлетит. Нужен ID добавленной записи, а не последней.
 мб между добавлением и чтением еще с 10 записей добавится | |||
| 29
    
        sapphire 27.05.15✎ 15:11 | 
        (27) Павлика в гугле забанели, наверное:)
 На дубовом или 330 спрашивал - ему не ответили - решил клоунаду здесь продолжить. | |||
| 30
    
        Stim 27.05.15✎ 15:11 | 
        +26 все равно выдает ошибку.
 если искать по SITENAME (строка), то находит без проблем. А по числовому полю выдает ошибку | |||
| 31
    
        Stim 27.05.15✎ 15:11 | 
        (29) Пожалуйста, не флуди     | |||
| 32
    
        sapphire 27.05.15✎ 15:13 | 
        (31) Ты бы почитал что-нибудь про диалект MySQL     | |||
| 33
    
        Stim 27.05.15✎ 15:18 | 
        запрос 
 Запрос = новый запрос; Запрос.Текст = "ВЫБРАТЬ | SITE.ID |ИЗ | ВнешнийИсточникДанных.Биллинг.Таблица.SITE КАК SITE |ГДЕ | SITE.ID = &ID"; запрос.УстановитьПараметр("ID","14"); выполняется без ошибок. Единственное отличие ID от OPER_ID в том, что у OPER_ID стоит признак "разрешить NULL" | |||
| 34
    
        Stim 27.05.15✎ 15:18 | 
        +
 запрос.УстановитьПараметр("ID",14); отрабатывает так же | |||
| 35
    
        НЕА123 27.05.15✎ 15:19 | 
        (33)+
 символ "_" | |||
| 36
    
        sapphire 27.05.15✎ 15:25 | 
        выложи результат
 SHOW COLUMNS FROM SITE | |||
| 37
    
        Stim 27.05.15✎ 15:27 | 
        (35) а что не так с символом _ ?     | |||
| 38
    
        Stim 27.05.15✎ 15:30 | 
        (36) 
 команда Select all Statement: SELECT `SITE`.`ID`, `SITE`.`SITENAME`, `SITE`.`rate_t`, `SITE`.`rate_o`, `SITE`.`OPER_ID`, `SITE`.`roum_rate_s`, `SITE`.`roum_rate_b`, `SITE`.`client_rate`, `SITE`.`rate_inet`, `SITE`.`rate_inet_o`, `SITE`.`rate_inet_t`, `SITE`.`hunt_mode`, `SITE`.`disc_rate_o`, `SITE`.`disc_rate_t`, `SITE`.`disc_roum_rate_s`, `SITE`.`disc_roum_rate_b`, `SITE`.`disc_client_rate`, `SITE`.`disc_inet_t`, `SITE`.`disc_inet_o`, `SITE`.`serve_rate_o`, `SITE`.`serve_roum_rate_s`, `SITE`.`serve_inet_t`, `SITE`.`serve_inet_o`, `SITE`.`serve_client_rate`, `SITE`.`serve_rate_t`, `SITE`.`serve_roum_rate_b`, `SITE`.`RGRP_ID_O`, `SITE`.`RGRP_DENY_ID_O`, `SITE`.`RGRP_ID_T`, `SITE`.`RGRP_DENY_ID_T` FROM `voip`.`SITE`; | |||
| 39
    
        sapphire 27.05.15✎ 15:30 | 
        (37) Тип в мускуле у поля OPER_ID?     | |||
| 40
    
        sapphire 27.05.15✎ 15:31 | 
        (38) Тяжелый случай.     | |||
| 41
    
        Ёпрст гуру 27.05.15✎ 15:32 | 
        хз че там за синтекс, так катит ?
 where `SITE`.`OPER_ID`=252 | |||
| 42
    
        Stim 27.05.15✎ 15:33 | 
        (39) Int(11)     | |||
| 43
    
        sapphire 27.05.15✎ 15:33 | 
        https://dev.mysql.com/doc/refman/5.7/en/show-columns.html
 SHOW [FULL] COLUMNS {FROM | IN} tbl_name [{FROM | IN} db_name] [LIKE 'pattern' | WHERE expr] SHOW COLUMNS displays information about the columns in a given table. It also works for views. The LIKE clause, if present, indicates which column names to match. The WHERE clause can be given to select rows using more general conditions, as discussed in Section 20.31, “Extensions to SHOW Statements”. SHOW COLUMNS displays information only for those columns for which you have some privilege. | |||
| 44
    
        sapphire 27.05.15✎ 15:34 | 
        (41) Это одинце так транслирует     | |||
| 45
    
        Fragster гуру 27.05.15✎ 15:34 | 
        короче, гугли, в каком релизе 1с была исправлена ошибка 10103123  (SW672486)  Поле внешнего источника данных MySQL, содержащее знак подчеркивания в имени     | |||
| 46
    
        НЕА123 27.05.15✎ 15:35 | 
        (37)
 может нормально. но у меня были проблемы именно с этим символом в идентификаторах в запросах (когда, в какой СУБД - не помню) . | |||
| 47
    
        sapphire 27.05.15✎ 15:36 | 
        (45) Я б прилинковал мускул к сакле и не парился     | |||
| 48
    
        Stim 27.05.15✎ 15:38 | 
        (45) 
 10103123 (SW672486) Поле внешнего источника данных MySQL, содержащее знак подчеркивания в имени Проблема: При обращении к полю внешнего источника данных MySQL, содержащему в имени знак подчеркивания, происходит ошибка Ошибка выполнения запроса по причине: Ошибка внешней базы данных: ошибка при выполнении запроса по причине: Ошибка ODBC. SQLSTATE: 42000 Номер ошибки: 1064 Описание: [MySQL][ODBC 5.1 Driver][mysqld-5.0.51a-24+lenny5-log] You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '"partner_id" Дата публикации: 2012-06-14 | |||
| 49
    
        Барматолог 27.05.15✎ 15:39 | 
        Нахер бы они усгались эти внешние источники. Толку от них, как с козла молока.     | |||
| 50
    
        Stim 27.05.15✎ 15:40 | 
        интересное решение
 http://catalog.mista.ru/public/176787/ | |||
| 51
    
        sapphire 27.05.15✎ 15:41 | ||||
| 52
    
        sapphire 27.05.15✎ 15:41 | 
        (49) +1     | |||
| 53
    
        Stim 27.05.15✎ 15:42 | 
        Дата публикации: 
 2012-06-14 у меня платформа этого года. неужели они за 3 года не исправили эту ошибку? | |||
| 54
    
        sapphire 27.05.15✎ 15:45 | 
        (53) Говорят, что в 8.3.1.531 исправлено см (51)     | |||
| 55
    
        НЕА123 27.05.15✎ 15:47 | 
        (49)
 динамический список внешнего источника мне нравится. | |||
| 56
    
        Stim 27.05.15✎ 15:50 | 
        (54) Значит, не исправлено.
 или ошибка в другом | |||
| 57
    
        Ёпрст гуру 27.05.15✎ 15:56 | 
        А экранировать кавычками или еще как нельзя этот "_" ?     | |||
| 58
    
        sapphire 27.05.15✎ 15:59 | 
        (57) говорят, можно, см (50)     | |||
| 59
    
        sapphire 27.05.15✎ 15:59 | 
        (56) Да поставь МС СКЛ Экспресс присоедени к нему мускул и не мучайся     | |||
| 60
    
        Барматолог 27.05.15✎ 16:15 | 
        (55) Он часто применяется?     | |||
| 61
    
        Барматолог 27.05.15✎ 16:16 | 
        (58) мысль годная, но похоже у него вебка на мускуле висит     | |||
| 62
    
        Fragster гуру 27.05.15✎ 16:16 | 
        там в комментах хороший способ - создать вьюху без "_". И не надо ничего устанавливать, линковать     | |||
| 63
    
        Барматолог 27.05.15✎ 16:16 | 
        (59) сорри, не дочитал)     | |||
| 64
    
        Stim 27.05.15✎ 17:04 | 
        (62) это как?     | |||
| 65
    
        Fragster гуру 27.05.15✎ 17:26 | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |