Обмен данными между конфигурациями "Управление торговлей 10.3" и "Бухгалтерия предприятия 2.0" (на платформе 1С 8.2 или 8.3 в режиме обычных форм) часто строится на технологии "Конвертация данных 2.0" (КД 2.0). Несмотря на то что это проверенный временем механизм, разработчики часто сталкиваются с ситуациями, когда документы переносятся не полностью, не проводятся или реквизиты заполняются "через раз". В этой статье мы подробно разберем причины возникновения таких ошибок и предложим проверенные программные решения.
Рассмотрим ситуацию, когда в документе РеализацияТоваровУслуг в базе 1С:Бухгалтерия необходимо заполнить реквизит Сделка ссылкой на ЗаказПокупателя, который в БП должен выглядеть как СчетНаОплатуПокупателю. Часто разработчики пытаются решить это через обработчик ПередВыгрузкой в правилах конвертации свойств (ПКС), используя код:
Если ТипЗнч(Источник.Сделка) <> Тип("ДокументСсылка.ЗаказПокупателя") Тогда
Отказ = Истина;
Иначе
ИмяПКО = "ЗаказПокупателяСчетНаОплатуПокупателю";
КонецЕсли;
Однако на практике такое заполнение может работать нестабильно. Давайте проанализируем, почему это происходит. Основная причина "хаотичности" заключается в порядке следования объектов в файле выгрузки. Если документ РеализацияТоваровУслуг загружается в базу-приемник раньше, чем документ ЗаказПокупателя, ссылка в поле "Сделка" может остаться пустой (объект еще не создан).
Чтобы решить эту задачу, мы рекомендуем выполнить следующие действия:
ЗаказПокупателяСчетНаОплатуПокупателю необходимо проверить, по каким полям идет поиск. Если поиск настроен только по внутреннему идентификатору (GUID), а документы ранее создавались в обеих базах вручную, система их не "склеит". Настройте поиск по номеру и дате.ПослеЗагрузки, когда объект уже гарантированно находится в базе.Проанализируем распространенную ошибку, когда при попытке проведения загруженного счета-фактуры система выдает сообщение о незаполненном реквизите ВидСчетаФактуры, хотя визуально в форме он может отображаться корректно. Это происходит из-за особенностей работы типовых конфигураций 1С. В БП 2.0 реквизит ВидСчетаФактуры — это ПеречислениеСсылка.ВидСчетаФактурыВыданного.
Выясним причину: При ручном создании документа значение подставляется автоматически процедурами формы. При обмене форма не открывается, и если в ПКО этот реквизит не сопоставлен явно, он остается пустым в базе данных. Визуальное отображение при открытии — это часто результат работы логики "при открытии", которая не записывает данные в сам объект до нажатия кнопки "ОК".
Для исправления этого в правилах конвертации (КД 2.0) для документа СчетФактураВыданный в обработчике ПередЗагрузкой или ПриЗагрузке следует прописать жесткую установку значения:
Объект.ВидСчетаФактуры = Перечисления.ВидСчетаФактурыВыданного.НаРеализацию;
Это гарантирует, что при записи объекта в базу реквизит будет иметь правильное значение, и проверка при проведении будет пройдена успешно.
Многие пользователи ожидают, что после обмена документы в БП 2.0 сразу станут проведенными. Но реализация этого процесса требует учета нескольких факторов. Давайте разберем, как правильно организовать проведение документов в правилах обмена, не меняя код самой конфигурации.
Самый правильный способ — использовать обработчик «ПослеЗагрузки» в правилах конвертации объекта. Рассмотрим пример кода, который попытается провести документ сразу после того, как он был загружен и записан:
Если Объект.Проведен Или Источник.Проведен Тогда
Попытка
Объект.Записать(РежимЗаписиДокумента.Проведение);
Исключение
Сообщить("Не удалось провести документ: " + Объект + " - " + ОписаниеОшибки());
КонецПопытки;
КонецЕсли;
Важные нюансы проведения:
СчетаУчетаНоменклатуры. Если для какого-то товара счет не задан, документ не проведется. Перед запуском обмена убедитесь, что в БП настроены счета учета для всех групп товаров.СчетФактураВыданный не проведется, пока не проведено его основание (РеализацияТоваровУслуг). Поэтому в правилах обмена важно соблюдать последовательность: сначала загружается и проводится реализация, затем — счет-фактура.Если вы сталкиваетесь с тем, что проведение в момент загрузки сильно тормозит обмен или выдает слишком много ошибок из-за неполных данных, рассмотрим альтернативный подход — отложенное проведение.
В типовых обменах 1С предусмотрен механизм, когда документы загружаются только в режиме записи, а информация о необходимости их проведения помещается в специальный регистр. Затем, используя обработку "Безопасное проведение документов" или "Групповое перепроведение", бухгалтер может запустить процесс массово. Это позволяет сначала исправить все ошибки заполнения (счета учета, аналитику), а уже потом провести все документы одним махом.
Подведем итоги совместной работы:
Для стабильного обмена УТ 10.3 — БП 2.0 нам необходимо:
ИмяПКО для связанных документов, чтобы избежать пустых полей в реквизитах типа Сделка.ВидСчетаФактуры) в правилах КД 2.0, чтобы избежать ошибок инициализации.ПослеЗагрузки для вызова метода Записать(РежимЗаписиДокумента.Проведение), предварительно убедившись в наличии всех необходимых данных (счетов учета) в приемнике.Следуя этим шагам, мы добьемся корректного и автоматизированного переноса данных, исключив необходимость ручного вмешательства бухгалтера после каждого сеанса обмена.