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