Wednesday, December 21, 2011

Исправление YearOffset в ms sql базах 1с

Имеем проблему разных дат в базах 1с. То есть если при установке базы данных установили смещение дат 2000, то в скуле все записи дат будут с 4000 года, что вызывает небольшой дискомфорт при обмене данными средствами sql. Для исправления этого недоразумения был найден этот скриптик, в принципе идея в голове летала, вот только время на реализацию все не было. Так что спасибо Волшебному форуму, а именно пользователю Господин ПЖ
use rl_distrib;
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 + ' = dateAdd(year,-2000,'+@ColumnName+')
    where ' + @ColumnName + ' > ''3000-12-31T23:59:59''')
 
  -- This is executed as long as the previous fetch succeeds. 
   FETCH NEXT FROM TablesAndFields
    into @TableName, @ColumnName
END
 
close TablesAndFields
deallocate TablesAndFields
update dbo._YearOffset set Offset=0

No comments:

Post a Comment