Добрый вечер!
На тестовой базе был создан раздел с таблицей tbl_Brief. При загрузке таблицы на другую тестовую базу возникает ошибка. Причем даже если создать таблицу с одним полем на сервере, а затем загружать сервис в TS Admin, так же возникает ошибка.
При повторной загрузке таблицы на базу, на которой она была создана, ошибок нет. Подскажите пожалуйста, в чем может быть проблема?

Сообщение об ошибке: При сохранении объекта 'Custom\Workspaces\Brief\General\Main Grid\tbl_Brief' в базу данных, возникла ошибка:An object or column name is missing or empty. For SELECT INTO statements, verify each column has a name. For other statements, look for empty alias names. Aliases defined as "" or [] are not allowed. Change the alias to a valid name.An object or column name is missing or empty. For SELECT INTO statements, verify each column has a name. For other statements, look for empty alias names. Aliases defined as "" or [] are not allowed. Change the alias to a valid name

Нравится

3 комментария

у вас там связь есть на таблицу tbl_BriefType. Проблема в ней. Скорее всего в целевой базе она у вас отсутствует

Да, действительно. Но теперь не грузится таблица trbl_BriefGroup, хотя tbl_Contact есть, но нет самой tbl_BriefGroup, поле котроой указанно в качестве первичного ключа

Сообщение об ошибке: При сохранении объекта 'Custom\Workspaces\Brief\Details\Groups\tbl_BriefGroup' в базу данных, возникла ошибка:An object or column name is missing or empty. For SELECT INTO statements, verify each column has a name. For other statements, look for empty alias names. Aliases defined as "" or [] are not allowed. Change the alias to a valid name.An object or column name is missing or empty. For SELECT INTO statements, verify each column has a name. For other statements, look for empty alias names. Aliases defined as "" or [] are not allowed. Change the alias to a valid name

откройте сервис с помощью блокнота и удалите строчку

<Item SQLName="FBriefGroupParentGroupID" UID="2F4BAFAA533944EBADD5D947A284884A" ParentFieldTableUSI="tbl_BriefGroup" ChildFieldSQLName="ParentGroupID"/>

(4 снизу), загрузите таблицу, и создайте связь заново

Показать все комментарии

Проблема такая. Есть новый сервис (табличка, запрос, датасет и т.д.)
В запросе колонки с вручную написанным sql-запросом. Под админом всё в порядке, а пользователи не видят. Читал, что нужно через view делать, но всё равно не работает.

Запрос (из TSAdmin)

SELECT TOP 40
        [tbl_Stat].[ID] AS [ID],
        [tbl_Stat].[CreatedOn] AS [CreatedOn],
        [tbl_Stat].[CreatedByID] AS [CreatedByID],
        [CreatedBy].[Name] AS [CreatedByName],
        [tbl_Stat].[ModifiedOn] AS [ModifiedOn],
        [tbl_Stat].[ModifiedByID] AS [ModifiedByID],
        [ModifiedBy].[Name] AS [ModifiedByName],
        [tbl_Stat].[Name] AS [Name],
        [tbl_Stat].[Description] AS [Description],
        [tbl_Stat].[TypeID] AS [TypeID],
        [Type].[Name] AS [TypeName],
        [tbl_Stat].[OwnerID] AS [OwnerID],
       
             (SELECT Sum(Amount) AS [Amount2]
        FROM [dbo].[vw_Invoice] AS [tbl_In]
        WHERE([tbl_In].[OwnerID] = [tbl_Stat].[ID] AND
                [tbl_In].[InvoiceDate] >= :StartDate AND
                [tbl_In].[InvoiceDate] :FinishDate))
                 AS [CustomSQLColumn1],
                (      SELECT
                           sum(PaymentAmount) AS [CustomSQLColumn]
        FROM
                [dbo].[vw_Invoice] AS [tbl_In]
        WHERE([tbl_In].[OwnerID] = [tbl_Stat].[ID] AND
                [tbl_In].[PaymentDate] >= :StartDate AND
                [tbl_In].[PaymentDate] :FinishDate)) AS [CustomSQLColumn2],
                     (SELECT
                          sum(PaymentAmount2) AS [CustomSQLColumn]
        FROM
                [dbo].[vw_Invoice] AS [tbl_In]
        WHERE([tbl_In].[OwnerID] = [tbl_Stat].[ID] AND
                [tbl_In].[PaymentDate2] >= :StartDate AND
                [tbl_In].[PaymentDate2] :FinishDate)) AS [CustomSQLColumn3],
                      (SELECT
                                 Count (*) AS [CustomSQLColumn]
        FROM
                [dbo].[vw_Invoice] AS [tbl_In]
        WHERE([tbl_In].[OwnerID] = [tbl_Stat].[ID] AND
                [tbl_In].[InvoiceDate] >= :StartDate AND
                [tbl_In].[InvoiceDate] :FinishDate)) AS [CustomSQLColumn4],
                                (SELECT
                                    Sum (Zakaz) AS [CustomSQLColumn1]
        FROM
                [dbo].[vw_Document] AS [tbl_Doc]
        WHERE([tbl_Doc].[OwnerID] = [tbl_Stat].[ID] AND
                [tbl_Doc].[Date] >= :StartDate AND
                [tbl_Doc].[Date] :FinishDate)) AS [CustomSQLColumn5],
                          (SELECT
                                   Sum(PublicationsAmount) AS [CustomSQLColumn]
        FROM
                [dbo].[vw_Document] AS [tbl_Doc]
        WHERE([tbl_Doc].[OwnerID] = [tbl_Stat].[ID] AND
                [tbl_Doc].[Date] >= :StartDate AND
                [tbl_Doc].[Date] :FinishDate))  AS [CustomSQLColumn6],
                                (SELECT
                 Count (*) AS [CustomSQLColumn]
        FROM
                [dbo].[vw_Task] AS [tbl_Ta]
        WHERE([tbl_Ta].[OwnerID] = [tbl_Stat].[ID] AND
                [tbl_Ta].[DueDate] :FinishDate AND
                [tbl_Ta].[StatusID] > :StatusID1 AND
                [tbl_Ta].[StatusID] > :StatusID2)) AS [CustomSQLColumn7],
                       (SELECT
                Count(*) AS [CustomSQLColumn]
        FROM
                [dbo].[vw_Account] AS [tbl_Acc]
        WHERE([tbl_Acc].[OwnerID] = [tbl_Stat].[ID] AND
                [tbl_Acc].[CreatedOn] >= :StartDate AND
                [tbl_Acc].[CreatedOn] :FinishDate)) AS [CustomSQLColumn8],
                        (SELECT
                               Count (*) AS [CustomSQLColumn]
        FROM
                [dbo].[vw_Task] AS [tbl_Ta]
        WHERE([tbl_Ta].[OwnerID] = [tbl_Stat].[ID] AND
                [tbl_Ta].[CreatedOn] >= :StartDate AND
                [tbl_Ta].[CreatedOn] :FinishDate)) AS [CustomSQLColumn9],
                        (SELECT
                           count(*) AS [CustomSQLColumn]
        FROM
                [dbo].[vw_Account] AS [tbl_Acc]
        WHERE([tbl_Acc].[OwnerID] = [tbl_Stat].[ID] AND
                [tbl_Acc].[CreatedOn] :FinishDate)) AS [CustomSQLColumn10]
