При использовании механизма «1С:Конвертация данных» программисты часто сталкиваются с парадоксальной ситуацией: одни и те же правила обмена идеально работают на пустой тестовой базе, но при переносе в реальную рабочую среду документы «исчезают». Обработка загрузки рапортует об успешном создании объектов, программный код Сообщить(Объект) выводит информацию в окно сообщений, но в журналах документов пусто. Рассмотрим подробно, почему это происходит и как провести диагностику этой проблемы.
Это самая распространенная «тихая» причина. Разберем ситуацию: бухгалтер или администратор установил общую дату запрета загрузки или редактирования данных. В этом случае документы, дата которых меньше установленного порога, могут вести себя непредсказуемо при загрузке через стандартные обработки.
Проанализируем механизм: если в коде загрузки не установлен явный приоритет записи, система может формально создать объект в оперативной памяти, но при попытке окончательной фиксации транзакции срабатывает механизм платформенной защиты. Примечательно, что в некоторых конфигурациях при использовании Конвертации данных загрузка может не выдавать явных ошибок в лог, создавая иллюзию успеха. Проверьте настройки в разделе Администрирование — Поддержка и обслуживание — Дата запрета изменения данных.
Прежде чем искать программную ошибку, стоит проверить интерфейсные настройки. В чистой базе нет истории посещений и сохраненных настроек пользователя, поэтому список документов открывается «как есть». В рабочей базе у пользователя могут быть установлены:
Рассмотрим более глубокую техническую причину — Row Level Security (RLS). В рабочей базе, в отличие от тестовой, обычно настроены профили групп доступа. Физически документ создается и записывается в базу данных (именно поэтому загрузка пишет «ОК»), но текущий пользователь (под которым вы проверяете результат) не имеет прав на чтение данных по конкретному значению реквизита (например, по конкретной «Организации» или «Подразделению»).
Чтобы исключить этот фактор, выполните проверку под пользователем с ролью ПолныеПрава. Если документы появились — проблема в настройках прав доступа.
Выясним, как работают правила поиска. Если в правилах обмена (ПКО) установлен поиск по Уникальному идентификатору, система ищет объект в базе-приемнике.
В чистой базе объектов нет, поэтому всегда создается новый документ. В рабочей базе объект с таким UID уже может существовать (например, это был старый черновик или помеченный на удаление документ). Загрузка просто обновляет существующий объект, не меняя его статус. В итоге создается ощущение, что ничего не добавилось, так как количество записей в базе не изменилось. Посмотрите на правила поиска в Конвертации данных и убедитесь, что флаг «Продолжить поиск по полям поиска, если по идентификатору объект не найден» установлен корректно.
В конфигурациях на базе БСП (Библиотека стандартных подсистем) отображение многих документов зависит от Функциональных опций. Разберем пример: вы загружаете «Акты выполненных работ», но в настройках рабочей базы отключена опция «Использовать оказание услуг». Документы физически запишутся в таблицу базы данных, но не будут отображаться ни в одном интерфейсном журнале, так как система считает этот функционал неактивным для данного предприятия.
При обмене данными через КД обычно используется режим ОбменДанными.Загрузка = Истина. Этот флаг отключает большинство прикладных проверок в модулях объектов (в процедурах ПередЗаписью и ПриЗаписи). Однако, если в рабочей базе есть специфические расширения или кастомный код, который игнорирует этот флаг, запись может быть заблокирована или данные могут быть очищены сразу после записи без вывода сообщения об ошибке.
Для диагностики рекомендуется временно добавить в обработчик «После загрузки» в правилах обмена следующий код:
Сообщить("Проверка документа: " + Объект.Ссылка + " Проведен: " + Объект.Проведен);
Если Объект.Ссылка.Пустая() Тогда
Сообщить("Ошибка: Объект не был записан в базу данных!");
КонецЕсли;
Если визуально документов нет, обратимся к самому надежному источнику — Журналу регистрации. Проанализируем ситуацию по шагам:
Как показывает практика, в 90% случаев проблема кроется не в самих правилах обмена, а в настройках целевой базы. Проверьте дату запрета изменения данных и наличие RLS. Если вы видите сообщение о создании объекта, но не видите сам объект — значит, он либо «приклеился» к существующему по UID, либо скрыт фильтрами интерфейса или прав доступа. Всегда используйте Журнал регистрации для подтверждения физического наличия транзакции записи в базе данных.