При выполнении обмена данными между конфигурациями, например, из УПП в БП 3.0, разработчики часто сталкиваются с проблемой переноса пользовательских счетов учета. Стандартный механизм поиска по GUID в Конвертации данных 2.1 не срабатывает, так как созданные вручную счета имеют разные идентификаторы в разных информационных базах. Рассмотрим, как эффективно решить эту задачу и избежать ошибок проведения документов после загрузки.
Если счета не являются предопределенными, Конвертация данных не может сопоставить их автоматически. Первое, что нам нужно сделать — это обеспечить поиск по ключевым полям, таким как Код.
ПКО) для плана счетов.Код установлен флаг Поиск.Однако, если прямой поиск по коду невозможен или требуется более гибкая логика выбора (например, сложная зависимость от условий документа), используйте механизм параметров. Автор темы предложил следующее решение:
В правиле конвертации свойств (ПКС) документа мы можем передать нужный счет через параметр:
// В событии ПослеВыгрузки (или соответствующем обработчике ПКС)
Параметры.Вставить("НужныйСчетДляДокумента", Источник.СчетУчета);
Затем, в ПКС объекта или в обработчике ПередЗагрузкой, мы используем этот параметр для поиска счета в базе-приемнике:
// Пример логики в приемнике
НайденныйСчет = ПланыСчетов.Хозрасчетный.НайтиПоКоду(Параметры.НужныйСчетДляДокумента.Код);
Объект.СчетУчета = НайденныйСчет;
Часто после успешного переноса ссылок на счета документ отказывается проводиться. Это происходит из-за того, что в БП 3.0 структура счетов и требования к аналитике (субконто) строже, чем в УПП. Также документ может требовать данных, которые еще не были загружены в базу.
Разберем способы исправления ситуации:
1. Отложенное проведение: Не пытайтесь проводить документы непосредственно в процессе загрузки. Установите РежимЗаписи = "Запись". После того как все данные будут перенесены в БП 3.0, выполните групповое перепроведение документов через стандартную обработку ГрупповоеПерепроведениеДокументов.
2. Программное проведение: Если документ требует обязательного проведения после загрузки, выполните его программно в обработчике ПослеЗагрузки:
// В событии ПослеЗагрузки объекта
ДокументОбъект = Объект.ПолучитьОбъект();
Если ДокументОбъект <> Неопределено Тогда
Попытка
ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение);
Исключение
// Логирование ошибки для анализа
ЗаписьЖурналаРегистрации("Ошибка переноса", УровеньЖурналаРегистрации.Ошибка,,, ОписаниеОписаниеОшибки());
КонецПопытки;
КонецЕсли;
Чтобы минимизировать проблемы при переносе данных, следуйте нашим советам:
УПП счет имел 2 субконто, а в БП 3.0 на этом же счете их 3, документ не проведется. В ПКС обязательно пропишите логику заполнения всех обязательных аналитик.КД 2.1. Это самый надежный способ «подружить» разные счета без написания сложного кода в обработчиках.НайтиПоКоду) внутри циклов. Если счета повторяются, кешируйте найденные ссылки в параметрах, чтобы ускорить работу обмена.Использование таких подходов позволит вам перенести документы из УПП в БП 3.0 максимально корректно, сохранив целостность бухгалтерских данных и обеспечив возможность полноценной работы с документами в новой учетной системе.