Перевод и последующее обновление старых конфигураций, разработанных во времена платформы «1С:Предприятие 8.2» (и даже 8.1), на современную платформу «1С:Предприятие 8.3» — задача, полная скрытых технических нюансов. Типичный сценарий: при попытке обновить очень старый релиз «Управление торговлей», редакция 10.3 (например, 10.3.10.4), запущенный на платформе 8.3, Конфигуратор либо молча закрывается без вывода ошибок, либо зависает на этапе реструктуризации базы данных.
В этой статье мы подробно разберем причины такого поведения системы, проанализируем технические ограничения файлового и клиент-серверного вариантов баз данных и выработаем пошаговый алгоритм безопасного и успешного обновления конфигурации.
Для начала выясним причины, по которым Конфигуратор завершает работу аварийно и без видимых сообщений. В процессе сравнения, объединения и последующей реструктуризации метаданных система выполняет огромный объем вычислений в оперативной памяти. Существует несколько основных факторов, приводящих к сбою:
1cv8.exe без возможности записать лог ошибки.8.3.13.1513. В сообществе разработчиков ветка 8.3.13 (и особенно данный релиз) признана одной из самых нестабильных с точки зрения утечек памяти при реструктуризации баз данных. Использование устаревших или нестабильных версий платформы кратно увеличивает вероятность «тихого» падения системы.1Cv8.1CD) размер одной таблицы не может превышать 4 ГБ. Во время реструктуризации таблиц Конфигуратор создает временные копии таблиц базы данных для переноса информации. Если ваша исходная файловая база имеет внушительный объем, этот лимит мгновенно превышается, что приводит к критическому сбою СУБД (Runtime Error) и аварийному закрытию программы.Теперь рассмотрим комплекс мер и правильную методику, которая позволит избежать подобных проблем и успешно обновить конфигурацию.
Если ваша база данных имеет большой размер и вы пытаетесь обновить её в файловом варианте, Конфигуратор с высокой долей вероятности продолжит вылетать. Наш опыт показывает, что перевод базы в клиент-серверный вариант (MS SQL Server, PostgreSQL) решает большинство проблем с нехваткой памяти и ограничениями таблиц. На SQL-сервере все тяжелые операции по изменению структуры таблиц берет на себя СУБД, снимая нагрузку с клиента.
Важное примечание по поводу «зависания» на 13% (или любом другом проценте): под управлением SQL-сервера процесс обновления базы данных может казаться зависшим (серое окно, отсутствие реакции интерфейса). На самом деле в этот момент СУБД выполняет сложнейшие SQL-транзакции: перестраивает индексы, создает новые колонки и переносит миллионы строк данных. Категорически запрещено принудительно завершать процесс Конфигуратора или службу сервера 1С в этот момент! Прерывание транзакции может привести к повреждению структуры базы данных или к экстремально долгому откату изменений СУБД (который может занять несколько часов).
Одна из ключевых ошибок разработчиков — попытка обновить древнюю конфигурацию сразу на новой платформе 8.3 с высоким режимом совместимости. Правильная стратегия выглядит совершенно иначе:
Обновляйте конфигурацию на старой платформе до тех пор, пока сама конфигурация не потребует новую платформу!
Рассмотрим этот алгоритм подробнее:
8.2.19.130)..cfu) или полные конфигурации (.cf).Версия 8.2.16).При переходе на платформу 8.3 критически важно отслеживать свойство конфигурации «Режим совместимости». Если вы резко отключите совместимость или установите слишком высокое значение (например, сразу перейдете с совместимости 8.2.13 на «Не использовать»), система выдаст множество ошибок:
ОбработкаЗаполнения), начнет работать некорректно.Повышайте режим совместимости в свойствах конфигурации постепенно, на каждом шаге выполняя запуск в режиме Предприятия, проверку работоспособности и стандартную процедуру «Тестирование и исправление» с включенными опциями проверки логической и ссылочной целостности.
Если Конфигуратор продолжает падать при пошаговом накатывании файлов обновлений .cfu, рекомендуется прибегнуть к методу «чистого» объединения через полный файл конфигурации .cf. Выполните следующие шаги:
.cf..cf (меню Конфигурация -> Сравнить, объединить с конфигурацией из файла...).Если вы вынуждены выполнять работы на платформе 8.3, забудьте про нестабильные релизы вроде 8.3.13.1513. Для проведения тяжелых процедур реструктуризации установите современную 64-битную платформу (например, актуальные релизы веток 8.3.21, 8.3.22 или выше).
64-разрядный Конфигуратор лишен проблемы ограничения адресного пространства в 2 ГБ и может задействовать всю свободную оперативную память сервера или персонального компьютера, что полностью исключает «тихие» вылеты по причине нехватки ресурсов (Out of memory).
Подводя итог, отметим: успешное обновление старых систем всегда строится на трех столпах — перенос на СУБД SQL для обхода ограничений файлового формата, использование стабильных 64-битных платформ и строгое соблюдение эволюционного пути обновления конфигурации без резких скачков версий совместимости.