← На главную
Обновление старых, значительно измененных конфигураций, таких как «1С:Управление торговлей 10.3», при переходе через десятки релизов — одна из самых сложных задач для специалиста 1С. Простой «накат» последней версии на рабочую базу с доработками практически всегда приводит к ошибкам. Рассмотрим, почему так происходит, какие стратегии обновления существуют и как исправлять типичные проблемы, возникающие в процессе.
Почему «прыжок» через много версий вызывает ошибки?
Ключевая проблема заключается в механизме обновления платформы 1С. При переходе с одной версии на другую разработчики конфигурации часто встраивают специальные процедуры — обработчики обновления. Эти обработчики запускаются автоматически при первом старте программы после обновления и выполняют критически важные действия с данными:
- Изменяют структуру регистров.
- Переносят данные из устаревших объектов в новые.
- Заполняют новые реквизиты значениями по умолчанию или на основе существующих данных.
- Выполняют другие служебные операции для адаптации данных к новой логике.
Когда вы обновляете конфигурацию, перепрыгивая сразу через множество релизов (например, с 10.3.29 на 10.3.72), система не может последовательно выполнить все промежуточные обработчики. В результате данные в базе остаются в старом формате, а код конфигурации уже новый. Это несоответствие приводит к многочисленным ошибкам, как при запуске, так и в процессе работы.
Стратегии обновления: от простого к сложному
В зависимости от сложности доработок и имеющегося времени можно выбрать один из нескольких подходов. Проанализируем основные из них.
Стратегия 1: Последовательное обновление с доработками (Классический подход)
Это самый надежный, хотя и самый трудоемкий метод. Его суть заключается в том, чтобы не перепрыгивать через версии, а обновлять вашу рабочую конфигурацию (со всеми доработками) поэтапно.
- Создайте полную копию рабочей базы. Все дальнейшие действия производятся только на ней.
- Определите цепочку обновлений. Найдите все файлы обновлений (
.cfu) от вашей текущей версии до финальной.
- Начинайте обновление. Запускайте обновление на следующий по порядку релиз. На каждом шаге используйте режим «Сравнение, объединение с конфигурацией из файла».
- Разрешайте конфликты. В процессе объединения вам придется аккуратно переносить свои доработки, сохраняя при этом изменения типовой конфигурации. Если где-то ваш код конфликтует с кодом поставщика, нужно анализировать и адаптировать его.
- Запускайте и тестируйте. После каждого шага обновления запускайте базу в режиме «1С:Предприятие», чтобы отработали штатные обработчики обновления для данного релиза.
- Повторяйте до победного. Повторяйте шаги 3-5, пока не дойдете до самого последнего релиза.
Преимущества: Максимальная надежность. Все обработчики обновления данных гарантированно отработают в нужной последовательности.
Недостатки: Очень долго. Если нужно пройти через 30-40 релизов, процесс может занять несколько дней или даже недель.
Стратегия 2: Обновление типовой базы с последующим накатом доработок (Комбинированный подход)
Этот метод позволяет разделить процесс обновления данных и процесс переноса доработок.
- Подготовьте целевую конфигурацию. Возьмите чистую, последнюю типовую конфигурацию. С помощью сравнения и объединения перенесите в нее все ваши доработки из старой рабочей базы. Сохраните результат в отдельный файл
.cf. Это будет ваш «целевой» файл конфигурации.
- Обновите данные. Возьмите копию рабочей базы и обновите ее последовательно до последней версии, игнорируя на каждом шаге сохранение своих доработок. Ваша цель — получить базу с актуальной структурой и корректно обработанными данными, пусть даже старые доработки при этом сломаются или исчезнут.
- Объедините результат. Теперь у вас есть база данных с актуализированными данными и файл
.cf с актуализированным кодом. Загрузите (через «Конфигурация» -> «Загрузить конфигурацию из файла») ваш целевой .cf в базу, полученную на шаге 2.
Преимущества: Быстрее, чем первый способ, так как не нужно на каждом шаге скрупулезно сливать доработки.
Недостатки: Есть риск, что после финального наката доработок что-то не будет работать с обновленными данными. Требуется тщательное тестирование.
Решение типичных ошибок при обновлении
В процессе обновления вы почти наверняка столкнетесь с ошибками. Рассмотрим самые частые из них.
Ошибка: «Слишком много фактических параметров» или «Недостаточно фактических параметров»
Это самая распространенная проблема. Она возникает, когда в вашем старом коде (или даже в старом обработчике обновления, который пытается запуститься) вызывается процедура или функция, а в новой версии конфигурации у этой процедуры изменился набор параметров (добавился новый или удалился старый).
Алгоритм исправления:
- Запустите обновление в режиме отладки. В настройках отладчика включите опцию «Останавливаться по ошибке».
- Когда выполнение прервется на ошибке, изучите стек вызовов, чтобы понять, откуда была вызвана проблемная процедура.
- Перейдите к строке кода с вызовом. Установите на нее курсор и нажмите
F12 (или «Перейти к определению» в контекстном меню), чтобы посмотреть, как теперь выглядит объявление этой процедуры в новой конфигурации.
- Сравните параметры в вызове и в определении. Вы увидите, какого параметра не хватает или какой является лишним.
- Внесите исправление прямо в коде. Чаще всего требуется добавить в конец вызова недостающий параметр, например
Неопределено, Ложь или Истина, если он не является обязательным.
- Продолжите выполнение (
F5) и повторяйте процесс для следующих ошибок.
Ошибка: «Процедура или функция с указанным именем не определена»
Эта ошибка означает, что в коде происходит вызов процедуры, которую в новых релизах удалили или переименовали. Здесь нужно действовать аккуратно.
- Найдите место вызова с помощью отладчика.
- Проанализируйте, что делала эта процедура. Часто по ее названию можно понять назначение (например,
УстановитьПризнакВыгрузкиПродажНемаркируемойПродукции).
- Если вы понимаете, что эта функциональность устарела и ее вызов больше не является критичным для процесса обновления, можно просто закомментировать строку с вызовом.
- Если же логика важна, придется искать в новой типовой конфигурации аналог этой процедуры или переписывать код, чтобы достичь того же результата новыми средствами.
Важно: Комментирование кода — это быстрый, но потенциально опасный путь. Используйте его, только если уверены, что не нарушаете важную бизнес-логику.
Обязательные шаги после завершения обновления
Когда конфигурация наконец обновилась и запускается без ошибок, работа еще не закончена. Необходимо выполнить несколько критически важных проверок.
-
Обновление конфигурации поставщика. Это обязательный шаг! После обновления основной конфигурации, конфигурация поставщика все еще остается старой. Чтобы это исправить, снова зайдите в режим «Конфигурация» -> «Поддержка» -> «Обновить конфигурацию». Выберите тот же самый финальный файл
.cf. Система напишет, что основная конфигурация и конфигурация базы данных не отличаются, и предложит обновить только конфигурацию поставщика. Согласитесь. Если этого не сделать, при следующем штатном обновлении у вас возникнут огромные проблемы.
-
Тестирование и исправление (ТиИ). Запустите утилиту «Тестирование и исправление информационной базы» (в режиме Конфигуратора) со всеми включенными проверками. Это поможет выявить возможные проблемы со ссылочной целостностью, возникшие в процессе обновления.
-
Перепроведение документов. Обязательно перепроведите документы за последний значимый период (месяц, квартал). Это позволит убедиться, что все новые механизмы (например, учет прослеживаемости, НДС, расчет себестоимости) корректно работают с вашими старыми данными.
-
Проверка прав доступа. В новых релизах появляются новые объекты метаданных и, соответственно, новые роли и права. Если вы сильно изменяли типовые роли, необходимо заново проанализировать их и добавить пользователям доступ к новым объектам, иначе они не смогут работать.
-
Финальное тестирование пользователями. Перед запуском в промышленную эксплуатацию дайте ключевым пользователям протестировать обновленную базу. Они лучше всего знают свои участки работы и быстро найдут мелкие недочеты (не перенесенные колонки в отчетах, пропавшие кнопки на формах), которые вы могли упустить.
Обновление старой и сильно измененной конфигурации — это марафон, а не спринт. Выбирайте стратегию, запасайтесь терпением, тщательно тестируйте каждый шаг, и результат обязательно будет успешным.