Имя: Пароль:
1C
1С v8
не может быть записана в базу данных на MS SQL Server с нулевым смещением дат
0 Rodger
 
24.01.11
19:29
После перехода с платформы 8.1 на 8.2 на SQL сервере возникли ошибки связанные с датами во многих местах азы данных (при отчетах, при записи документах)

Ошибка в значении типа 'Дата'
Дата '31.01.0001 23:59:59' не может быть записана в базу данных на MS SQL Server с нулевым смещением дат

В базе на SQL таблица YearOffset имеет значение 0.
раньше, до перевода на 8.1 данное значение было тоже 0, но таких проблем связанных с датой не было.

Кто сталкивался с данной проблемой подскажите как побороть данный глюк?
Хэлп.
1 dk
 
24.01.11
19:39
скл сервер не меняли?
2 Rodger
 
24.01.11
19:49
(1) Нет, ничего не менялось.
База 1С просто конвертнулась на 8.2 и всё.
3 asp
 
24.01.11
20:00
а зачем вам дата 31.01.0001 23:59:59 ?
4 Лефмихалыч
 
24.01.11
20:10
(0) в консоли кластера установи смещение дат = 2000 и забей
5 Rodger
 
24.01.11
20:15
(4) Где в консоле кластера указывать смещение дат?
Я знаю только в одном месте где их можно указать, это при создании новой базы в кластере.

Забить не могу, потому что некоторые важные отчеты пересталди работать и документы некоторые при проведении ошибку стали выдавать.
6 Rodger
 
24.01.11
20:15
(3) Мне лично дата 31.01.0001 23:59:59 не нужна.
Это сервер 1С её создает.
7 asp
 
24.01.11
20:18
смещение можно поменять. делается это не очень сложно, на забаненом сайте есть описалово :)

как вариант: выгрузка-удаление старой базы-создание новой базы со смещением 2000-загрузка.
8 Rodger
 
24.01.11
20:27
(7) сечас делаю именно данный вариант. база большая, поэтому долго происходит загрузка выгрузки в новую базу.
Очень надеюсь что это поможет.

Кстати можете ссылочкой поделиться, которая есть в забаненом сайте?
9 asp
 
24.01.11
20:29
10 МихаилМ
 
24.01.11
21:28
в (9)
какой то изврат.
не проще проапдейтить нужные поля.
11 Лефмихалыч
 
24.01.11
21:35
(5) в свойствах базы
12 Лефмихалыч
 
24.01.11
21:37
или проще действительно зачистить даты:


Declare TablesAndFields cursor for

SELECT objects.name as Tablename, columns.name as columnname
FROM
   dbo.sysobjects as objects
left join dbo.syscolumns as columns
on objects.id = columns.id
where objects.xtype = 'U'
and columns.xtype = 61

open TablesAndFields

Declare @TableName as varchar(100)
Declare @ColumnName as varchar(100)

FETCH NEXT FROM TablesAndFields
   into @TableName, @ColumnName

WHILE @@FETCH_STATUS = 0
BEGIN
   Exec ('update ' + @TableName + '
   set ' + @ColumnName + ' = ''2000-01-01 00:00:00''
   where ' + @ColumnName + ' > ''3999-12-31 23:59:59''')

  -- This is executed as long as the previous fetch succeeds.
  FETCH NEXT FROM TablesAndFields
   into @TableName, @ColumnName
END

close TablesAndFields
deallocate TablesAndFields
go
13 Rodger
 
25.01.11
11:08
(9) Удалось с помощью данного способа решить мою проблему.
Вроде все работает, Сенкью.
(12) Спасибо за альтернативный вариант, возьму его на заметку. Если будет подобные траблы то проверю в действии.
Ошибка? Это не ошибка, это системная функция.