При переносе документов реализации товаров между информационными базами (например, из одной базы 1С:Управление торговлей 11 в другую или при выгрузке в 1С:Бухгалтерию предприятия 3.0) разработчики часто сталкиваются с ситуацией, когда табличная часть Товары переносится успешно, но номера ГТД и страны происхождения пропадают. Выясним причину такого поведения системы, разберем архитектуру хранения импортных данных в УТ 11 и рассмотрим практические способы переноса данных.
В типовых конфигурациях на базе УТ 11 (включая КА 2 и ERP) номер ГТД не хранится непосредственно в табличной части Товары документа РеализацияТоваровУслуг. Разберем по шагам, как устроена эта схема:
Товары указывается только номенклатура, характеристика, количество и цена.ВидыЗапасов.ВидыЗапасов каждой строке проданного товара сопоставляется конкретный разрез учета: организация-владелец, вид запасов, страна происхождения и НомерГТД.ВидыЗапасов формируются движения по регистру накопления ТоварыОрганизаций.Именно поэтому стандартная выгрузка реквизитов только видимой табличной части не дает ожидаемого результата: на форме номера ГТД отсутствуют, а чтобы проверить их фактическое наличие в документе после загрузки, требуется обратиться напрямую к базе через консоль запросов.
Проанализируем состояние данных с помощью следующего запроса:
ВЫБРАТЬ
РеализацияТоваровУслугВидыЗапасов.Ссылка КАК Ссылка,
РеализацияТоваровУслугВидыЗапасов.ВидЗапасов КАК ВидЗапасов,
РеализацияТоваровУслугВидыЗапасов.НомерГТД КАК НомерГТД
ИЗ
Документ.РеализацияТоваровУслуг.ВидыЗапасов КАК РеализацияТоваровУслугВидыЗапасов
ГДЕ
РеализацияТоваровУслугВидыЗапасов.Ссылка = &ТекущийДокумент
Если запрос возвращает строки, значит, физически данные перенесены корректно, однако форма документа может их скрывать или затирать при последующих действиях.
Если задача заключается в переносе документов между двумя одинаковыми конфигурациями УТ 11, то универсальная обработка выгрузки и загрузки данных XML способна перенести документ целиком вместе с его подчиненными табличными частями. Однако здесь важно учитывать поведение системы при проведении:
Торговля импортным товаром и активирован учет видов запасов По номерам ГТД и странам происхождения. Если опции выключены, конфигурация проигнорирует перенесенные ГТД.ВидыЗапасов и попытается рассчитать их заново по остаткам регистра ТоварыОрганизаций. Если в базе-приемнике нет предшествующих документов поступления с этими же ГТД, проведение завершится ошибкой или ГТД очистится. Чтобы зафиксировать перенесенные данные, переключаем реквизит СпособЗаданияВидовЗапасов документа в значение Вручную.ТоварыОрганизаций.В конфигурациях вроде Бухгалтерия предприятия 3.0 номер ГТД и страна привязаны непосредственно к каждой строке товарной части. При этом в УТ 11 одна строка товара может списываться с нескольких разных номеров ГТД. В этом случае при выгрузке исходную строку ТЧ Товары необходимо расщеплять на несколько строк пропорционально данным из ВидыЗапасов.
Посмотрим на пример типового алгоритма выборки и подготовки данных в обработчике ПередВыгрузкой правила конвертации объектов (ПКО):
РезультатыЗапроса = Запросы.ТоварыИзВидовЗапасовДляРеализацииТУПродажа.ВыполнитьПакет();
ТабЧастьТовары = РезультатыЗапроса[4].Выгрузить();
СуммаТоваров = ТабЧастьТовары.Итог("Сумма");
ТабЧастьТара = РезультатыЗапроса[5].Выгрузить();
СуммаТары = ТабЧастьТара.Итог("Сумма");
ТабЧастьУслуги = РезультатыЗапроса[2].Выгрузить();
СуммаУслуг = ТабЧастьУслуги.Итог("Сумма");
ТабЧастьАгУслуги = РезультатыЗапроса[6].Выгрузить();
СуммаАгУслуг = ТабЧастьАгУслуги.Итог("Сумма");
Разберем подробнее, где найти логику расщепления строк в типовой конфигурации:
МенеджерОбменаЧерезУниверсальныйФормат.ПКО_Документ_РеализацияТоваровУслуг_Отправка_ПриОтправкеДанных.Товары и ВидыЗапасов, после чего количество и суммы разбиваются по строкам с конкретными ссылками на справочник НомераГТД.Используя этот же принцип в правилах конвертации (КД 2.0 или КД 3.0), мы гарантируем корректное заполнение ГТД в базе-приемнике без потери суммовых и количественных остатков.