Имя: Пароль:
1C
1С v8
Создание таблиц изменений констант при увеличении совместимости конфигурации на 8.3.13>=?
,
0 pvase
 
12.07.19
16:08
Раньше (8.2), для сохранения изменений в константах использовалась одна общая таблица
_Consts - константы
_ConstsChngR - изменения в таблице
Но при переходе на 8.3 ситуация изменилась, теперь для хранения изменений используется для каждой константы отдельная таблица, например:
_Const22137 - таблица константы
_ConstChngR22257 - таблица изменений константы

Вроде в теории все правильно, и даже в практике все правильно... было, до последних релизов 1С: 8.3.13, 8.3.14  и 8.3.15.

Что происходит с базой при повышении совместимости? Так при повышении совместимости с 8.2.13 на 8.3.12 (версия 1С - 8.3.12.1567) происходит создание таблиц для каждой константы и параллельно таблицы для изменений, например: _Const22137 и _ConstChngR22257.

Но при попытке повысить совместимость до того же уровня 8.3.12, но на платформе 8.3.13.1644 происходит что-то непонятное, создаются таблицы констант (например _Const22137), но почему то не создаются таблицы изменений констант (_ConstChngR22257). При этом конфигурация успешно работает, не выдает никаких ошибок, но если нет записей в планах обменов. Как только появиться хоть одна запись в плане обмена, то тут же возникает критическая ошибка SBL и 1С закрывается при попытке записать константу.
Возникает вопрос, это общая ошибка платформы, или стечение неизвестных факторов, которые приводят к такому странному поведению 1С? Кто-что знает об этом?
1 Вафель
 
12.07.19
16:10
а константы включены в планы обмена ?
узлы есть?
2 ДенисЧ
 
12.07.19
16:11
Реструктуризацию таблиц делал после повышения уровня?
3 pvase
 
12.07.19
16:15
(1) Это типовая УПП, так сказать из коробки, константы включены.
(2) Специально не делал, а как это делается? Я просто нажал "Обновить конфигурацию базы данных (F7)" - думаю, что реструктуризация должна пройти автоматически. Или ошибаюсь?
4 pvase
 
12.07.19
16:16
(1) Проверил, некоторые константы включены (та, на которой провожу эксперименты точно включена), планы обмена есть.
5 Вафель
 
12.07.19
16:17
попробуй для начала поднять на 8.2.14
именно там константы по новому
6 ДенисЧ
 
12.07.19
16:19
(3) В конфигураторе тестирование и исправление
7 ДенисЧ
 
12.07.19
16:19
+6 в файле по обновлению специально написано, что при повышении уровня совместимоти надо делать реструктуризацию.
8 pvase
 
12.07.19
17:19
(7) Тестирование и исправление не помогает, таблицы не создаются.
9 pvase
 
12.07.19
17:21
Понизить релиз CNVDBFL.EXE" -c -f 8.2.13 - не дает, можно только до 8.2.14 - а в ней уже таблицы должны быть. В общем пока только создавать новую базу с желаемой структурой или танцы с бубном чтобы создать ту же базу, но для старой версии и оттуда перенести средствами SQL недостающие таблицы.
10 ptiz
 
12.07.19
17:26
(8) А выгрузить/загрузить через dt ?
11 pvase
 
12.07.19
17:44
(10) Ничего не дает. Набросал скриптик на скорую руку, может кому пригодиться:

DECLARE @TableName AS varChar(200)
DECLARE myCur CURSOR FOR
SELECT LEFT(TABLE_NAME,6)+'ChngR'+RIGHT(TABLE_NAME,LEN(TABLE_NAME)-6) FROM [INFORMATION_SCHEMA].[TABLES]
WHERE LEFT(TABLE_NAME,6) = '_Const'
AND LEFT(TABLE_NAME,11) <> '_ConstChngR'

  
  OPEN myCur
  FETCH NEXT FROM myCur INTO @TableName  
  WHILE @@FETCH_STATUS=0 BEGIN  
      EXEC ('CREATE TABLE [dbo].['+@TableName+'](
    [_NodeTRef] [binary](4) NOT NULL,
    [_NodeRRef] [binary](16) NOT NULL,
    [_MessageNo] [numeric](10, 0) NULL,
    [_ConstID] [binary](16) NOT NULL
    ) ON [PRIMARY]'
      )
      FETCH NEXT FROM myCur INTO @TableName  
  END  
  CLOSE myCur
  DEALLOCATE myCur

Но еще надо проверить.
12 pvase
 
15.07.19
10:05
Оказывается, надо было просто удалить все планы обмена, а потом добавить и таблицы успешно создадутся.
13 Гипервизор
 
15.07.19
10:18
(5)(9) Разве есть такой режим совместимости 8.2.14? Кажется после 8.2.13 идет сразу 8.2.16.
14 pvase
 
16.07.19
15:55
(13)
CNVDBFL.EXE
1C:Enterprise 8.3 Database File Format Conversion Utility © 1C-Soft LLC 1996-2018
Утилита конвертации файлов базы данных 1С:Предприятия

Использование:
        cnvdbfl [command] [options] [arguments]

Общие параметры:
    --help | -? | -h
        отображение краткой информации об утилите
    --version | -v
        получение версии утилиты
    --info | -i
        получение информации о формате файла базы данных
    --convert | -c
        конвертация файла базы данных в другой формат
    --format=<format version> | -f <format version>
        версия формата файла базы данных: 8.2.14 или 8.3.8
    --page=<page size> | -p <page size>
        размер страницы файла базы данных в байтах: 4096, 8192, 16384, 32768, 65536 или килобайтах: 4K, 8K, 16K, 32K, 64K

Общие аргументы:
    <path to 1CD>
        путь к файлу базы данных (включая имя файла)
15 pvase
 
16.07.19
15:56
Т.е. только 2 значения аргумента format= 8.2.14 или 8.3.8