Проверка базы 1С перед переносом на MS SQL Server: опасные даты и широкие индексы

14.09.26

База данных - Инструменты администратора БД

Обработка смотрит базу до переноса на MS SQL Server и отвечает на шесть вопросов человеческим языком: что сломается, почему и что с этим делать. Два тихих отказа, которые она ловит: при смещении дат 0 всё раньше 1753 года схлопывается в одну дату, а индексы с ключом шире предела MS SQL создаются без ошибки и падают месяцы спустя, на первой длинной записи. Для каждого широкого ключа показывает виновника по байтам: реквизит Идентификатор даёт 2058 байт из 2167 - видно, что укорачивать. Работает только средствами платформы, к СУБД не подключается, в базу ничего не пишет. Проверена на 8.3.20 и 8.3.27, на MS SQL и на PostgreSQL.

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
Проверка базы перед переносом на MS SQL Server
.epf 23,21Kb ver:1.0
0 6 200 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Вы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

Обработка смотрит базу до переноса на MS SQL Server и отвечает на шесть вопросов человеческим языком: что сломается, почему и что с этим делать. Работает только средствами платформы, к СУБД не подключается, в базу ничего не пишет.

Зачем она нужна

Перенос базы между СУБД опасен не тем, что падает. Он опасен тем, что не падает.

Штатная репликация ibcmd infobase replicate завершается кодом 0 и словами "успешно завершена". Количество строк до и после совпадает до единицы. Стандартная приёмка "строки сошлись, значит перевезли" такой прогон проходит насквозь. А внутри строк значения уже другие.

Два механизма, которые это делают, и оба тихие:

  • Смещение дат. Если в базе-приёмнике указано смещение 0, все даты раньше 1753 года платформа кладёт в 01.01.1753. Пустая дата 1С и соседняя с ней становятся одной и той же. ЗначениеЗаполнено() после этого возвращает истину там, где обязана вернуть ложь.
  • Ширина ключа индекса. У MS SQL предел ключа кластерного индекса 900 байт, некластерного 1700 начиная с версии 2016. У PostgreSQL около 2704. Индекс, который в источнике живёт спокойно, на приёмнике создаётся с предупреждением, пока фактические данные в предел влезают, и падает позже, на первой длинной записи.

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

Как читается отчёт

Не таблица с кодами проверок, а дерево из трёх колонок:

Вопрос Вердикт Решение
человеческим языком, без терминов проверки НОРМА, ВНИМАНИЕ, КРИТИЧНО, ИНФО что будет, если перенести как есть, и что именно делать

Шесть вопросов первого уровня:

  1. С какими параметрами проверяли
  2. Переживут ли даты перенос на MS SQL Server?
  3. Создадутся ли индексы ваших объектов на приёмнике?
  4. Создадутся ли индексы служебных таблиц платформы?
  5. Хватит ли выбранной версии MS SQL Server?
  6. Чего эта проверка НЕ видит

Внутри каждого - объекты, к которым вердикт относится. Раскрыл строку и видишь имя объекта как в конфигураторе.

Так выглядит прогон на типовой базе: параметры приёмника, кнопка, дерево с вердиктами.

Прогон проверки: заполняется дерево вердиктов

Что даёт нового по сравнению со "у вас проблема"

Главное отличие от списка проблемных индексов - разбор ключа по байтам с виновником. Обработка не просто говорит, что ключ широкий, она показывает, из чего он набран:

РегистрСведений.ЛогированиеПакетовОбмена     2167 байт     КРИТИЧНО
Главный вклад: Идентификатор - 2058 байт из 2167.
Состав ключа: Идентификатор 2058 + ИмяМетода 100 + НомерВызова 9.

Дальше понятно, что делать: укоротить строковый реквизит "Идентификатор" или снять с него индексирование. Без разбора человек видит число 2167 и не знает, откуда оно взялось.

Колонки одного составного реквизита схлопываются в одно поле, одинаковые индексы одного объекта - в одну строку со счётчиком. В отчёте лежит то, что можно чинить, а не дамп структуры хранения.

Проверка дат: что именно она ищет

Обход всех таблиц с данными - основных, табличных частей и констант. В каждой находятся поля типа Дата, включая те, у которых нет метаданных: дата документа и период регистра. По ним строится один запрос на таблицу целиком.

В отчёт попадает поимённый список: объект, реквизит, сколько значений пострадает и минимальная дата. Пустая дата подписана явно - 01.01.0001 (пустая дата 1С), чтобы её не путали с потерянным значением.

У проверки есть бюджет времени в минутах. По его исчерпании обход прекращается, а число недосмотренных таблиц попадает в отчёт отдельной строкой: неполный результат назван неполным, а не выдан за чистую базу.

Разные лечения разведены намеренно

Индексы ваших объектов и индексы служебных таблиц платформы стоят в разных узлах, потому что чинятся по-разному:

  • свои объекты - укоротить строковый реквизит в ключе или снять индексирование;
  • служебные таблицы (хранилища настроек, тела сообщений сервисов интеграции) - руками не чинятся вовсе, их создаёт платформа. Лечится обновлением платформы до переноса либо выбором приёмника посвежее.

Отдельный узел считает, что изменится от смены версии приёмника: сколько отказов снимет переход с 2014 на 2016 и сколько останется в любом случае.

На чём проверялась

Платформа Конфигурация СУБД
8.3.20.2290 УПП MS SQL Server
8.3.27.1606 Управление торговлей 11.5 MS SQL Server
8.3.27.1606 без конфигурации PostgreSQL 17

