Вход | Регистрация


1С:Предприятие :: 1С:Предприятие 8 общая

Как с наименьшими потерями преобразовать дату в универсальную при обновлении БСП

Как с наименьшими потерями преобразовать дату в универсальную при обновлении БСП
Я
   1S_User
 
13.12.17 - 11:35
Добрый день. Необходимо обновить БСП. Там измерение регистра меняется с типа "Дата" на Универсальная дата в миллисекундах, т.е. число(14,0). Регистр огромный. Десятки миллионов записей.
В голову приходят 2 варианта:
1. накатывать в 3 релиза сначала доп. реквизит и в него скопировать дату, затем поменять тип и вернуть значения, уже преобразовав, потом удалить реквизит
2. Выгрузить в файл перед апдейтом, а после загрузить. Более приоритетный, конечно, но оба варианта чудовищные на самом деле.

Такой переход должен быть весьма распространенным. Кто сталкивался, как решали?
 
 
   novichok79
 
1 - 13.12.17 - 11:43
(0) а что за регистр сведений? и какие версии БСП?
   novichok79
 
2 - 13.12.17 - 11:44
(0) и да, я бы делал вторым способом.
   lodger
 
3 - 13.12.17 - 11:49
я, как ленивый чувак, сделал бы по 1 сценарию, но немножко иначе.
а) добавить реквизит\измерение\ресурс с Универсальная дата в миллисекундах, неспешно заполнить с конвертацией из исходного.
б) удалить исходный, реквизит\измерение\ресурс переименовать в исходный.
   Fragster
 
4 - 13.12.17 - 11:51
перенести таблицу скулем в другую БД, странкейтить, обновить, перенести скулем обратно с преобразованием в юникстайм
   novichok79
 
5 - 13.12.17 - 11:51
(3) неплохой вариант
   Fragster
 
6 - 13.12.17 - 11:52
в юникстайм*1000
   Fragster
 
7 - 13.12.17 - 11:52
ну и да, если это какие-то замеры производительности, то подумать, а нужны ли эти данные, и без сожаления грохнуть
   lodger
 
8 - 13.12.17 - 11:54
(4) это более производительный вариант, но тут надо кроме конфигуратора уметь открыть MSSMS, например.
   Serg_1960
 
9 - 13.12.17 - 12:03
Я так понимаю, весь вопрос упирается в изменение измерения регистра. Ибо преобразование даты - не вопрос ("Миллисекунды=Дата*1000;")
   Fragster
 
10 - 13.12.17 - 12:07
(9) а вот неправильная у тебя формула
 
 Рекламное место пустует
   Serg_1960
 
11 - 13.12.17 - 12:08
(0) "накатывать в 3 релиза" - не в три, а в два релиза: добавить тип число; обработка преобразования; убрать типа дата.
   1S_User
 
12 - 13.12.17 - 12:09
(1) Замеры времени. Поднятие БСП до 2.4.4
(9) Вопрос именно в том, как наименее болезненно провести реструктиризацию. База сверхгигантская.
Вариант со скюлем понравилсся. Но, блин, я не админ их скюля. Придется договариваться.
   1S_User
 
13 - 13.12.17 - 12:09
(11) Ну так лишний реквизит тоже потом убрать надо будет.
   Fragster
 
14 - 13.12.17 - 12:10
(12) договоритесь до того, что не нужны вам эти замеры :)
   Fragster
 
15 - 13.12.17 - 12:10
в новой БСП, кстати, есть задание, удаляющее исторические данные замеров
   1S_User
 
16 - 13.12.17 - 12:11
(10) А там, кстати, не юникстайм. Там именно миллисекунды с Дата(1,1,1). текущаяуниверсальнаядатавмиллисекндах() это именно оно. Не спрашивайте меня, почему.)
   1S_User
 
17 - 13.12.17 - 12:11
(14) Скорее решат, что я не нужен.)
   Serg_1960
 
18 - 13.12.17 - 12:11
(10) Ага, ждите, щас, я вам тут всю функцию писать буду :) Лениво же :(
   xxTANATORxx
 
19 - 13.12.17 - 12:12
в скуле скопируй колонку таблицы, заполни, после обновления переименуй
   Fragster
 
20 - 13.12.17 - 12:14
(16) тогда правильная
   1S_User
 
21 - 13.12.17 - 12:14
(19) А при рестуктуризации же колонка слетит. Только если таблицу всю скопировать, а потом вернуть преобразованную.
   1S_User
 
22 - 13.12.17 - 12:16
Ну, короче, я понял, что неожиданно легкого пути нет, как и ожадалось. Пойду гонять на копии прода различные варианты, какой менее убоен.)
   Fragster
 
23 - 13.12.17 - 12:17
(22) и все-таки попробуй (14)
   Fragster
 
24 - 13.12.17 - 12:18
и очисти РС перед обновлением
   1S_User
 
25 - 13.12.17 - 12:21
(24) Да, я прихожу к выводу, что выгрузить все, очистить регистр, а потом постепенно подгружать то, что нужно.
   Fragster
 
26 - 13.12.17 - 12:27
(25) тут есть промежуточный, но очень важный этап - случайно потерять выгруженные данные.
   Fragster
 
27 - 13.12.17 - 12:28
при этом этап выгрузки можно даже пропустить
   Serg_1960
 
28 - 13.12.17 - 12:55
(13) "Ну так лишний реквизит тоже потом убрать надо будет." - ёпрст:) Добавить нужно не реквизит, а тип(!) - т.е. существующие измерение регистра нужно сделать составного типа.

Тогда можно будет читать записи; преобразовывать значение и записывать запись - редактирование в один проход всех записей регистра.
   1S_User
 
29 - 13.12.17 - 13:12
(28) Ну, не в данном случае. Составное индексное поле в этом случае может привести к не лучшим последствиям "между релизами".
   Serg_1960
 
30 - 13.12.17 - 13:32
Ну, как бы "да", но это мелочи - если выбирать между двумя или тремя релизами :)


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует