Имя: Пароль:
1C
 
v8: Устанавливаем 1С 8.2. на SQL. Подскажите, что означает галка "Смещение дат"?
0 Radion
 
09.06.11
11:00
Устнавливаем платформу 1С 8.2. на SQL. При создании новой базы, на окне создания есть галка "Смещение дат", подскажите что она означает? В желтой книжечке что то описания не нашел ((( Спасибо.
1 ДенисЧ
 
09.06.11
11:01
http://info_start.ru/public/21348/

убрать знак _ из адреса
2 Волшебник
 
09.06.11
11:03
При создании базы с параметром смещения равным 2000 часто решается проблема "не уникальности" индексов на "датах".

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

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.

v8: Смещение дат (ошибка в индексах)
3 Hipernate
 
09.06.11
11:07
В таблички SQL даты пишутся с учетом указанного смещения, т.е. 09.06.2011 в sql будет записана 09.06.4011
4 Dmitrii
 
гуру
09.06.11
11:08
(0) http://www.its.1c.ru/db/metod81#content:4055:1

Данный параметр определяет число лет, которое будет прибавляться к датам при их сохранении в базе данных Microsoft SQL Server и вычитаться при их извлечении. Он может принимать значения 0 или 2000.

Если установить смещение дат 0, то:
при записи дат в диапазоне с 00:00:00 1 января 1 года по 23:59:59 1 января 1 года даты будут переводиться в диапазон с 00:00:00 1 января 1753 года по 23:59:59 1 января 1753 года, а при чтении - обратно;
даты 1С:Предприятия с 00:00:00 2 января 1753 года по 23:59:59 31 декабря 3999 года будут записываться в базу данных без изменений;
попытка записи в базу данных дат с 00:00:00 2 января 1 года по 23:59:59 1 января 1753 года будет приводить к ошибке.

Если смещение дат установлено в 2000, то при записи в базу данных к дате будет прибавлено 2000 лет, а при чтении из базы данных - вычтено 2000 лет. Это позволит записывать в базу данных любые даты 1С:Предприятия. Однако, при этом незначительно снизится скорость работы с базой данных, и при просмотре базы данных средствами, отличными от 1С:Предприятия, все даты окажутся измененными.

Таким образом, если при работе с информационной базой может возникнуть необходимость хранения дат, предшествующих 1 января 1753 года, то в качестве значения параметра следует выбрать 2000. Если же такие даты встречаться не будут, то в качестве смещения дат можно выбрать 0.

Важно, что нулевое значение смещения дат может привести к нежелательным ошибкам. Эти ошибки возникают, если конфигурация все-таки выполняет попытки записи дат, предшествующих 1 января 1753 года, которые не планировались. Поэтому для смещения дат при создании информационной базы "1С:Предприятие 8.2" в качестве значения по умолчанию предлагает использовать значение 2000.

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