Почему при синхронизации между 1С:УТ и 1С:БП документы становятся непроведенными и как загружать данные в закрытый период?

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

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

Механизм работы синхронизации: почему документ теряет проведение?

Для начала проанализируем, как технически происходит загрузка данных в 1С. Важно понимать, что процесс синхронизации — это не просто копирование полей. Это сложная последовательность действий. Стандартный алгоритм загрузки документа выглядит следующим образом:

  1. Система находит существующий объект в базе или создает новый.
  2. Отмена проведения: Если объект уже существовал и был проведен, перед обновлением полей система часто инициирует его распроведение для корректного обновления движений по регистрам.
  3. Запись: Новые данные записываются в документ.
  4. Проведение: В самом конце процесса загрузки система пытается программно вызвать метод Записать(РежимЗаписиДокумента.Проведение).

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

Причина 1: Ошибки в данных и незаполненные счета учета

Рассмотрим ситуацию с точки зрения "Бухгалтерии предприятия". Для проведения документа в БП крайне важны счета учета (номенклатуры, расчетов с контрагентами, доходов и расходов). В "Управлении торговлей" этих счетов в явном виде может не быть. Если в БП не настроены регистры сведений "Счета учета номенклатуры" или "Счета учета расчетов с контрагентами", документ при загрузке не сможет определить аналитику для проводок.

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

Причина 2: Конфликт с подчиненными документами (Счет-фактуры)

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

Причина 3: Технические ошибки в правилах и фоновых заданиях

Выясним причину, связанную с типами данных. Иногда при выгрузке из УТ числовые значения (например, количество или сумма) могут преобразовываться в Неопределено или Null, если в источнике они по какой-то причине не заполнены (например, в документах корректировки). БП ожидает строго числовое значение 0. При попытке проведения документа с Неопределено в табличной части система падает в исключительную ошибку. Поскольку обмен часто идет в фоновом режиме, пользователь не видит окно с ошибкой, а видит только результат — непроведенный документ.

Как диагностировать проблему через Журнал регистрации?

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

  1. Перейдем в раздел Администрирование — Обслуживание — Журнал регистрации.
  2. Установим фильтр по событию "Данные.Запись" или "Данные.Проведение".
  3. Найдем момент синхронизации и ищем записи с уровнем "Ошибка".
  4. В тексте ошибки часто содержится прямой ответ, например: "Строка: 2. Не заполнено значение реквизита Счет учета" или "Поле 'Количество' должно быть числом".

Загрузка данных в запрещенном периоде

Разберем вопрос автора о дате запрета. В 1С существует два уровня контроля даты запрета:

1. Общая дата запрета редактирования. Она устанавливается для пользователей. Однако при синхронизации используется программный флаг ОбменДанными.Загрузка = Истина.

Этот флаг сообщает системе: "Я — механизм обмена, не нужно проверять дату запрета, не нужно проверять остатки, просто запиши то, что я принес". Если в коде конфигурации или в правилах обмена этот флаг установлен корректно, система проигнорирует общую дату запрета.


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

2. Дата запрета загрузки в настройках синхронизации.

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

Рекомендации по решению проблемы распроведения

Для того чтобы документы всегда оставались проведенными, выполните следующие шаги:

Таким образом, распроведение документов — это почти всегда признак того, что документ записался (данные пришли), но не смог выполниться код проведения из-за логических ошибок в базе-приемнике. Внимательный анализ Журнала регистрации и проверка заполнения аналитики в БП позволяют решить эту проблему в 90% случаев.

← На главную