Как выгрузить один конкретный документ из УТ в БП и почему не заполняются счета учета?

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

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

Разберем подробно, как безопасно выполнить выгрузку одного объекта, какие инструменты для этого существуют, и, самое главное, выясним истинную причину незаполнения счетов учета в приемнике.

Анализ проблемы: гипотезы и реальность

Рассмотрим типичную ситуацию: в очереди регистрации на обмен находится огромное количество объектов (около 1000). Нам нужно выгрузить только один документ, чтобы проверить гипотезу: "Если счета номенклатуры заполнены корректно, пройдет ли обмен без ошибок?".

Первая мысль, которая часто приходит в голову — удалить регистрацию всех объектов и зарегистрировать вручную только один нужный. Делать так категорически не рекомендуется. Удаляя регистрацию, мы рискуем нарушить ссылочную целостность данных в базе-приемнике. Если наш документ ссылается на новую номенклатуру или контрагента, которые стояли в очереди на выгрузку, но мы их удалили, в бухгалтерию прилетит документ с "битыми" ссылками (Объект не найден).

Правильный подход заключается в использовании штатных механизмов выборочной выгрузки или внешних инструментов.

Решение 1: Проверка механизма заполнения счетов учета (Основная причина)

Прежде чем пытаться "протолкнуть" документ через обмен, давайте разберем механизм заполнения счетов в "1С:Бухгалтерии". Как верно было замечено в обсуждении, счета учета в документе заполняются в момент загрузки или проведения, основываясь на данных регистра сведений СчетаУчетаНоменклатуры.

Если в документе при обмене не встали счета, с вероятностью 99% проблема не в самом обмене, а в настройках базы-приемника (БП). Алгоритм поиска счетов работает по принципу от частного к общему:

  1. Система ищет настройку для конкретной связки: Номенклатура + Организация + Склад.
  2. Если не найдено, ищется настройка для Номенклатуры (без учета склада/организации).
  3. Если не найдено, ищется настройка для Группы номенклатуры (папки в справочнике).
  4. В самом конце ищется общая настройка для всей номенклатуры (пустая ссылка в поле Номенклатура).

Для диагностики не обязательно запускать обмен. Достаточно зайти в базу БП и попробовать создать документ реализации вручную с той же номенклатурой. Если счета не подставились автоматически — значит, не настроен регистр сведений.

Решение: Проверьте и заполните регистр СчетаУчетаНоменклатуры для проблемных позиций или их групп.

Решение 2: Использование обработки "Универсальный обмен данными в формате XML"

Если нам все же необходимо передать конкретный экземпляр документа (например, чтобы проверить работу правил конвертации или перенос специфических реквизитов), отлично подойдет инструмент "Универсальный обмен данными в формате XML".

Этот метод позволяет выгрузить один объект в файл, не затрагивая план обмена и очередь регистрации.

Разберем алгоритм действий:

  1. Открываем обработку "Универсальный обмен данными" в базе-источнике (УТ).
  2. Выбираем используемые правила обмена (их можно выгрузить из макета плана обмена или взять файл правил, если он внешний).
  3. В отборе данных указываем наш конкретный документ.
  4. Выгружаем данные в файл XML.
  5. Заходим в базу-приемник (БП) и открываем эту же обработку на закладке "Загрузка данных".
  6. Загружаем файл.

Этот способ идеален для отладки, так как позволяет использовать режим отладки кода обработчиков правил конвертации.

Решение 3: Штатный механизм "Состав отправляемых данных"

В современных конфигурациях на управляемых формах (УТ 11, КА, ERP, БП 3.0) есть встроенный инструмент для управления очередью регистрации. Нам не нужно удалять всю регистрацию, чтобы отправить один объект.

Рассмотрим порядок действий:

  1. Переходим в раздел синхронизации данных.
  2. Нажимаем кнопку настройки состава отправляемых данных (обычно иконка списка или двух квадратов рядом с кнопкой "Синхронизировать").
  3. В открывшемся окне мы видим дерево объектов. Находим нужный вид документа.
  4. Используем поиск или отбор, чтобы найти конкретный документ по номеру/дате.
  5. Если документ не зарегистрирован — регистрируем его вручную прямо здесь.
  6. Остальные объекты можно временно не трогать, либо, если критично отправить только этот объект первым, можно временно снять регистрацию с остальных, но это трудоемко.

Однако, в контексте современных обменов через формат EnterpriseData, механизм обмена часто отправляет пакеты данных последовательно. Если вы хотите проверить один документ, проще всего воспользоваться функционалом "Выгрузить сейчас" (если он реализован в форме документа через расширения или БСП) или все-таки использовать выгрузку в файл, как описано в Решении 2 (но с использованием обработки "Выгрузка и загрузка данных EnterpriseData").

Программный код для заполнения счетов (для понимания процесса)

Важно понимать, что при загрузке документа через обмен срабатывают обработчики событий. Обычно заполнение счетов происходит в подписке на событие или в правилах конвертации (метод ПослеЗагрузки). Выглядит это примерно так:


// Примерный алгоритм заполнения счетов
Если ЗначениеЗаполнено(Объект.Ссылка) Тогда 
    // Если объект уже есть, часто счета не перезаполняются, 
    // чтобы сохранить ручные правки бухгалтера.
    Возврат; 
КонецЕсли;

Для Каждого СтрокаТЧ Из Объект.Товары Цикл
    СчетаУчета = БухгалтерскийУчетПереопределяемый.ПолучитьСчетаУчетаНоменклатуры(
        Объект.Организация, 
        СтрокаТЧ.Номенклатура, 
        Объект.Склад
    );
    
    СтрокаТЧ.СчетУчета = СчетаУчета.СчетУчета;
    СтрокаТЧ.СчетДоходов = СчетаУчета.СчетДоходов;
    // ... и так далее
КонецЦикла;

Если документ уже был загружен ранее с пустыми счетами, повторная выгрузка может не исправить ситуацию, так как алгоритм часто защищает уже записанные документы от изменений. В этом случае документ в БП лучше пометить на удаление или распровести перед повторной загрузкой (или воспользоваться обработкой группового перепроведения/заполнения реквизитов).

Итог

В данной ситуации проблема автора заключалась в отсутствии настроек в регистре сведений СчетаУчетаНоменклатуры. После корректного заполнения регистра (для номенклатуры или групп номенклатуры) документы начали приходить с заполненными счетами.

Главные рекомендации:

← На главную