Переход с комплексной системы 1С:Управление производственным предприятием (УПП), ред. 1.3 на флагманское решение 1С:ERP Управление предприятием — это масштабный проект, с которым рано или поздно сталкивается любое крупное производство. Фирма «1С» предоставляет типовой инструмент для переноса остатков и справочной информации. Однако на практике специалисты регулярно сталкиваются с ситуацией, когда стандартный перенос прерывается критическими ошибками на самых первых этапах загрузки данных.
В этой статье мы подробно разберем одну из таких классических ошибок, возникающую при переносе кадровых документов (в частности, отпусков по уходу за ребенком), выясним техническую причину сбоя и рассмотрим два практических способа ее устранения.
---
В процессе загрузки данных в базу 1С:ERP система аварийно завершает работу, выдавая следующее сообщение об ошибке:
Объект = Отпуск по уходу за ребенком от 05.12.2017
Обработчик = ПослеЗагрузкиОбъекта
ОписаниеОшибки = Поле объекта не обнаружено (НачалоПериода)
ПозицияМодуля = ОбщийМодуль.УчетПособийСоциальногоСтрахованияРасширенный.Модуль(53)
Ошибка при загрузке данных: {Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(1283)}: Ошибка в обработчике события ПослеЗагрузкиОбъекта
Проанализируем архитектуру конфигураций. Дело в том, что зарплатный блок в 1С:УПП базируется на логике устаревшей конфигурации 1С:Зарплата и Управление Персоналом (ЗУП) редакции 2.5, в то время как блок расчета зарплаты и кадров в 1С:ERP построен на современной редакции ЗУП 3.1. Методология учета пособий, расчета среднего заработка для ФСС и структуры хранения кадровых данных в этих редакциях кардинально различаются.
Для корректного сопоставления данных в правилах обмена (написанных в программном продукте «1С:Конвертация данных 2.0») в обработчиках событий прописываются вызовы различных функций конфигурации-приемника (1С:ERP). В последних релизах ERP разработчики фирмы «1С» провели рефакторинг общего модуля УчетПособийСоциальногоСтрахованияРасширенный.
Функция, отвечающая за сбор сведений для расчета пособий, которая ранее называлась:
УчетПособийСоциальногоСтрахованияРасширенный.ДанныеДляРасчетаСреднегоЗаработкаФСССотрудника,
была переименована в:
УчетПособийСоциальногоСтрахованияРасширенный.ДанныеДляРасчетаСреднегоЗаработкаФСССотрудникаСлужебный.
Прежняя функция либо была удалена, либо стала выполнять совершенно иные задачи, возвращая структуру данных, в которой отсутствует ожидаемое правилами обмена свойство НачалоПериода. Типовые правила обмена, поставляемые с ERP, попросту не успели обновить вслед за изменением кода самой конфигурации. В результате при попытке загрузить первый же документ отпуска по уходу за ребенком система пытается обратиться к старому методу, не находит нужного свойства и прерывает загрузку всей базы.
---
Если вам необходимо оперативно протестировать перенос данных или вы выполняете финальный перенос разово, редактировать правила обмена в специализированных программах не обязательно. Достаточно внести изменения в сам файл выгрузки. Разберем этот процесс по шагам:
УППУП_ZUP...xml)..xml файл с помощью любого производительного текстового редактора, способного работать с большими файлами без зависаний (например, Notepad++, VS Code или Sublime Text). Использовать стандартный Блокнот Windows не рекомендуется, так как файл данных может весить несколько гигабайт.Ctrl + H).ДанныеДляРасчетаСреднегоЗаработкаФСССотрудника
ДанныеДляРасчетаСреднегоЗаработкаФСССотрудникаСлужебный
.zip (либо оставьте в формате .xml).---
Если вы планируете выполнять перенос данных многократно (например, в ходе длительного проекта внедрения с регулярными тестовыми выгрузками), ручная замена в XML-файле неэффективна. В этом случае правильнее один раз отредактировать сами правила обмена.
Рассмотрим алгоритм внесения изменений в правила:
ОтпускПоУходуЗаРебенком (или аналогичного кадрового документа, на котором спотыкается загрузка).ПослеЗагрузки (или ПослеЗагрузкиОбъекта).
// Пример старого вызова в обработчике правил:
СведенияОПособии = УчетПособийСоциальногоСтрахованияРасширенный.ДанныеДляРасчетаСреднегоЗаработкаФСССотрудника(Параметры...);
Служебный:
// Исправленный вариант вызова:
СведенияОПособии = УчетПособийСоциальногоСтрахованияРасширенный.ДанныеДляРасчетаСреднегоЗаработкаФСССотрудникаСлужебный(Параметры...);
ПравилаПереноса_УПП_ERP_Фикс.xml и используйте его при последующих выгрузках из УПП.---
Помимо вышеописанной ошибки с кадровыми документами, в процессе переноса данных из УПП в ERP ИТ-специалисты регулярно сталкиваются с другими методологическими и техническими трудностями. Рассмотрим наиболее частые из них:
1. Ошибка переполнения памяти (Out of Memory)
Базы УПП, накопленные за 10–15 лет работы предприятия, имеют колоссальный объем данных. Стандартный механизм выгрузки через формат XML сильно нагружает оперативную память сервера и клиента. Для решения этой проблемы рекомендуем:
2. Ошибки в ресурсных спецификациях (производственный блок)
При выгрузке спецификаций часто возникает ошибка Преобразование значения к типу Число не может быть выполнено. Это происходит из-за так называемых «зацикленных» спецификаций в УПП, когда спецификация нижнего уровня ссылается сама на себя или на родительскую спецификацию. Перед переносом обязательно запустите отчет по иерархии спецификаций в УПП и устраните логические петли.
3. Расхождение остатков взаиморасчетов по заказам
В ERP учет расчетов с контрагентами устроен гораздо строже, чем в УПП. Если в УПП велся поордерный или позаказный учет с ошибками (например, платежи закрывались без указания конкретных документов сделок), то при переносе остатков по расчетам в ERP данные могут «разъехаться». Рекомендуется перед переносом провести полную инвентаризацию и сверку взаиморасчетов в разрезе договоров и документов расчетов в УПП, закрыть «зависшие» авансы и скорректировать аналитику.
4. Проблема разделения сущностей «Партнеры» и «Контрагенты»
В УПП существовал единый справочник контрагентов. В ERP концепция разделена на управленческих «Партнеров» (с кем ведем бизнес-отношения) и регламентированных «Контрагентов» (юридических лиц). Если в ERP включено независимое ведение партнеров и контрагентов, при переносе без предварительной настройки сопоставления могут возникнуть дубли или некорректные связи. По возможности, перед переносом сопоставьте контрагентов УПП с уникальными ИНН/КПП.