Фильтры

Случилось так, что у меня слетело время на серверах. стал 2041 год. Исправили. 

Но вохник вопрос а что же с БД произошло? много ли записей с датой в будущем теперь у меня? Ответ - не много - около 1000, все исправил.

Но по ходу пьесы наткнулся на интересную вещь. Чисто логически в БД не должно быть записей с CratedOn или ModifiedOn > GETUTCDATE(). А они есть и не где либо, а в системных таблицах.

Для поиска своих записей из 2041 года набросал скрипт 

if  OBJECT_ID(N'tempdb..#Results') is not null
	Drop Table #Results
 
CREATE TABLE #Results (ColumnName nvarchar(370), Id uniqueidentifier)
 
SET NOCOUNT ON
 
DECLARE @TableName nvarchar(256), @ColumnName nvarchar(128), @SearchStr2 nvarchar(110)
SET  @TableName = ''
WHILE @TableName IS NOT NULL
BEGIN
	SET @ColumnName = ''
	SET @TableName = 
	(
		SELECT MIN(QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME))
		FROM 	INFORMATION_SCHEMA.TABLES
		WHERE 		TABLE_TYPE = 'BASE TABLE'
			AND	QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME) > @TableName
			AND	OBJECTPROPERTY(
					OBJECT_ID(
						QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME)
							), 'IsMSShipped'
						    ) = 0
	)
 
	WHILE (@TableName IS NOT NULL) AND (@ColumnName IS NOT NULL)
	BEGIN
 
		SET @ColumnName =
		(
			SELECT MIN(QUOTENAME(COLUMN_NAME))
			FROM 	INFORMATION_SCHEMA.COLUMNS
			WHERE 		TABLE_SCHEMA	= PARSENAME(@TableName, 2)
				AND	TABLE_NAME	= PARSENAME(@TableName, 1)
				AND	QUOTENAME(COLUMN_NAME) > @ColumnName
				And QUOTENAME(COLUMN_NAME) in ('[CreatedOn]', '[ModifiedOn]')
		)
		IF @ColumnName IS NOT NULL
		BEGIN
 
			INSERT INTO #Results
			EXEC
			(
				'SELECT ''' + @TableName + '.' + @ColumnName + ''', Id  
				FROM ' + @TableName + ' (NOLOCK) ' +
				' WHERE ' + @ColumnName + ' > GETUTCDATE() '
			)
		END
	END	
END
 
SELECT ColumnName, Id FROM #Results

После устранения 2041 года остались записи

ColumnName    Id

[dbo].[SysPackageSchemaData].[ModifiedOn]    2C172889-10E7-460D-A630-91E20CCC9ED8
[dbo].[SysPackageSqlScript].[ModifiedOn]    B2C17845-F2FD-43A9-97DF-946E2D74588C
[dbo].[SysProfileData].[ModifiedOn]    452EB96A-2F2D-4CDC-B244-823DEE7F36EA
[dbo].[SysProfileData].[ModifiedOn]    A46E427B-1514-478C-8F1E-A909B7D32B03
[dbo].[SysProfileData].[ModifiedOn]    349014E2-54AB-41C5-8072-9278D1829F5A
[dbo].[SysProfileData].[ModifiedOn]    B1B78E04-2D3D-414D-BD1F-565D9D96213E
[dbo].[SysProfileData].[ModifiedOn]    553596E4-06D1-4299-B012-F2098849E271
[dbo].[SysProfileData].[ModifiedOn]    D453578C-DB8C-4ECC-918A-26ED068054F4
[dbo].[SysProfileData].[ModifiedOn]    2F316056-B411-4FEF-BBD2-47CC5167320E
[dbo].[SysProfileData].[ModifiedOn]    DD200005-1F2F-4891-B3F2-32EF08CEF537
[dbo].[SysProfileData].[ModifiedOn]    E80BE419-186B-4AFA-A726-8CFC362DCAB1
[dbo].[SysProfileData].[ModifiedOn]    EFE8B4C8-6612-42EB-A39C-2418ACFB532D

 

Если смотреть конкретно по записям SysProfileData, то там дата текущего часового профиля, а не UTC. Т.е. если в моем запросе заменить GETUTCDATE() на GETDATE(), то скрипт больше не выдает эти записи. На либо баг сохранения данных в БД.

Но не дают покоя эти записи 

тут больше похоже на баг в поставке.

Террасофт, что скажите?

И у кого есть такие записи из будущего?

 

Версия 7.17.1

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

Задача следующая: в объекте есть поле, которое вычисляется по данным, вводимым пользователем. Значение этого поля нужно сделать недоступным для пользователя. 

Так как сокрытие этого поля со страницы, например, бизнес-правилами, не решает задачу до конца (у пользователя остается возможность вывести поле в реестр), решение видится в ограничении доступа по колонкам. Базовая функциональность подразумевает  возможность запрета чтения и записи на колонку, разрешения чтения на колонку,  разрешения чтения и записи на колонку. 

Предложение - добавить возможность записи в колонку, но запретить чтение

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

Добрый день,

 

Мы со своей стороны зарегистрировали проблему и запланируем доработку в будущих релизах.

 

 

С уважением,
Кучер Виталина

Сотрудник технической поддержки Террасофт

v.kucher@creatio.com,

А в идеале сделать элементом бизнес-процесса, чтобы можно было динамически менять права доступа на колонку в зависимости от внешних событий и/или этапа процесса

Показать все комментарии
Идея
Обсуждение

Очень часть возникают задачи с написанием запросов в которых нужно использовать механизм OUTER APPLY, LEFT JOIN LATERAL. Но в классе Select такой возможности нет. Было бы хорошо, если такая возможность появится.

Планируется ли расширение класса Select подобным функционалом?
Спасибо.

1 комментарий

Алексей, здравствуйте!
На данный момент, расширять класс Select механизмом OUTER APPLY, LEFT JOIN LATERAL не планируем.
Завели задачу на ответственную команду для рассмотрения способов расширения функционала.

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

Здравствуйте, хотелось бы задать вопрос об улучшении сайта сообщества. Как по мне, это место сейчас больше работает как справочник, а не место для обсуждения. Добавилось бы как минимум отображение ответа на тему или комментарий, люди просто не замечают ответа и просто забывают ответить, мне кажется, добавление уведомлений значительно бы ускорило обсуждение. 
Касательно мелких багов и неудобств.
Ответы на комментарии неудобные, да и по написанному выше особо смысла не несут, под "неудобные" я подразумевал выделение всего текста жирным при удалении первого символа в комментарии. 
Открыть изображение на весь экран можно только выводом его в отдельную вкладку, было бы неплохо иметь возможность увеличить изображение.

И др.

Ну это уже мелочи. Спасибо, что выслушали. Возможно добавление этой возможности несет за собой определенные трудности и из-за них этого не добавляют. Был бы рад услышать мнение о моих суждениях.

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

И добавьте ещё признак "Получил ответ на свой вопрос". А то многие вопросы остаются без ответа

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

Булат Хабирзянов,

Здравствуйте!

 

Ваше пожелание передано ответственной команде разработчиков Community.

Спасибо, что делаете наш продукт лучше!

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

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

Нет возможности в запросе (Select, Update и др.) указать математические функции, например: CEILING, FLOOR, ROUND и др.

Через Func.CustomFunction вызвать функцию нельзя, так как генерируется некорректный SQL текст, например для MS SQL:

[dbo].[CEILING](..params..)

а нужно без dbo:

CEILING(..params..)

Нет возможности выполнить элементарный запрос

UPDATE Contact
SET SomeContactColumn = CEILING(OtherContactColumn / 3)
WHERE Id = 'some id'

 

1 комментарий

Добрый день, Владислав.
Пожелание зарегистрировано и передано аналитикам продукта.
Пока что для реализации Вашего запроса используйте CustomQuery.
Пример: CustomQuery(userConnection, sqlText)

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