При настройке синхронизации между конфигурациями 1С:Управление торговлей (редакция 11) и 1С:Бухгалтерия предприятия (редакция 2.0) пользователи часто сталкиваются с парадоксальной ситуацией: отчет системы сообщает о «прекрасно выполненном обмене», однако фактически документы в базе-приемнике не появляются. Рассмотрим подробнее причины этого поведения, разберем техническую ошибку в правилах обмена и выясним, как правильно диагностировать процесс загрузки.
Одной из ключевых причин, по которой документы «зависают» или не выгружаются корректно, является программная ошибка в обработчиках событий правил конвертации объектов (ПКО). Проанализируем типичный текст ошибки, возникающий в журнале регистрации или при выгрузке:
Ошибка в обработчике события ПередВыгрузкойОбъекта ПКО = РТУ_ПродажаТоваровУслуг. ОписаниеОшибки = Ошибка при вызове метода контекста (Получить): Значение индекса выходит за границы диапазона.
Эта ошибка характерна для правил, созданных в среде 1С:Конвертация данных 2.0. Выясним причину ее возникновения. В коде правил (обычно это обработчики ПередВыгрузкой или ПриВыгрузке) выполняется запрос к базе данных для получения дополнительных сведений — например, цен номенклатуры, счетов учета или ответственных лиц. Программисты часто обращаются к результату запроса напрямую по индексу [0], предполагая, что данные всегда существуют. Если в исходной базе для конкретной позиции номенклатуры не установлена цена или не заполнены обязательные реквизиты, запрос возвращает пустой массив. Обращение к первой строке (индексу 0) в этом случае вызывает фатальный сбой.
Для исправления этой ситуации проанализируем правильный подход к написанию кода в обработчиках:
// Пример безопасного получения данных в правилах обмена
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ЦеныНоменклатурыСрезПоследних.Цена КАК Цена
|ИЗ
| РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Период, Номенклатура = &Номенклатура) КАК ЦеныНоменклатурыСрезПоследних";
Запрос.УстановитьПараметр("Период", Объект.Дата);
Запрос.УстановитьПараметр("Номенклатура", СтрокаТЧ.Номенклатура);
РезультатЗапроса = Запрос.Выполнить();
// Обязательная проверка на пустоту результата!
Если Не РезультатЗапроса.Пустой() Тогда
Выборка = РезультатЗапроса.Выбрать();
Выборка.Следующая();
// Только теперь можно безопасно обращаться к данным
ЦенаДляВыгрузки = Выборка.Цена;
Иначе
// Если данных нет, назначаем значение по умолчанию, чтобы избежать ошибки
ЦенаДляВыгрузки = 0;
КонецЕсли;
Если вы столкнулись с такой ошибкой, необходимо отредактировать файл ПравилаОбменаДанными, который загружен в вашу настройку синхронизации. Проверьте все места в ПКО РеализацияТоваровУслуг, где происходит программный расчет значений.
Рассмотрим ситуацию, когда ошибок в коде нет, но документы все равно не появляются в списке. Это может быть связано с механизмом сопоставления объектов и фильтрами загрузки.
Иногда документ создается, но его табличная часть выглядит некорректно — например, отсутствует количество товара. Выясним, почему это происходит:
Во-первых, проанализируем единицы измерения. В УТ 11 активно используются упаковки, а в БП 2.0 классификатор единиц измерения более жесткий. Если в УТ товар отгружен в упаковках, для которых не задан коэффициент или нет сопоставленной базовой единицы в БП, система может «обнулить» количество при попытке пересчета.
Во-вторых, сопоставление номенклатуры по типу. Если в базе Управление торговлей позиция является «Товаром», а в базе Бухгалтерия она случайно была создана или сопоставлена как «Услуга», то при загрузке документа Реализация товаров и услуг поля, специфичные для товара (склад, количество, счета учета ТМЦ), могут игнорироваться логикой проведения в БП 2.0.
Если вы не понимаете, на каком этапе пропадают данные, проделаем следующие шаги:
УТ 11 перейдем в форму мониторинга синхронизации и откроем состав отправляемых данных. Убедимся, что конкретный документ ЭСЦБ-008215 зарегистрирован к обмену. Если его там нет — добавим его вручную.УТ 11 данные отдала, и проблему нужно искать строго в правилах загрузки на стороне БП 2.0.Важный момент: Связка УТ 11.2 и БП 2.0 является морально устаревшей. Конфигурация БП 2.0 работает на старых механизмах, которые могут конфликтовать с современными типами данных из УТ 11. Рекомендуется по возможности обновить БП 2.0 до версии 3.0, где механизмы синхронизации работают через формат EnterpriseData, что значительно снижает вероятность ошибок в индексах и ПКО.
В случае обнаружения битых ссылок или документов без количества, попробуйте удалить проблемный документ в БП 2.0, снять его с регистрации в УТ 11, заново перепровести в источнике и зарегистрировать к обмену. Это заставит систему полностью переформировать XML-структуру объекта при следующей итерации синхронизации.