Синхронизация данных между конфигурациями 1С:Управление торговлей (УТ) и 1С:Бухгалтерия предприятия (БП) — стандартная и часто используемая задача. Однако иногда этот процесс прерывается с неочевидными ошибками. Рассмотрим ситуацию, когда при запуске синхронизации из Бухгалтерии система сообщает, что данные успешно отправлены, но при этом получить их не удалось. Разберем по шагам, как диагностировать и устранить подобную проблему.
Первое, что мы видим после сбоя синхронизации, — это общее окно с сообщениями:
Это сообщение малоинформативно. Ключевой момент в диагностике — всегда нажимать на ссылку "Подробно", чтобы увидеть технический текст ошибки. В рассматриваемом случае за общим сообщением скрывалась совершенно другая проблема, не связанная напрямую с механизмом обмена.
Подробный текст ошибки указывал на сбой в модуле ЖурналРегистрации:
{ОбщийМодуль.ЖурналРегистрации.Модуль(314)}: ПредставлениеОтбора = ПредставлениеПериода(ДатаНачалаИнтервала, ДатаОкончанияИнтервала);
С сопутствующим сообщением: "недопустимое значение параметра (параметр номер 2)".
Проанализируем эту информацию. Ошибка возникает не в момент приема или отправки XML-файла обмена, а при попытке сформировать запись в журнале регистрации. Функция ПредставлениеПериода принимает два параметра: ДатаНачалаИнтервала и ДатаОкончанияИнтервала. Ошибка "параметр номер 2" прямо указывает, что в переменную ДатаОкончанияИнтервала передается некорректное значение. Это может быть пустая дата, значение Неопределено или что-то, что система не может преобразовать в дату. Скорее всего, в процессе синхронизации создается или изменяется некий объект с некорректной датой, событие по которому система пытается записать в журнал.
Теперь, когда у нас есть конкретная строка кода, вызывающая ошибку, самым эффективным инструментом для поиска причины становится отладчик. Выясним, откуда приходит некорректное значение даты.
Запустите конфигуратор. Откройте базу 1С:Бухгалтерия в режиме конфигуратора.
Найдите место ошибки. В дереве конфигурации найдите указанные в тексте ошибки объекты. В нашем случае это:
ОбщийМодуль.ЖурналРегистрации.МодульОбработка.ЖурналРегистрации.Форма.ЖурналРегистрации.ФормаУстановите точки останова. Откройте модули и установите точки останова (клавиша F9) на строках, которые были указаны в тексте ошибки. В первую очередь, на ключевой строке:
{ОбщийМодуль.ЖурналРегистрации.Модуль(314)}:
ПредставлениеОтбора = ПредставлениеПериода(ДатаНачалаИнтервала, ДатаОкончанияИнтервала);
А также на строках вызова этой процедуры, чтобы отследить всю цепочку:
{Обработка.ЖурналРегистрации.Форма.ЖурналРегистрации.Форма(406)}:
ЖурналРегистрации.СформироватьПредставлениеОтбора(ПредставлениеОтбора, ОтборЖурналаРегистрации, ОтборЖурналаРегистрацииПоУмолчанию);
Запустите отладку. Нажмите F5 или выберите в меню "Отладка" -> "Начать отладку".
Воспроизведите ошибку. В запущенном приложении повторите действия, которые приводят к ошибке, то есть запустите синхронизацию данных.
Проанализируйте переменные. Когда выполнение кода остановится на вашей точке останова, наведите курсор на переменные ДатаНачалаИнтервала и ДатаОкончанияИнтервала или откройте окно "Выражения" (Shift+F9) и посмотрите их значения. Вы увидите, что ДатаОкончанияИнтервала имеет некорректное значение. Далее, используя стек вызовов, вы сможете отследить, откуда это значение пришло, и определить, какой именно объект данных из УТ является причиной сбоя.
Найдя "проблемный" объект (например, документ с пустой датой), необходимо будет исправить его в исходной базе (УТ) и запустить синхронизацию заново.
В процессе отладки или при очередном запуске синхронизации может появиться диалоговое окно с предложением сопоставить данные. Это окно с заголовком "Синхронизация данных: ..." и таблицей несопоставленных объектов.
Важно понимать: это не ошибка, а штатный режим работы синхронизации.
Такое окно появляется, когда в одной из баз был создан новый элемент (например, контрагент или номенклатура), а в другой базе аналога для него не нашлось. Система предлагает вам помочь ей: либо найти существующий элемент и связать их, либо создать новый.
Ваши действия в этом случае:
Не паникуйте и не закрывайте окно. Это часть процесса.
Нажмите кнопку "Далее". Система проведет вас по шагам мастера сопоставления данных.
Выполните сопоставление. Внимательно просмотрите предложенные варианты и выполните необходимые действия. Чаще всего система сама предлагает правильные варианты (например, "Создать новый").
Завершите синхронизацию. После сопоставления синхронизация должна продолжиться и завершиться корректно.
Таким образом, ключ к решению проблем с синхронизацией — это внимательный анализ подробных текстов ошибок и использование встроенных инструментов платформы, таких как отладчик.