IE2017

Динамическое обновление. Отказ работы механизма сравнения/объединения файлов конфигурации.

Администрирование - Системное

Проблема некорректной работы механизма сравнения/объединения файлов конфигурации и ее решение.

Нетиповая конфигурация.

Платформа 8.2.17.169.

Часто пользовались динамическим обновлением.

Перешли на платформу 8.3.5.1068.

 

Проблемы:

- «Сравнить, объединить с конфигурацией из файла», «Сравнить конфигурации» платформа не видит отличий, либо видит, но не все.

- При объединении конфигураций объекты метаданных откатывались до версий, которые были несколько обновлений назад.

 

Поиск готовых решений проблемы:

http://forum.infostart.ru/forum26/topic72852/

http://www.forum.mista.ru/topic.php?id=408471

http://www.forum.mista.ru/topic.php?id=629968

 

Поиск источника проблемы:

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

 

Таблица Config.

Система оставила старую версию обновляемого модуля и добавила новую версию с признаком динамического обновления (dynupdate в наименовании).

Система оставила старую версию обновляемого модуля и добавила новую версию с признаком динамического обновления (dynupdate в наименовании).

 

Таблица Params.

Каждая запись таблицы продублировалась с признаком динамического обновления.

Каждая запись таблицы продублировалась с признаком динамического обновления.

 

После удаления записей из таблиц Config и Params, которые система сделала при динамическом обновлении, произошел откат сделанных обновлений.

 

Сделал копию проблемной рабочей базы и почистил таблицы Config и Params от лишних записей.

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

Данную процедуру провел на 22 базах.

 

Решение:

 

1. Создать копии таблиц Config, Params для случая если что-то пойдет не так.

 

USE [<имя_базы_данных>]

GO


SET ANSI_NULLS ON

GO

 

SET QUOTED_IDENTIFIER ON

GO


CREATE TABLE [dbo].[<Имя_таблицы>Copy]

(

       [FileName] [nvarchar](128) NOT NULL,

       [Creation] [datetime] NOT NULL,

       [Modified] [datetime] NOT NULL,

       [Attributes] [smallint] NOT NULL,

       [DataSize] [int] NOT NULL,

       [BinaryData] [image] NOT NULL,

       PRIMARY KEY CLUSTERED

       (

             [FileName] ASC

       ) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

GO

 

INSERT INTO [<Имя_таблицы>Copy]

SELECT * FROM <Имя_таблицы>

GO

2. Удалить записи, которые система создает при динамическом обновлении.

 

DELETE

  FROM Config

WHERE

  FileName like '%dynupdate%'

;


DELETE

  FROM Config

WHERE

  FileName like 'DynamicallyUpdated'

;


DELETE

  FROM Params

WHERE

  FileName like '%dynupdate%'

;


DELETE

  FROM Params

WHERE

  FileName like 'DynamicallyUpdated'


3. Обновить конфигурацию файлом с последними изменениями т.к. после чистки произойдет откат модулей, которые обновлялись динамически.

См. также

Комментарии
1. Станислав Коляда (it@contlog.ru) 12.11.14 04:28 Сейчас в теме
Мы просто отказались от динамического обновления. Этот механизм как не работал так и не работает у 1с.
andry888; sashapere; SuhoffGV; omut; artbear; vladir; webester; cool.vlad4; tormozit; theshadowco; Stim213; Yashazz; Йожкин Кот; +13 Ответить 1
2. борян петров (TODD22) 15 12.11.14 06:37 Сейчас в теме
Динамическое обновление это верный способ нажить себе проблем. А потом с ними героически сражаться.
За решение спасибо! Может пригодиться.... А то пару раз встречал базы кем то динамически обновленные.
3. Канат Джумадылов (Fox-trot) 52 12.11.14 07:50 Сейчас в теме
DELETE

  FROM Config

WHERE

  FileName like '%dynupdate%' OR FileName like 'DynamicallyUpdated'
...Показать Скрыть

все ж таки один проход лучше, чем два =) тем паче что оба не оптимизируемы
крута было б ежели все это дело обернуть в ADO и сделать в виде родной обработки 1С с одной лишь кнопкой "Сделать все хорошо" =)
alexscamp; v.a.ryag; TIS_08; Terve!R; +4 Ответить
4. Яков Коган (Yashazz) 2095 12.11.14 09:38 Сейчас в теме
Хотите жить спокойно - никогда не пользуйтесь динамическим обновлением.
5. Виталий (PVG_73) 16 12.11.14 11:47 Сейчас в теме
Спасибо, за решение. Динамикой увы приходится пользоваться.... но вот таблиц таких слава богу оказалось не так много.....
6. DAnry (DAnry) 12 12.11.14 18:46 Сейчас в теме
Бывают случаи, что без динамического обновления никак. А за статью - спасибо.
7. Олег Кострицын (recon) 34 12.11.14 19:13 Сейчас в теме
Честно говоря не совсем понял чем автору не помогла очистка кэша. лезть в SQL ради удаления таблиц имхо последнее дело, когда базе уже ничего не поможет. Более того, платформа сама удаляет эти записи когда происходит монопольное обновление.
http://www.gilev.info/2010/02/1-81.html
https://partners.v8.1c.ru/forum/topic/448505

