При развертывании ИБ 1С v8.1 выбирайте СМЕЩЕНИЕ ДАТ = 2000

При создании базы с параметром смещения равным 2000 часто решается проблема "не уникальности" индексов на "датах".
Если не знаете смещение у существующей базы, используйте скрипт
SEL ECT TOP 1 Offset FROM _YearOffset

О том, что в 1с v8.1 можно избежать проблему неуникальных индексов при наличии проблемных дат уже писал. Но нет, периодически возникают сомнения у новичков: а правда ли это.

Почитайте партнерский форум (проблемы) :

1. Это проблема присуща толко MS SQL Server ( например на DB2 такой заморочки нет вообще). Изначально смещение — это формат хранения дат в субд.

2. Короткий пересказ мыслей разработчиков » Литерал ДАТАВРЕМЯ(1, 1, 1) адекватно представляется на всех СУБД и считается нулевой датой. Даты от ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) до ДАТАВРЕМЯ(1, 1, 1, 23, 59, 59) считаются временем без даты и тоже адекватно интерпретируются на всех СУБД. Различное поведение возможно для дат из диапазона с ДАТАВРЕМЯ(1, 1, 2) по ДАТАВРЕМЯ(1752, 12, 31, 23, 59, 59). Эти даты не могут быть представлены на MS SQL Server с нулевым смещением дат и могут интерпретироваться либо как нулевые даты, либо вызывать ошибку операций над данными.

В результате можно получить ошибку вроде Microsoft OLE DB Provider for SQL Server: Adding a value to a ‘datetime’ column caused overflow. HRESULT=80040E07, SQLSrvr: Error state=1, Severity=10, native=517, line=1

3. И хотя официальная позиция 1С туманна :), не стоит искать приключения …

Выбирайте смещение 2000.

 

 

 

7 Comments

  1. nosk2k

    А есть способ найти документ или элемент в котором есть реквизиты с «плохими датами» ?

    Reply
  2. (1) смотрите мою обработку, она ищет все такие документы, правда могут быть системные таблицы…

    (0) А можо поменять смещение у существующей базы. и как задать смещение при создании базы?

    Reply
  3. vbelyaev

    (2) motherf,

    1) выгрузи базу в *.dt (Конфигуратор — Администрирование — Выгрузить информационную базу)

    2) создай Пустую базу на SQL сервере

    3) подключи её к серверу предприятия, указав смещение 2000

    4) загрузи базу из ранее выгруженного *.dt (Конфигуратор — Администрирование — Загрузить информационную базу)

    5) пользуйся

    Reply
  4. konstantin5586

    Разве не проще переподключить базу и всё?

    Reply
  5. AnKonAlm

    А меня спасла вот эта обработка.

    Просто командный пересчет итогов видимо.

    http://infostart.ru/public/146633/

    Reply
  6. MrWonder

    А еще смещение дат можно поменять без перезаливки DT

    Reply
  7. progr-2008

    Для 8.3.8 актуально?

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *