Почему документы «Реализация товаров и услуг» не загружаются из УТ 11 в БП 2.0 при успешной синхронизации?

Программист 1С v8.3 (Обычные формы) Бухгалтерский учет Торговля и дистрибуция
← На главную

При настройке синхронизации между конфигурациями 1С:Управление торговлей (редакция 11) и 1С:Бухгалтерия предприятия (редакция 2.0) пользователи часто сталкиваются с парадоксальной ситуацией: отчет системы сообщает о «прекрасно выполненном обмене», однако фактически документы в базе-приемнике не появляются. Рассмотрим подробнее причины этого поведения, разберем техническую ошибку в правилах обмена и выясним, как правильно диагностировать процесс загрузки.

Анализ ошибки «Значение индекса выходит за границы диапазона»

Одной из ключевых причин, по которой документы «зависают» или не выгружаются корректно, является программная ошибка в обработчиках событий правил конвертации объектов (ПКО). Проанализируем типичный текст ошибки, возникающий в журнале регистрации или при выгрузке:

Ошибка в обработчике события ПередВыгрузкойОбъекта ПКО = РТУ_ПродажаТоваровУслуг. ОписаниеОшибки = Ошибка при вызове метода контекста (Получить): Значение индекса выходит за границы диапазона.

Эта ошибка характерна для правил, созданных в среде 1С:Конвертация данных 2.0. Выясним причину ее возникновения. В коде правил (обычно это обработчики ПередВыгрузкой или ПриВыгрузке) выполняется запрос к базе данных для получения дополнительных сведений — например, цен номенклатуры, счетов учета или ответственных лиц. Программисты часто обращаются к результату запроса напрямую по индексу [0], предполагая, что данные всегда существуют. Если в исходной базе для конкретной позиции номенклатуры не установлена цена или не заполнены обязательные реквизиты, запрос возвращает пустой массив. Обращение к первой строке (индексу 0) в этом случае вызывает фатальный сбой.

Для исправления этой ситуации проанализируем правильный подход к написанию кода в обработчиках:


// Пример безопасного получения данных в правилах обмена
Запрос = Новый Запрос;
Запрос.Текст = 
    "ВЫБРАТЬ
    |   ЦеныНоменклатурыСрезПоследних.Цена КАК Цена
    |ИЗ
    |   РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Период, Номенклатура = &Номенклатура) КАК ЦеныНоменклатурыСрезПоследних";

Запрос.УстановитьПараметр("Период", Объект.Дата);
Запрос.УстановитьПараметр("Номенклатура", СтрокаТЧ.Номенклатура);

РезультатЗапроса = Запрос.Выполнить();

// Обязательная проверка на пустоту результата!
Если Не РезультатЗапроса.Пустой() Тогда
    Выборка = РезультатЗапроса.Выбрать();
    Выборка.Следующая();
    // Только теперь можно безопасно обращаться к данным
    ЦенаДляВыгрузки = Выборка.Цена;
Иначе
    // Если данных нет, назначаем значение по умолчанию, чтобы избежать ошибки
    ЦенаДляВыгрузки = 0; 
КонецЕсли;

Если вы столкнулись с такой ошибкой, необходимо отредактировать файл ПравилаОбменаДанными, который загружен в вашу настройку синхронизации. Проверьте все места в ПКО РеализацияТоваровУслуг, где происходит программный расчет значений.

Почему документы не видны в журнале БП после завершения обмена

Рассмотрим ситуацию, когда ошибок в коде нет, но документы все равно не появляются в списке. Это может быть связано с механизмом сопоставления объектов и фильтрами загрузки.

  1. Невыполненное сопоставление: При первом переносе новых документов система часто требует ручного подтверждения сопоставления. Проанализируем действия в интерфейсе: если форма сопоставления открывается, недостаточно просто нажать «Далее». В некоторых случаях требуется нажать кнопку «Выполнить получение данных» или «Сопоставить автоматически». Пока связь между объектами не установлена, документ может находиться в «подвешенном» состоянии в таблицах обмена.
  2. Фильтры по организациям и складам: Проверим настройки синхронизации в базе-приемнике. Если в БП установлен фильтр «Выгружать только по организации А», а из УТ пришел документ по «Организации Б», система загрузит данные в буфер, но не создаст документ в основном журнале, так как он не проходит по критериям отбора.
  3. Дата запрета редактирования: Несмотря на то, что автор темы утверждает об отсутствии даты запрета, это первое, что мы должны проверить. Если дата запрета в БП установлена на 31.12.2018, а вы пытаетесь загрузить документы за октябрь 2018 года, обмен пройдет успешно (с точки зрения транспорта данных), но объекты не будут записаны.

Проблема отсутствия количества в загруженных документах

Иногда документ создается, но его табличная часть выглядит некорректно — например, отсутствует количество товара. Выясним, почему это происходит:

Во-первых, проанализируем единицы измерения. В УТ 11 активно используются упаковки, а в БП 2.0 классификатор единиц измерения более жесткий. Если в УТ товар отгружен в упаковках, для которых не задан коэффициент или нет сопоставленной базовой единицы в БП, система может «обнулить» количество при попытке пересчета.

Во-вторых, сопоставление номенклатуры по типу. Если в базе Управление торговлей позиция является «Товаром», а в базе Бухгалтерия она случайно была создана или сопоставлена как «Услуга», то при загрузке документа Реализация товаров и услуг поля, специфичные для товара (склад, количество, счета учета ТМЦ), могут игнорироваться логикой проведения в БП 2.0.

Пошаговая методика поиска «потерянного» документа

Если вы не понимаете, на каком этапе пропадают данные, проделаем следующие шаги:

  1. Проверка состава отправляемых данных: В УТ 11 перейдем в форму мониторинга синхронизации и откроем состав отправляемых данных. Убедимся, что конкретный документ ЭСЦБ-008215 зарегистрирован к обмену. Если его там нет — добавим его вручную.
  2. Выгрузка в файл для анализа: На время диагностики сменим способ обмена с прямого подключения на «Обмен через локальный каталог». Выполним выгрузку и откроем полученный XML-файл любым текстовым редактором (например, Notepad++).
  3. Поиск по номеру: Используем поиск по номеру документа в XML-файле. Если номер найден — значит, УТ 11 данные отдала, и проблему нужно искать строго в правилах загрузки на стороне БП 2.0.
  4. Анализ Журнала регистрации в БП: Сразу после завершения загрузки в Бухгалтерии откроем Журнал регистрации. Установим фильтр по событию «Обмен данными». Система часто пишет там детальные ошибки записи объекта, которые не выводятся в основное окно синхронизации (например, «Не заполнен обязательный реквизит СчетУчета»).

Важный момент: Связка УТ 11.2 и БП 2.0 является морально устаревшей. Конфигурация БП 2.0 работает на старых механизмах, которые могут конфликтовать с современными типами данных из УТ 11. Рекомендуется по возможности обновить БП 2.0 до версии 3.0, где механизмы синхронизации работают через формат EnterpriseData, что значительно снижает вероятность ошибок в индексах и ПКО.

В случае обнаружения битых ссылок или документов без количества, попробуйте удалить проблемный документ в БП 2.0, снять его с регистрации в УТ 11, заново перепровести в источнике и зарегистрировать к обмену. Это заставит систему полностью переформировать XML-структуру объекта при следующей итерации синхронизации.

← На главную