Перенос данных в среде 1С:Предприятие 7.7 — задача классическая, но часто сопряженная с техническими трудностями. Особенно остро проблема встает, когда исходная информационная база (ИБ) подверглась некорректной «очистке» или «свертке», в результате чего нарушается ссылочная целостность. В данной статье мы разберем, как проверить корректность ваших инструментов на тестовых базах, какие обработки лучше использовать и как обойти типичные ошибки импорта.
Прежде чем грешить на программное обеспечение для переноса, необходимо исключить фактор «битых» данных в конкретной базе. Проанализируем, где взять эталонную ИБ для проверки софта. Самым верным решением будет использование демонстрационной базы, которая идет в комплекте с любой типовой конфигурацией 1С 7.7. Она содержит заполненные справочники, документы и корректные проводки, что позволяет убедиться в работоспособности обработок export77.ert и import77.ert.
Если же вы хотите проверить перенос на реальных данных, но сомневаетесь в их чистоте, выполним следующие шаги:
«Объект не найден», которые чаще всего становятся причиной падения импорта.Рассмотрим ситуацию, когда бухгалтер «почистил» базу, удалив «мертвые души» (неиспользуемых контрагентов или сотрудников). В 1С 7.7 удаление объектов без контроля ссылок приводит к тому, что в документах или регистрах остаются ссылки на несуществующие внутренние идентификаторы. При попытке экспорта через XML или текстовый файл стандартная обработка пытается разрешить эти ссылки и выдает ошибку.
Выясним причину сбоя: если перенос через Конвертацию данных 2.1 или универсальные обработки прерывается, скорее всего, программа встречает битую запись в таблицах 1SCONST (константы и периодические реквизиты) или в проводках. В этом случае рекомендуется сначала «залечить» базу штатными средствами тестирования, прежде чем приступать к выгрузке.
Разберем основные инструменты, которые зарекомендовали себя в сообществе программистов 1С 7.7:
Посмотрим на пример логики переноса через OLE-соединение. Этот метод позволяет программно обрабатывать ошибки «на лету»:
// Создание объекта подключения к базе-источнику
БазаИсточник = СоздатьОбъект("V77.Application");
Открыта = БазаИсточник.Initialize(БазаИсточник.RMTrade, "/d""C:\Bases\OldBase"" /nAdmin", "NO_SPLASH_SHOW");
Если Открыта = 1 Тогда
// Выбираем справочник в источнике
СпрИсточник = БазаИсточник.СоздатьОбъект("Справочник.Контрагенты");
СпрИсточник.ВыбратьЭлементы();
Пока СпрИсточник.ПолучитьЭлемент() = 1 Цикл
// Здесь логика создания элемента в текущей базе
// Если элемент не найден по коду, создаем новый
КонецЦикла;
КонецЕсли;
Часто программисты пытаются перенести всё сразу, что ведет к лавинообразным ошибкам. Проанализируем более надежный подход — пообъектный перенос:
Важно помнить о критическом ограничении формата DBF в 1С 7.7. Если после «очистки» базы размер какого-либо файла (например, 1SENTRY.DBF — проводки) приблизился к 2 Гигабайтам, база начнет вести себя непредсказуемо. Именно это часто заставляет бухгалтеров требовать «свертки» базы.
Также стоит учитывать специфику перехода между региональными законодательствами (например, при переходе с украинских планов счетов на российские). В этом случае простой перенос данных не поможет — потребуется глубокая трансформация аналитики (субконто) и планов счетов. Здесь лучше всего использовать Конвертацию данных с тщательно прописанными правилами обмена (ПКО и ПВД).
Подведем итог: если импорт выдает массу ошибок, проблема в 90% случаев заключается в нарушенной структуре исходной базы. Используйте демонстрационные базы для проверки софта, проводите полное Тестирование и исправление базы-источника и отдавайте предпочтение методу ввода остатков вместо полного переноса документов. Если же требуется перенос специфических данных, используйте OLE-соединение для прямого контроля процесса записи каждого объекта.