При выполнении обмена данными между конфигурациями Управление торговлей 10.3 и Бухгалтерия предприятия 3.0 пользователи часто сталкиваются с критической ошибкой: Недопустимое значение параметра (параметр номер '1') в модуле Обработка.КонвертацияОбъектовИнформационныхБаз. Эта ошибка обычно возникает после обновления платформы или конфигурации БП 3.0 и сигнализирует о том, что механизм обмена пытается получить ссылку на объект, используя пустой идентификатор.
В процессе анализа проблемы мы выяснили, что причина кроется в нарушении целостности данных в регистре сведений Соответствия объектов информационных баз. Механизм синхронизации при поиске объекта по ссылке GUID обращается к этому регистру. Если колонка Уникальный идентификатор источника строкой оказывается пустой, система выбрасывает исключение, так как конструктор УникальныйИдентификатор не может обработать пустое значение.
Данная проблема является следствием программных изменений в алгоритмах обмена при обновлении. Важно понимать, что это не «битые ссылки» в самой базе, а конфликт между текущими данными регистра и логикой работы обновленного механизма обмена.
Наиболее безопасным способом решения является восстановление записей регистра из архивной копии базы, сделанной до обновления. Для этого нам потребуется выгрузить данные из старой базы и загрузить их в текущую.
Для выполнения этой задачи мы подготовим внешнюю обработку или используем консоль кода. Рассмотрим пример реализации алгоритма выгрузки и загрузки.
Используем следующий алгоритм для сохранения данных регистра в файл:
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ * ИЗ РегистрСведений.СоответствияОбъектовИнформационныхБаз";
Результат = Запрос.Выполнить().Выгрузить();
ЗначениеВФайл("C:\Temp\RegData.dat", Результат);
После выгрузки, в текущей базе необходимо очистить записи регистра и загрузить данные из файла:
ТЗ_Значений = ЗначениеИзФайла("C:\Temp\RegData.dat");
НаборЗаписей = РегистрыСведений.СоответствияОбъектовИнформационныхБаз.СоздатьНаборЗаписей();
НаборЗаписей.Записать(); // Очистка текущего состояния
Для Каждого Стр Из ТЗ_Значений Цикл
ТекЗапись = РегистрыСведений.СоответствияОбъектовИнформационныхБаз.СоздатьМенеджерЗаписи();
ЗаполнитьЗначенияСвойств(ТекЗапись, Стр);
ТекЗапись.Записать();
КонецЦикла;
Если резервная копия отсутствует или восстановление данных невозможно, мы можем применить метод радикальной очистки регистра. Это вынудит систему заново провести процедуру сопоставления объектов.
Регистр сведений.Соответствия объектов информационных баз.Важное предостережение: При использовании этого метода система может создать дубли объектов, если они уже существуют в обеих базах. Вам потребуется воспользоваться штатным механизмом Поиск и удаление дублей или выполнить сопоставление объектов вручную через помощник синхронизации данных.
Чтобы избежать подобных инцидентов в будущем, рекомендуем придерживаться следующих правил:
БП 3.0 обязательно делайте полный бэкап базы данных.Соответствия объектов информационных баз на наличие записей с пустыми GUID.Данная проблема является известной «болезнью» обменов 1С, и следование этим инструкциям позволит вам быстро восстановить работоспособность интеграции между УТ 10.3 и БП 3.0.