При динамическом обновлении основная проблема возникает не на сервере SQL, а на клиенте, у которого не обновляется кэш или кэш разрушается. В результате при следующем входе в систему пользователь получает не ту версию конфигурации, которая ожидается, или получает ее не полностью.
artbear; EmpireSer; Rustig; +3 Ответить 1
8. Ийон Тихий (cool.vlad4) 41 13.11.14 00:53 Сейчас в теме
(6) DAnry, например? мое мнение, если без динамич. обновления никак, то что-то явно делается не так.
Для файловых баз, расшаренных по сети, это однозначно геморрой и проблемы.
9. Валентин (Valp) 55 13.11.14 04:27 Сейчас в теме
(7) recon, проблема была в том, что при монопольном обновлении платформа с какого-то момента перестала удалять записи сделанные динамическим обновлением. В некоторых базах таблица Config хранила десятки версий одних и тех же объектов. Для таких баз при выполнении сравнения/объединения конфигураций платформа не видела различий в файлах, а при выполнении команды объединения/загрузки конфигурации из файла, считала последней версией объекта одну из старых неудаленных.
10. Сергей Вн (EmpireSer) 13.11.14 09:56 Сейчас в теме
(9) Valp,
Я у десятка клиентов пользуюсь динамическим обновлением. Проблем не возникает.
Точнее... один раз возникла у клиента, у которого мы просто переставили 1С сервер с 8.2.16 на 8.3.4 без выгрузки/загрузки через DT. И то, проблема возникла у всех, у кого когда либо открывали конфигуратор и открывали в нём конфигурацию.

А так, как я сказал, проблем ни каких. Есть даже один клиент у которого я по 30 раз за день делаю динамическое обновление (клиент-сервер 8.2.19.106, MS SQL 2012).
Может Вы не умеете "готовить 1С"? :-)
11. Александр Хомяк (logarifm) 974 13.11.14 10:24 Сейчас в теме
Ну отказываться от динамического обновления не вижу смысла. А вот использовать хранилище конфигурации всецело устранит эти проблемы. Зачем разрабатывать какой-то кф-ник потом мучаться со сравнениями?
12. Валентин (Valp) 55 13.11.14 17:12 Сейчас в теме
(11) logarifm,
Для разработки используем хранилище, файл с нужными изменениями выгружаем и отправляем в живые базы,
они обновляются монопольно в пакетном режиме. Проблему получили при очередном таком обновлении, сразу после перехода на новую платформу. Отправили файл с изменениями, по логам все прошло успешно, но по факту в конфигурации БД получили откат некоторых объектов к версиям, которых не было ни в конфигурации которую обновляли, ни в конфигурации которой обновляли. При попытке ручной загрузки, получили то же результат. При сравнении конфигураций оказалось, что платформа не видит изменений. Проблема возникла почти на всех базах, для которых перешли на новую платформу.
13. Канат Джумадылов (Fox-trot) 52 13.11.14 20:12 Сейчас в теме
(12) Valp, все эти пляски с бубном от того, что 1с вряд ли опубликует алгоритмы процесса обновления
такие дела
14. Сергей Вн (EmpireSer) 14.11.14 00:45 Сейчас в теме
(13) Fox-trot,
Вообще-то он довольно понятный. Даже можно сделать сравнение до и после изменений распаковывая данные в "BinaryData".

(0),
Всё таки "костыль" исправления уже сделанного не правильного перехода описан хорошо.
Но в статье не хватает описания правильного перехода, где не возникнет таких проблем.
Так же Вы не описали как осуществлялся переход с 8.2.17 на 8.3.5, т.е. сами этапы.
15. Канат Джумадылов (Fox-trot) 52 14.11.14 06:44 Сейчас в теме
(14) EmpireSer, то есть тебе еще не попадалиь случаи когда сравнение не показывало различие всего одного свойства, к примеру в макете, хотя ты точно его изменял
раз уж тебе известно больше чем окружающим, может поделишься кодом 1с сравнения конфигураций. для серверного варианта есесьно
16. Роман Ложкин (webester) 22 17.11.14 15:04 Сейчас в теме
Один раз произошло так, что факт того, что изменения откатились всплыл где то через пару месяцев. После этого стараюсь не трогать динамическое обновление, можно очень сильно потом об этом пожалеть.
17. Just (Just) 2 25.11.14 12:08 Сейчас в теме
(10) EmpireSer,
Видимо ты знаешь что-то чего не знают другие, может тебе Борис какой-то секрет рассказал?
Сколько активных юзеров в базе, которую ты в день по 30 раз обновляешь? После таких изменений обычно база долго не живет. По теме, если выгонять всех юзеров после каждого динамического обновления (грубо говоря одно обновление в день), то скорее всего "пронесет", но с 30-кой в день, это не реально.
18. Александр Перевислый (sashapere) 142 23.09.16 20:11 Сейчас в теме
(1) it@contlog.ru, Как вы это реализовали?
Оставьте свое сообщение