Почему не полностью работает обмен УТ 10.3 — БП 2.0 и как это исправить?

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

Обмен данными между конфигурациями "Управление торговлей 10.3" и "Бухгалтерия предприятия 2.0" (на платформе 1С 8.2 или 8.3 в режиме обычных форм) часто строится на технологии "Конвертация данных 2.0" (КД 2.0). Несмотря на то что это проверенный временем механизм, разработчики часто сталкиваются с ситуациями, когда документы переносятся не полностью, не проводятся или реквизиты заполняются "через раз". В этой статье мы подробно разберем причины возникновения таких ошибок и предложим проверенные программные решения.

Проблема 1: Хаотичное заполнение Счета на оплату (Сделки) в реализации

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


Если ТипЗнч(Источник.Сделка) <> Тип("ДокументСсылка.ЗаказПокупателя") Тогда
    Отказ = Истина;
Иначе
    ИмяПКО = "ЗаказПокупателяСчетНаОплатуПокупателю";
КонецЕсли;

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

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

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

Проблема 2: Ошибка «Не заполнено значение реквизита "Вид счета-фактуры"»

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

Выясним причину: При ручном создании документа значение подставляется автоматически процедурами формы. При обмене форма не открывается, и если в ПКО этот реквизит не сопоставлен явно, он остается пустым в базе данных. Визуальное отображение при открытии — это часто результат работы логики "при открытии", которая не записывает данные в сам объект до нажатия кнопки "ОК".

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

Объект.ВидСчетаФактуры = Перечисления.ВидСчетаФактурыВыданного.НаРеализацию;

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

Проблема 3: Автоматическое проведение документов при обмене

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

Самый правильный способ — использовать обработчик «ПослеЗагрузки» в правилах конвертации объекта. Рассмотрим пример кода, который попытается провести документ сразу после того, как он был загружен и записан:


Если Объект.Проведен Или Источник.Проведен Тогда
    Попытка
        Объект.Записать(РежимЗаписиДокумента.Проведение);
    Исключение
        Сообщить("Не удалось провести документ: " + Объект + " - " + ОписаниеОшибки());
    КонецПопытки;
КонецЕсли;

Важные нюансы проведения:

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

Использование механизма «Отложенного проведения»

Если вы сталкиваетесь с тем, что проведение в момент загрузки сильно тормозит обмен или выдает слишком много ошибок из-за неполных данных, рассмотрим альтернативный подход — отложенное проведение.

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

Подведем итоги совместной работы:

Для стабильного обмена УТ 10.3 — БП 2.0 нам необходимо:

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

← На главную