FROM
        [dbo].[tbl_Stat] AS [tbl_Stat]
LEFT OUTER JOIN
        [dbo].[tbl_Contact] AS [CreatedBy] ON [CreatedBy].[ID] = [tbl_Stat].[CreatedByID]
LEFT OUTER JOIN
        [dbo].[tbl_Contact] AS [ModifiedBy] ON [ModifiedBy].[ID] = [tbl_Stat].[ModifiedByID]
LEFT OUTER JOIN
        [dbo].[tbl_StatType] AS [Type] ON [Type].[ID] = [tbl_Stat].[TypeID]

Помогите!

Нравится

12 комментариев

У вас достаточно простые SQL-подзапросы, их можно реализовать, используя вместо "Колонка с текстом SQL" - "Колонка подзапроса". При этом ядро Террасофт при необходимости само заменит таблицы в подзапросах на представления.

Млин, у меня и было в подзапросах изначально, однако пользователи не видели результат.
потом прочитал про view, сделал пользовательские запросы, так как view там нельзя было выбрать... Потом пришлось все "as [tbl_Account]" менять на однозначные [tbl_Acc]..

Ничего не понимаю..

Говоря простые, я имел ввиду отсутствие сложных условий, из-за которых было бы невозможно реализовать задачу с помощью колонки-подзапроса. Но это не означает, что можно за 5 минут построить этот запрос, или какой-либо другой.
Оценка же всей задачи вообще не имеет прямой зависимости от сложности запроса, есть и другие сервисы, которые нужно реализовывать, плюс бизнес-логика. Так что оценка, скорее всего, была вполне адекватна.

Павел, можете чуть конкретнее, что значит "не видят"?
У пользователей есть доступ на записи счетов, документов и задач?

Да и полностью согласен, что эти запросы нужно реализовывать как SubSelect колонки, там за Вас все система правильно напишет и соберет запрос.

Павел, проверьте права доступа на записи, которые Вы выбираете в подзапросах. Пользователи вообще видят в разделе те записи, которые попадают в подзапросы? Под администратором всё в порядке, поскольку для него не проверяются права.

[upd] Опоздал :).

"Валерий Андрусик" написал:Говоря простые, я имел ввиду отсутствие сложных условий, из-за которых было бы невозможно реализовать задачу с помощью колонки-подзапроса. Но это не означает, что можно за 5 минут построить этот запрос, или какой-либо другой.
Оценка же всей задачи вообще не имеет прямой зависимости от сложности запроса, есть и другие сервисы, которые нужно реализовывать, плюс бизнес-логика. Так что оценка, скорее всего, была вполне адекватна.

Согласен в принципе)

У пользователей есть права на всё везде, в администрировании в TS все галочки стоят.

Не видят – это значит, что GridArea отрисовывается, фильтр тоже, названия столбцов, но самих строк нету

По поводу subselect – я изначально так и сделал, всё через них, но пользователи (не админы)их также не видели. вот попробовал через customSQLColumnс view – тоже самое.

Где собака зарыта?

"Шитиков Павел Владимирович" написал:У пользователей есть права на всё везде, в администрировании в TS все галочки стоят.

Павел, имелся в виду доступ на конкретные записи раздела. То есть, могут ли пользователи видеть в реестре раздела те записи, которые отбираются в созданном Вами запросе? Доступ на конкретную запись раздела регулируется на детали "Доступ" этого раздела.

Понял. Добавил нужную группу в доступ

После этого под пользователями видно только первую строчку и то только после обновления..

Видимо, Вы раздали доступ только на одну запись. Необходимо ту же операцию повторить для всех записей, на которые пользователи группы должны иметь доступ. Для того, чтобы на новые записи доступ раздавался автоматически, необходимо настроить права по умолчанию.

Чтобы иметь представление о концепции прав доступа в системе Terrasoft, прочитайте соответствующий раздел в Руководстве администратора.

Спасибо за помощь

Мануал обязательно полистаю

Показать все комментарии