Переход с конфигурации «Бухгалтерия государственного учреждения», редакция 1.0 (БГУ 1.0) на редакцию 2.0 (БГУ 2.0) — это сложный процесс, который часто сопровождается техническими трудностями. Одной из самых распространенных проблем является аномально долгая загрузка данных (например, когда база объемом всего 4 Мб загружается более 27 часов) или полное «зависание» системы в статусе «Не отвечает». Проанализируем основные причины этой проблемы и разберем пошаговые методы её решения.
Самая частая причина, по которой перенос данных «уходит в бесконечность», — это некорректное состояние Плана счетов в исходной базе БГУ 1.0. Алгоритмы переноса данных настроены на сопоставление счетов по их кодам и периодам действия. Если в системе присутствуют счета с одинаковыми кодами, у которых пересекаются даты действия, стандартная обработка загрузки может войти в бесконечный цикл, пытаясь определить актуальный счет.
Рассмотрим подробнее, как выявить такие дубли. Обычный просмотр списка счетов часто не дает результата, так как в 1С:Предприятии по умолчанию включена фильтрация по дате. Чтобы увидеть реальную картину, выполним следующие действия:
Важно: Наличие нескольких записей для одного счета само по себе не является ошибкой, если их периоды действия последовательны и не накладываются друг на друга. Ошибкой считается именно пересечение периодов или отсутствие даты окончания у старого счета при наличии нового.
Если визуальный осмотр Плана счетов не помог, необходимо выяснить, на каком именно объекте или фрагменте кода «зависает» программа. Для этого воспользуемся инструментом «Замер производительности» в конфигураторе БГУ 2.0.
Разберем алгоритм диагностики по шагам:
Проанализируем полученную таблицу. Если мы видим, что одна и та же строка кода (обычно связанная с поиском или сопоставлением объектов) выполнялась тысячи раз с огромным суммарным временем, мы нашли место зацикливания. Часто это функции в модулях ОбщегоНазначения или УниверсальныйОбменДаннымиXML.
Например, при отладке вы можете столкнуться со стеком вызовов, подобным этому:
{Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(12793)}: ПоследнийОбъектЗагрузки = ПрочитатьОбъект;
{Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(13132)}: ПроизвестиЧтениеДанных;
{ОбщийМодуль.ФоновыеЗаданияОбменДанными.Модуль(29)}: УниверсальнаяЗагрузкаДанных.ВыполнитьЗагрузку;
Если замер показывает бесконечное выполнение в районе функций сопоставления контрагентов или счетов, проблему нужно искать в данных этих справочников.
Даже небольшая по объему база может содержать огромное количество «логического мусора», который замедляет механизмы выгрузки-загрузки. Выясним, какие меры подготовки данных в БГУ 1.0 помогут ускорить процесс:
<Объект не найден>) заставляют правила обмена тратить время на попытки их интерпретации.Посмотрим на ситуацию с точки зрения системного администрирования. Процесс загрузки — это массовая запись тысяч объектов в базу данных. Мы можем оптимизировать этот процесс следующими способами:
1. Отключение полнотекстового поиска (ППС).
При каждой записи объекта система пытается обновить индекс полнотекстового поиска. В БГУ 2.0 перейдем в раздел Администрирование — Поддержка и обслуживание — Управление полнотекстовым поиском и отключим его. После завершения переноса индекс можно будет обновить и включить заново.
2. Режим работы антивируса.
Антивирусные программы могут сканировать каждый временный файл, создаваемый платформой 1С в процессе парсинга XML-файла обмена. Рекомендуется временно отключить антивирус или добавить папки временных файлов пользователя (%TEMP%) в исключения.
3. Использование актуальных правил обмена.
Убедимся, что мы используем последнюю версию обработки ПереносДанныхИзБГУ1.epf. Она обычно находится в подпапке Convert каталога установки шаблонов БГУ 2.0. Несоответствие версии правил версии конфигурации часто приводит к ошибкам компиляции, таким как:
Переменная не определена (ПространствоИменВерификацияПространстваИмен_Загрузка)
Хотя такие ошибки иногда обрабатываются платформой внутри блока Попытка...Исключение, они всё равно создают дополнительную нагрузку на систему и замедляют выполнение кода.
Подводя итог, можно сказать, что решение проблемы долгой загрузки в БГУ 2.0 всегда начинается с гигиены данных в исходной базе. Основные усилия должны быть направлены на:
Только после приведения исходных данных в порядок процесс переноса станет предсказуемым и быстрым, занимая минуты вместо десятков часов.