Обновление конфигурации «1С:Управление производственным предприятием, ред. 1.3» в период перехода на новые ставки НДС и изменения в подсистемах ЭДО/ЕГАИС стало серьезным испытанием для многих технических специалистов. Основная сложность заключается в том, что стандартные механизмы обновления информационной базы (ОИБ) на релизах ветки 113.x содержат критические недоработки в обработчиках данных. В этой статье мы подробно разберем, как преодолеть наиболее часто встречающиеся ошибки, включая проблемы со справочником присоединенных файлов и ошибки интеграции с ЕГАИС.
Первая и самая массовая проблема возникает при переходе с релиза 112.5 на 113.2. Процесс обновления прерывается сообщением: {Справочник.ПакетЭДПрисоединенныеФайлы.МодульМенеджера(57)}: Индекс находится за границами массива. Проанализируем ситуацию: эта ошибка связана с тем, что в новой версии конфигурации меняется структура хранения данных электронного документооборота. Система пытается перенести сведения из старых таблиц в новые, но при отсутствии записей в регистре сведений ПрисоединенныеФайлы для конкретного элемента справочника происходит обращение к нулевому индексу пустого массива.
Рассмотрим основной способ решения этой проблемы путем корректировки кода конфигурации. Нам необходимо временно внести изменения в модуль менеджера справочника ПакетЭДПрисоединенныеФайлы. Найдем процедуру ПеренестиДанныеПрисоединенныхФайловПакетовЭкспорт и внесем правки, предотвращающие обращение к несуществующему элементу массива.
Разберем по шагам алгоритм исправления в коде:
// В модуле менеджера справочника ПакетЭДПрисоединенныеФайлы
// Находим фрагмент кода, отвечающий за подмену ссылки
НаборЗаписей = РегистрыСведений.ПрисоединенныеФайлы.СоздатьНаборЗаписей;
НаборЗаписей.Отбор.ПрисоединенныйФайл.Установить(Выборка.Ссылка);
НаборЗаписей.Прочитать();
Если НаборЗаписей.Количество() > 0 Тогда
// Вместо прямого обращения НаборЗаписей[0]
// необходимо убедиться, что записи существуют
НаборЗаписей.Отбор.ПрисоединенныйФайл.Установить(НовыйОбъект.Ссылка);
// Удалите или закомментируйте следующую строку, если она вызывает ошибку:
// НаборЗаписей[0].ПрисоединенныйФайл = НовыйОбъект.Ссылка;
ОбновлениеИнформационнойБазы.ЗаписатьДанные(НаборЗаписей);
// ... дальнейшая очистка старых данных
КонецЕсли;
Важно понимать: если вы закомментируете данную строку, данные в архиве ЭДО могут отображаться некорректно. Однако это позволит завершить обновление базы. После успешного обновления рекомендуется перейти на релиз 1.3.114.2, где фирма «1С» официально признала ошибку 00-00190106 и исправила алгоритм обработки пустых записей.
Вторая распространенная проблема возникает при первом запуске предприятия после обновления. Ошибка выглядит так: {ОбщийМодуль.ОбновлениеИнформационнойБазыЕГАИС.Модуль(1057)}: Ошибка при вызове метода контекста (НайтиЗадания)... Попытка передачи мутабельного значения. Выясним причину: это происходит из-за попытки передать массив объектов, которые платформа считает изменяемыми, между сервером и клиентом в контексте Библиотеки интеграции ЕГАИС.
Рассмотрим два варианта решения этой задачи:
Версии подсистем.БиблиотекаИнтеграцииЕГАИС.1.1.0.10) на более актуальное, например, 1.1.1.0.УстановитьПризнакИспользованияОбработкиОтветов вызываться не будет.ОбновлениеИнформационнойБазыЕГАИС. В процедуре УстановитьПризнакИспользованияОбработкиОтветов можно временно закомментировать тело функции. Это позволит системе «проскочить» проблемный участок при первом старте.Часто при попытке обновить УПП через конфигуратор (особенно на платформе 8.2.19.103) происходит аварийное завершение работы с ошибкой Runtime Error. Это связано с тем, что конфигурация УПП крайне тяжеловесна, а 32-битный процесс конфигуратора упирается в лимит выделяемой оперативной памяти (2 Гб).
Посмотрим, какие профилактические меры помогут нам успешно завершить процесс сравнения и объединения:
Во-первых, крайне рекомендуется выполнять обновление на 64-битной версии платформы 1С:Предприятие 8.3. Даже если ваша база работает в режиме совместимости с 8.2, использование платформы 8.3 позволяет процессу конфигуратора использовать больше памяти, что критично для УПП.
Во-вторых, используем метод «обновления через файловую базу». Разберем этот алгоритм подробнее:
.dt и разворачиваем ее локально в файловом варианте..cf файл..cf в основную рабочую серверную базу через «Сравнить и объединить» или «Загрузить конфигурацию из файла».В-третьих, обязательно почистим кэш конфигуратора и сервера. Для этого можно использовать параметры запуска /ClearCache или вручную удалить содержимое папок в профиле пользователя %AppData%\Local\1C\1Cv8.
Проанализируем технические требования последних релизов УПП. Фирма «1С» указывает, что для корректной работы конфигурации требуется версия платформы не ниже 8.2.19.130. Однако при работе на операционных системах Windows 10 или Windows Server 2016/2019 использование ветки 8.2 официально не рекомендуется и может приводить к непредсказуемым «дампам» памяти.
Если руководитель откладывает переход на 8.3, постараемся аргументировать это тем, что механизмы реструктуризации таблиц (особенно в части новых объектов НДС) оптимизированы именно под платформу 8.3. На платформе 8.2 база может «вылетать» при реструктуризации, даже если справочники пусты, просто из-за объема метаданных.
Рассмотрим идеальную последовательность действий для безопасного обновления:
Тестирование и исправление.ПакетЭДПрисоединенныеФайлы. Если обновление падает, применяем патч кода в модуле менеджера, описанный выше.Версии подсистем.Соблюдение этих инструкций позволит вам избежать потери данных в архивах электронных документов и обеспечит стабильную работу системы после перехода на новые версии конфигурации.