Имя: Пароль:
1C
1С v8
Как произвести обновление с помощю промежуточных обновлении
0 CHART
 
16.10.12
12:31
Пример Есть верция 1.0.1.0. Надо в базе изменить тип реквизита, не потеряв данные. Для этого надо создать версию 1.0.1.1, с новым реквизитом нового типа, копировать данные на новый реквизит. Создать версию 1.0.1.2, где переименуем реквизит.
Подскажите, пожалуйста, как это реализовать с помощэ комплекта поставки, или дайте ссылку на литературу. Заранее спасибо
1 Cube
 
16.10.12
12:36
(0) В типовых так:

Допустим, что в релизе 1.0.1.0 есть реквизит "Траляля" тип - строка. Нужно его сделать справочником. Погнали.

Релиз 1.0.1.1. Реквизит "Траляля" переименовываем в "УдалитьТраляля" тип не меняем. Добавляем реквизит "Траляля" тип - справочник. В обработке обновления добавляем процедуру, которая переносит данные с реквизита "УдалитьТраляля" в реквизит "Траляля".

Релиз 1.0.1.2. Не трогаем реквизиты.

Релиз 1.0.1.3. Не трогаем реквизиты.

...

Релиз 1.0.2.0. Удаляем реквизит "УдалитьТраляля".
2 CHART
 
16.10.12
12:55
А можно это все делать в одном комплекте поставки: т.е. обновить от 1.0.1.0 до 1.0.2.0 одним шагом ,а внутри это все сделалось автоматически. Спасибо за ответ
3 Cube
 
16.10.12
13:00
(2) Ни в коем случае. Ведь твои клиенты не обязательно будут обновляться с 1.0.1.0 до 1.0.1.1. Кто-то обновится сразу до 1.0.1.2, а кто-то может и десять релизов перепрыгнуть... Так вот, нужно заложить место для маневра, а то тухлые помидоры полетят...
4 CHART
 
16.10.12
13:07
т.е невозможно обновить от 1.0.1.0 до 1.0.2.0, но в то время по порядку база обновлялась  сперва 1.1, потом 1.2, 1.3 и наконец 2.0. Т.е сделать обновление с помощю промежуточных обновлениии. Надо чтоб клиент не мог обновлятся версиями 1.1, 1.2, 1.3, а сразу 2.0. Большое спасибо за ответы.
5 Cube
 
16.10.12
13:11
(4) Я ничего не понял))
Если брать мой пример из (1), то при обновлении с 1.0.1.0 до 1.0.2.0 (пропустив 9 релизов) информация из реквизита "Траляля" будет просто потеряна и будут ошибки при обновлении.
Но если обновлять 1.0.1.0 до 1.0.1.9 (пропустив 8 релизов), а потом 1.0.1.9 до 1.0.2.0, то всё будет хорошо - ничего не потеряется и ошибок не будет.
6 Aprobator
 
16.10.12
13:13
.. изменить тип реквизита не потеряв данные... уже хорошо.
7 Cube
 
16.10.12
13:16
(6) А что тебя смущает?
8 CHART
 
16.10.12
13:19
Надо чтоб обновлялся от 1.0 до 2.0 а все промежуточные обновления обработавались в этом же обновлениии, т.е. использовать промежуточные обновления.
9 Aprobator
 
16.10.12
13:25
(7) необходимость данного действа и сама постановка.
10 Cube
 
16.10.12
13:26
(8) Это всё пропишешь в обработке обновления. Тут самое главное поймать момент, когда реквизит "УдалитьТраляля" из поставки удалять насовсем, ведь при обновлении сначала добавляются/удаляются реквизиты, а потом уже запускается обработка обновления...

Ну вот смотри, обновляем 1.0.1.0 до 1.0.2.0.
В 1.0.1.0 есть реквизит "Траляля" тип строка. В 1.0.2.0 такого реквизита нет. Есть реквизит с таким же наименованием, но с другим внутренним идентификатором и типом справочник...
При обновлении удаляется реквизит "Траляля" тип строка и данные, которые в нем хранились. И добавляется реквизит "Траляля" тип справочник, в котором данных вообще нет - он же новый.
Запускаем режим "Предприятие". Запускается обработка обновления, которая должна перенести данные с реквизита "УдалитьТраляля" в реквизит "Траляля"... И... Обработка выдает ошибку, ведь реквизита "УдалитьТраляля" нету...

Теперь понятно?
11 CHART
 
16.10.12
13:28
Большое спасибо!
12 Cube
 
16.10.12
13:28
(9) Со временем поймешь) Даже, если нетленку писать не будешь. Ведь в типовых конфах это очень распространено...