При переносе данных и переходе с платформы 1С:Предприятие 7.7 на современную версию «восьмерки» специалисты нередко сталкиваются со сбоями в типовой обработке V77Exp.ert. Процесс может прерываться ошибкой «Ошибка исполнения обработчика: ПВД_ПередОбработкойПравил ... Деление на 0» либо намертво зависать на этапе завершения выгрузки без формирования итогового файла XML. Разберем по шагам причины такого поведения платформы и детально рассмотрим варианты решения обеих проблем.
Проанализируем ситуацию, когда обработка прерывается сообщениями о делении на ноль при выгрузке остатков по материальным счетам (например, 231, 234, 238, 239) или денежным счетам (331):
BBU77_81.xml) при выгрузке остатков по счетам материальных ценностей алгоритм вычисляет учетную цену по формуле Сумма / Количество. Если в информационной базе 7.7 по счету числится суммовой остаток при нулевом или отрицательном количестве, возникает исключение «Деление на 0». В стандартной свернутой оборотно-сальдовой ведомости такая ошибка может не бросаться в глаза.Для устранения этой ошибки применим два подхода: наведение порядка в учетных данных либо корректировку самих правил конвертации.
Во-первых, разберем поиск расхождений в данных базы 1С 7.7:
Номенклатура, МестаХранения, КЕКВ.Во-вторых, если исправить учетные данные оперативно невозможно, внесем безопасную проверку в файл правил конвертации BBU77_81.xml. Откроем правила в конфигурации «Конвертация данных» либо в текстовом редакторе, найдем проблемный обработчик ПВД и заменим расчет цены на безопасную конструкцию:
Если Количество <> 0 Тогда
Цена = Сумма / Количество;
Иначе
Цена = 0;
КонецЕсли;
Выясним причину, по которой 1С 7.7 зависает после обработки большого количества объектов (например, свыше 70 000 объектов при размере базы более 1 Гб), а файл XML не формируется:
1cv7s.exe) является 32-разрядным приложением. Стандартное адресное пространство процесса ограничено 2 ГБ. С учетом системных библиотек и фрагментации памяти лимит исчерпывается уже при приближении к 1,2–1,5 ГБ.v7plus.dll: По умолчанию выгрузка в XML через компоненту v7plus.dll строит дерево документа целиком в оперативной памяти с использованием модели DOM парсера MSXML. Запись на диск происходит лишь на самом последнем этапе. Когда количество объектов велико, памяти на финализацию документа не хватает, система впадает в постоянный свопинг (обращение к файлу подкачки), а процесс зависает навсегда.Самый надежный и простой способ обойти ограничение памяти — разделить процесс на несколько независимых этапов. Разберем порядок действий:
V77Exp.ert.Контрагенты, Номенклатура, классификаторы). Выгружаем эти данные в первый файл (например, Sprav.xml).Универсальный обмен данными в формате XML и загружаем полученные файлы строго по очереди: сначала справочники, затем остатки. Объекты сопоставятся корректно по внутренним идентификаторам и кодам.Если требуется выгрузить базу единым файлом без дробления, снимем системное ограничение 32-разрядных процессов на 64-битной версии Windows:
1cv7s.exe (или 1cv7.exe), расположенного в каталоге BIN платформы.editbin из пакета разработчика Visual Studio или любой сторонней утилиты (LAA Patcher) установим флаг IMAGE_FILE_LARGE_ADDRESS_AWARE:
editbin /LARGEADDRESSAWARE 1cv7s.exe
Рассмотрим дополнительные системные настройки, позволяющие ускорить обработку больших массивов информации:
TEMP и TMP) на локальный SSD-диск. В свойствах ярлыка запуска 1С можно явно указать путь к рабочему каталогу пользователя.v7plus.dll в каталоге базы и в папке BIN обновлен до последнего стабильного релиза (не ниже 7.70.0.14), и в операционной системе зарегистрированы актуальные библиотеки msxml4.dll или msxml6.dll.