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


1С:Предприятие ::

Метки: 

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

Я
   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 человек.
Рекламное место пустует