Переход с устаревшей конфигурации «Зарплата и Кадры 7.7» на современную «Зарплата и Управление Персоналом 3.1» — это всегда сложный технологический процесс. Одной из самых неприятных проблем, с которой сталкиваются специалисты, является аварийное завершение работы программы 1С 7.7 (APPCRASH) с кодом исключения c00000fd в модуле Type32.dll. Данная ошибка указывает на переполнение стека (Stack Overflow) и чаще всего возникает на этапе выгрузки кадровых данных (этап 4 в стандартном помощнике).
В этой статье мы подробно разберем, почему возникает эта ошибка, как проанализировать проблемные данные в информационной базе и, самое главное, как обойти этот сбой, используя альтернативные методы выгрузки.
Прежде чем переходить к активным действиям, нам необходимо понять природу проблемы. Код ошибки c00000fd означает, что движок 1С 7.7 столкнулся с бесконечной рекурсией или слишком глубокой вложенностью данных. Проанализируем типичные ситуации в контексте ЗиК 7.7:
Подразделения или Сотрудники (если включена иерархия) один из элементов может быть назначен родителем самому себе или своему дочернему элементу. Стандартный алгоритм обхода дерева при выгрузке попадает в бесконечный цикл и «съедает» всю выделенную память стека.Type32.dll, если тот пытается выполнить код из неразрешенных сегментов памяти.Проанализируем состояние информационной базы перед выгрузкой. Попробуем выполнить стандартные процедуры обслуживания:
Сотрудники и Подразделения. Если программа «вылетает» на конкретном элементе при простом переборе — мы нашли виновника.Если стандартная выгрузка через помощник всё равно прерывается на 4-м этапе, воспользуемся проверенным методом разделения процесса выгрузки. Нам потребуется модифицировать стандартную обработку и использовать универсальный выгрузчик.
Рассмотрим алгоритм действий по шагам:
1. Модификация помощника выгрузки. Нам нужно заставить стандартный ПомощникВыгрузкиV7.ert пропустить шаг формирования кадровых данных, так как именно он вызывает APPCRASH. Откроем обработку в конфигураторе и найдем цикл или условие, отвечающее за перебор этапов. Нам нужно добавить условие, которое будет игнорировать Этап = 4.
Пример логики модификации в коде:
// В процедуре выполнения выгрузки найдем место перехода по этапам
Для НомерЭтапа = 1 По 10 Цикл
Если НомерЭтапа = 4 Тогда
Сообщить("Этап 4 (кадровые данные) пропускается для предотвращения ошибки Type32.dll");
Продолжить;
КонецЕсли;
// ... стандартный вызов выполнения этапа
КонецЦикла;
2. Выгрузка кадровых данных через универсальную обработку. Теперь, когда основная часть данных выгружена (остатки, расчеты, справочники), нам нужно отдельно выгрузить кадровые данные. Для этого используем обработку V77Exp.ert (Универсальный обмен данными в формате XML).
Где взять правила выгрузки? Проанализируем конфигурацию ЗУП 3.1. В составе макетов конфигурации ЗУП обычно присутствует файл правил (например, с именем ZiK_ZUP3). Сохраним этот макет как XML-файл на диск.
3. Настройка V77Exp.ert. Запустим обработку в ЗиК 7.7, укажем сохраненный файл правил и выберем только те объекты, которые относятся к кадровому учету (Сотрудники, Кадровые перемещения и т.д.).
При использовании V77Exp.ert важно правильно настроить параметры периода. Выясним, какую дату указывать в качестве окончания периода. Если мы планируем начать учет в ЗУП с 1 января 2020 года, то выгрузку из 7.7 следует делать по 31.12.2019.
Обратим внимание на следующие настройки в параметрах выгрузки:
Если даже раздельная выгрузка через V77Exp.ert приводит к падению модуля Type32.dll, проанализируем настройки операционной системы. Одной из эффективных мер является добавление 1С 7.7 в исключения DEP.
Разберем, как это сделать:
1cv7.exe.После этой манипуляции система позволит приложению более свободно работать с выделенной памятью, что часто решает проблему APPCRASH на больших объемах данных.
После того как мы получили файлы выгрузки (один основной без 4-го этапа и второй — с кадровыми данными через универсальную обработку), их нужно загрузить в ЗУП 3.1.
Рассмотрим важный нюанс: при загрузке в ЗУП 3.1 через помощник используется файл ИнструкцияЗагрузки.txt. Если мы разделили выгрузку на несколько файлов, нам может потребоваться отредактировать этот текстовый файл, добавив в него информацию о дополнительном XML-файле, либо загрузить второй файл вручную через обработку «Загрузка данных из XML» в ЗУП 3.1.
Важный совет: Если база в 7.7 копилась десятилетиями и содержит тысячи уволенных сотрудников, проанализируем целесообразность «полного переноса». В большинстве случаев «краткий перенос» (только остатки и данные для среднего заработка) работает гораздо стабильнее и не вызывает ошибок в Type32.dll, так как объем обрабатываемой кадровой истории минимален.
Таким образом, комбинируя методы очистки данных, технической настройки ОС и разделения процессов выгрузки, мы можем успешно завершить переход на ЗУП 3.1 даже из самых проблемных баз ЗиК 7.7.