Ошибка при сохранении источника данных, основанного на примитивных табличных объектах
Помогите, пожалуйста, разобраться
Создаю объектный источник данных: https://docs.greendata.ru/platform/ru/object-data-source.html
Если в объектах для источника используются объекты-наследники типа "Объект", то источник работает так как описано. Это хорошо
Но если в источнике используются объекты-наследники типа "Примитивный табличный объект", то в логах получаю ошибку "nested exception is org.postgresql.util.PSQLException: ERROR: relation "tender_lots" does not exist". Это плохо 😕
Вот, что я делаю.
1. Создал два типа-наследника класса ASM_TABLE_OBJ (Примитивный табличный объект), https://docs.greendata.ru/platform/ru/primitive-types.html
В обоих типах настроено "Внешнее соединение", для обоих типов появились два реестра, в реестрах есть данные. Всё ок, внешняя БД доступна, и Гриндата видит её данные
Создаю объектный источник, добавляю в него новые табличные типы, определяю их поля, связываю источники между собой.
Сохраняю объектный источник и получаю PSQLException 😐
Беру из логов Гриндаты запрос, выполняю его непосредственно в БД. Запрос выполняется, возвращает ожидаемый результат. То есть Гриндата корректно генерирует SQL-запрос, но почему-то не может его выполнить, как будто делает это не в той схеме
Что я мог не учесть?
Комментарии
Попробовал в источнике данных выбрать "Ввести запрос вручную = Да", определил текст SQL-запроса так, как его сгенерировала Гриндата. Это позволило сохранить Источник данных (но в логах всё та же ошибка, relation "tender_lots" does not exist"
Поменял в SQL-запросе текст так, чтобы принудительно указать схему БД. Источник данных сохраняется, ок. Но ошибка всё равно та же, и пользоваться источником невозможно 😐
Попробуйте использовать тип объекта Источник данных. Удаленный SQL источник данных RF_REMOTE_DATA_SOURCE.
Спасибо!
Это помогло. Минус в том, что SQL-запрос приходится писать руками
В вики не нашёл ничего про этот тип. Но в общем всё просто и понятно, как и для обычного SQL источника