Почему документы в 1С:Бухгалтерия 3.0 не проводятся автоматически после обмена со старой версией УТ 11.2?

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

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

Анализ проблемы и поиск причин в Журнале регистрации

Первое, что мы должны сделать при обнаружении неисправности — проанализировать Журнал регистрации в базе 1С:Бухгалтерия. Часто пользователи полагают, что если обмен завершился без явного окна ошибки, то "ошибок нет". Однако это заблуждение: документы могут загрузиться, но не провестись из-за исключений, которые подавляются механизмом обмена для сохранения целостности сообщения.

Проанализируем типичную ошибку, возникающую при попытке записи объекта во время обмена:


Ошибка записи объекта
ТипОбъекта = Поступление доп. расходов
Объект = Поступление доп. расходов 27 от 09.04.2021
ОписаниеОшибки = Не удалось записать: "Поступление доп. расходов"!
ПозицияМодуля = {ОбщийМодуль.ОбменДаннымиXDTOСервер.Модуль(2416)}: Объект.Записать;

Обратите внимание, что ошибка возникает непосредственно при вызове метода Объект.Записать(РежимЗаписиДокумента.Проведение). Это означает, что данные в документе формально заполнены, но встроенные проверки конфигурации (например, в процедуре ПередЗаписью или ОбработкаПроверкиЗаполнения) возвращают Отказ = Истина.

Проверка настроек синхронизации данных

Прежде чем приступать к программированию, нам необходимо убедиться, что включена соответствующая функциональная опция в самой программе. В современных версиях БП 3.0 флаг автоматического проведения находится внутри настроек конкретного узла обмена.

Выполним следующие шаги для проверки:

  1. Перейдем в раздел Администрирование — Синхронизация данных.
  2. Откроем Настройки синхронизации данных.
  3. Выберем текущую настройку обмена с УТ 11 и нажмем Изменить настройки (кнопка с изображением карандаша).
  4. На вкладке Правила получения данных проверим наличие и состояние флага Проводить документы при получении.

Если этот флаг установлен, но документы всё равно остаются не проведенными, значит, проблема кроется в несоответствии структуры данных (XDTO-пакетов) между старой УТ и новой БП.

Причина в формате EnterpriseData и новых реквизитах

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

Старая УТ 11.2 использует формат обмена EnterpriseData версии 1.3 или 1.4, в то время как новая БП ожидает версию 1.10 и выше. При загрузке документа 1С пытается сопоставить поля. Если новое обязательное поле в БП отсутствует в данных из УТ, документ может записаться в режиме ОбменДанными.Загрузка = Истина, но при попытке проведения система выдаст отказ, так как логика проведения требует наличия этих данных.

Решение проблемы через расширение конфигурации

Поскольку обновлять УТ 11.2 часто невозможно из-за большого количества доработок, нам необходимо скорректировать поведение БП 3.0. Использовать старые правила обмена (подменять МенеджерОбменаЧерезУниверсальныйФормат на версию из старых релизов) категорически не рекомендуется, так как это приведет к полной неработоспособности обмена из-за несоответствия типов.

Правильным подходом будет использование расширения конфигурации для дозаполнения недостающих реквизитов. Нам нужно вмешаться в процесс конвертации XDTO-объекта в объект информационной базы.

Рассмотрим пример программного кода в модуле менеджера обмена через расширение. Мы можем переопределить обработчик, который вызывается после загрузки данных, чтобы программно заполнить "пустые" места в документах:


&После("ПРиЧтенииОбъектаXDTO")
Процедура Расш_ПРиЧтенииОбъектаXDTO(КомпонентыОбмена, ДанныеXDTO, Объект, ПравилоКонвертации)
    
    Если ПравилоКонвертации.Имя = "ПоступлениеДопРасходов" Тогда
        // Заполняем новые реквизиты, о которых не знает старая УТ
        Если Объект.СпособРаспределения.Пустая() Тогда
            Объект.СпособРаспределения = Перечисления.СпособыРаспределенияДопРасходов.ПоСумме;
        КонецЕсли;
        
        // Пример заполнения специфических настроек НДС для прослеживаемости
        // Объект.СтатусУказанияГТД = ...
    КонецЕсли;

КонецПроцедуры

Диагностика через Конфигуратор

Если вы не уверены, какой именно реквизит мешает проведению, воспользуемся методом отладки:

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

Заключение

Проблема непроведения документов при обмене между старыми и новыми версиями конфигураций почти всегда связана с эволюцией структуры данных. Документ в БП 3.0 "хочет" видеть информацию о налоговых режимах или РНПТ, которую УТ 11.2 просто не умеет отправлять. Решение через расширение с использованием метода ПриЧтенииОбъектаXDTO является наиболее безопасным и технологичным, так как оно не затрагивает основную конфигурацию и позволяет точечно "подправить" данные для успешного проведения.

← На главную