HostedRedmine.com has moved to the Planio platform. All logins and passwords remained the same. All users will be able to login and use Redmine just as before. Read more...
Bug #945784
open8.3.15-20-+ В ВИДах не поддерживаются таблицы с колонками со служебными именами "allowed" / "distinct" / "top" (и, вероятно, какими-то еще)
0%
Description
https://bugboard.v8.1c.ru/error/000124959
Платформы: 8.3.15, 8.3.17, 8.3.20.
Дано: внешняя БД (MSSQL) с таблицей, одна из колонок которой имеет имя "allowed".
Если при подключении этой внешней БД как внешний источник данных (ВИД) в метаданных конфигурации тоже задать этому полю такое имя, то при попытке открыть в предприятии (в любом клиенте) эту таблицу (динамический список) получим ошибку 1:
Ошибка при выполнении запроса.
по причине:
Ошибка инициализации
по причине:
Ошибка создания набора данных "НаборДанныхДинамическогоСписка"
по причине:
Ошибка при исполнении запроса набора данных
по причине:
{(3, 60)}: Ожидается имя
ВнешнийИсточникДанныхDWHТаблицаdbo_Test_Table.allowed КАК <<?>>allowed_
При попытке добавить запись (интерактивно или программно) в объектную таблицу ВИДа при записи будет ошибка 2:
Ошибка при вызове метода контекста (Записать): Ошибка внешней базы данных:
ошибка при выполнении запроса
по причине:
Ошибка ODBC. SQLSTATE: 23000
Номер ошибки: 544
Ошибка внешней базы данных:
ошибка при выполнении запроса
по причине:
Ошибка ODBC. SQLSTATE: 23000
Номер ошибки: 544
Описание: [Microsoft][ODBC SQL Server Driver][SQL Server]Cannot insert explicit value for identity column in table 'Test_Column_Allowed' when IDENTITY_INSERT is set to OFF.
Если в метаданных конфигурации переименовать имя поля на какое-то другое, не являющееся одним из служебных слов языка запросов, то ошибки 1 в предприятии уже не будет (форма с таблицей-списком будет открываться):
Однако ошибка 2 по-прежнему будет наблюдаться, т.е. у нас отсутствует возможность добавлять / изменять (как программно, так и интерактивно) записи таблиц, колонки которых во внешней БД имеют имена, соответствующие служебным словам языка запросов.
Если поле во внешней БД имеет имя "top" или "distinct", то обе ошибки (1 и 2) в клиенте 1С будут с другим текстом:
Ошибка внешней базы данных:
ошибка при выполнении запроса
по причине:
Ошибка ODBC. SQLSTATE: 42000
Номер ошибки: 156
Описание: [Microsoft][ODBC SQL Server Driver][SQL Server]Incorrect syntax near the keyword 'top'.
Причем обойти ошибку 1 (через переименование имени поля в метаданных конфигурации) уже не получится.
Files
Updated by Сергей Старых about 1 year ago
Возможно поможет https://partners.v8.1c.ru/forum/topic/1948815
Updated by Max im about 1 year ago
Проверил: оборачивание имени поля в источнике данных в кавычки избавляет нас от ошибки 2 (интерактивная и программная запись завершаются успешно), но не избавляет нас от ошибки 1 (ошибки просмотра дин. списка таблицы ВИДа) - все равно для ее обхода приходится имя в метаданных исправлять.
Считаю, что конфигуратор не должен давать обновлять конфигурацию БД в этом случае (когда в именах полей таблицы ВИДа содержатся служебные слова), т.е. должен выдавать ошибку.
Updated by Сергей Старых about 1 year ago
1C ответило:
"приложите тестовый пример для воспроизведения"
Updated by Max im about 1 year ago
Файл конфигурации во вложении.
В предприятии вызвать команду открытия дин. списка таблицы "dbo_Test_Table", после чего возникнет ошибка 1 (описанная выше).
Подключаться к ВИДу и создавать в нем какие-то реальные таблицы даже необязательно.
Updated by Сергей Старых about 1 year ago
Ошибку зарегистрировали. Ссылку добавил в описание