Расчёт ширины ключа сверялся с самой СУБД: по sys.index_columns и sys.columns на базе, доступной и платформой, и напрямую по SQL. Совпало точно - 59 ключей шире 900 байт против 59, 26 шире 1700 против 26, контрольные индексы на 1152, 2107 и 1024 байта до байта.

На PostgreSQL сверка шла тем же способом: состав ключа хранилища настроек снят запросом к pg_index до прогона, ожидалось 546 байт, обработка показала 546.

Чего обработка не делает

  • не подключается к СУБД и не выполняет SQL;
  • не генерирует скрипты для администратора;
  • ничего не записывает в информационную базу;
  • не запускает сам перенос - ibcmd остаётся за администратором;
  • не делает сверку после переноса, смотрит только источник.

Чего она не видит, обработка говорит про себя сама, отдельным узлом отчёта: тип индекса платформа не сообщает, физический размер строк и TOAST PostgreSQL через платформенный API не виден, поведение ключей шире 1700 байт взято из документации, а не из замера.

Что нужно для запуска

  • платформа 8.3.20 и новее, управляемые формы;
  • права на открытие внешних обработок и на чтение данных;
  • любая конфигурация - обработка работает по структуре хранения;
  • любая текущая СУБД: расчёт идёт по метаданным и отвечает на вопрос, что получится в приёмнике.

Как пользоваться

  1. Открыть на базе-источнике, то есть на той, которую собираетесь переносить.
  2. Указать смещение дат, которое поставите базе-приёмнику, и версию MS SQL Server.
  3. Нажать "Проверить базу".
  4. Раскрыть строки с вердиктом КРИТИЧНО и ВНИМАНИЕ - внутри объекты и разбор.
  5. Кнопка "Частые вопросы" открывает справку на девять вопросов, интернет для неё не нужен.

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

Проверено на следующих конфигурациях и релизах:

  • Управление торговлей, редакция 11, релизы 11.5.22.67

Вступайте в нашу телеграмм-группу Инфостарт

перенос базы 1С на MS SQL Server миграция с PostgreSQL ibcmd infobase replicate смещение дат длина ключа индекса проверка базы перед миграцией

См. также

Инструментарий разработчика Чистка данных Свертка базы Инструменты администратора БД Системный администратор Программист Руководитель проекта 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Россия Платные (руб)

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP, УНФ, КА и т.д.). Поддерживаются серверные и файловые базы, управляемые и обычные формы, интерфейс 8.5. Может выполнять свертку одновременно в несколько потоков, а также без непосредственного участия пользователя. Решение в Реестре отечественного ПО.

24900 руб.

20.08.2024    78829    399    171    

339

Инструменты администратора БД Инструментарий разработчика Роли и права Программист 1С:Предприятие 8 1C:Бухгалтерия Россия Платные (руб)

Расширение позволяет без изменения кода конфигурации выполнять проверки при вводе данных, скрывать от пользователя недоступные ему данные, выполнять код в обработчиках. Не изменяет данные конфигурации, легко устанавливается практически на любую конфигурацию на управляемых формах.

17000 руб.

10.11.2023    27653    102    46    

107

Разработка Инструменты администратора БД Администрирование веб-серверов Администрирование Программист 1C:ERP Платные (руб)

Это специализированное решение для глубокого анализа и мониторинга серверов и баз данных 1С. Продукт позволяет выявлять причины замедлений, блокировок и ошибок, объединяя данные технологического журнала, СУБД и оборудования в единой интерактивной системе.

90000 руб.

13.05.2026    1848    2    0    

5

Закрытие периода Инструменты администратора БД Корректировка данных Бухгалтер Пользователь 1С:Предприятие 8 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Расширение «Оперативное проведение» в 4 раза уменьшает время проведения документов и закрытия месяца. Является комплексным решением проблем 62 и 60 счетов. Оптимизирует проведение при включенной функциональной опции «Раздельный учет НДС». Используется в более 10 организациях уже 2 года. Совместимо с конфигурацией Бухгалтерия 3.0 (+КОРП).

14640 руб.

29.04.2020    52025    142    164    

96

SALE! 10%

Инструменты администратора БД Роли и права Системный администратор Программист Пользователь 1С 8.3 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Документооборот 1С:Зарплата и кадры государственного учреждения 3 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)

Роли… Вы тратите много времени и сил на подбор ролей среди около 2400 в ERP или 1500 в Рознице 2, пытаясь понять какими правами они обладают? Вы все время смотрите права в конфигураторе или отчетах чтоб создать нормальные профили доступа? Вы хотите наглядно видеть какие права дает профиль и редактировать все в простом виде? А может хотите просто указать подсистему и дать права на просмотр и добавление на объекты и не лезть в дебри прав и чтоб обработка сама подобрала нужные роли? Все это теперь стало возможно! Обновление от 17.04.2026, версия 1.4.1, работает в 1С:ФРЕШ!

23180 20862 руб.

06.12.2023    24414    83    14    

116

Информационная безопасность Инструменты администратора БД Инструментарий разработчика Учет документов Системный администратор Программист Бизнес-аналитик Бухгалтер Пользователь Руководитель проекта 1С 8.3 1С 8.5 Розничная и сетевая торговля (FMCG) Платные (руб)

Контроль ввода данных в 1С: проверка заполнения реквизитов, обязательные поля, контроль перед записью и проведением, запрет проведения документа. Позволяет настраивать любые проверки данных в 1С 8.3/8.5 от обязательных полей до сложных условий – без открытия конфигуратора и написания кода. Готовое расширение, которое подключается и работает сразу.

6000 руб.

15.04.2026    3503    8    0    

22
Для отправки сообщения требуется регистрация/авторизация