При работе в конфигурации 1С:Комплексная автоматизация 2.4 (или аналогичных решениях ERP 2.4/2.5) пользователи часто сталкиваются с неприятной ситуацией: в регламентированном отчете «Книга покупок» в 13-й колонке не выводятся номера ГТД. При этом в документах Приобретение товаров и услуг все данные заполнены корректно, а в самой книге номера могут выводиться выборочно — например, 3 из 5 позиций или 10 из 13. Проанализируем причины этой проблемы и разберем по шагам методы её решения.
Основная причина кроется в изменении архитектуры хранения данных в справочнике НомераГТД, которое произошло в последних релизах веток 2.4 и 2.5. Рассмотрим подробнее, что изменилось. Раньше номер таможенной декларации хранился непосредственно в стандартном поле Код. Однако в связи с внедрением системы прослеживаемости товаров (РНПТ) компания 1С добавила новый реквизит — Регистрационный номер.
Алгоритм формирования Книги покупок в новых релизах был переписан: теперь программа обращается именно к этому новому реквизиту РегистрационныйНомер, а не к полю Код. Если ваша база данных обновлялась с более старых версий или данные переносились из других программ, этот реквизит может оказаться пустым, хотя визуально в карточке ГТД номер виден (так как отображается код). Если поле Регистрационный номер пустое, то и 13-я колонка Книги покупок остается незаполненной.
Проанализируем самый простой способ, который помогает убедиться в правильности диагноза. Если номеров немного, выполним следующие действия:
Номера ГТД.При записи элемента срабатывают внутренние обработчики 1С, которые автоматически копируют данные из Кода в скрытый реквизит Регистрационный номер. После этого переформируем Книгу покупок — номер должен появиться.
Если записей сотни или тысячи, ручная правка нецелесообразна. Рассмотрим, как воспользоваться штатным инструментом Групповое изменение реквизитов:
Регистрационный номер.Для программистов и системных администраторов наиболее надежным решением будет использование внешней обработки. Разберем пример кода, который обходит документы приобретения и реализации за определенный период и восстанавливает корректные значения в справочнике НомераГТД.
Выясним причину использования именно такого подхода: код проверяет наличие пустых регистрационных номеров и заполняет их на основе данных из поля Код, учитывая специфику прослеживаемых товаров (РНПТ).
&НаСервере
Процедура ЗаполнитьПустыеРегистрационныеНомераНаСервере()
НачалоОбработки = ТекущаяДата();
ОбработаноЭлементов = 0;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| ПриобретениеТоваровУслугТовары.НомерГТД.Ссылка КАК Ссылка
|ИЗ
| Документ.ПриобретениеТоваровУслуг.Товары КАК ПриобретениеТоваровУслугТовары
|ГДЕ
| ПриобретениеТоваровУслугТовары.Ссылка.Дата >= &ДатаНачала
| И ПриобретениеТоваровУслугТовары.НомерГТД.РегистрационныйНомер = """"
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| РеализацияТоваровУслугВидыЗапасов.НомерГТД.Ссылка КАК Ссылка
|ИЗ
| Документ.РеализацияТоваровУслуг.ВидыЗапасов КАК РеализацияТоваровУслугВидыЗапасов
|ГДЕ
| РеализацияТоваровУслугВидыЗапасов.Ссылка.Дата >= &ДатаНачала
| И РеализацияТоваровУслугВидыЗапасов.НомерГТД.РегистрационныйНомер = """"";
Запрос.УстановитьПараметр("ДатаНачала", ДатаНачала);
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
НомерГТДОбъект = Выборка.Ссылка.ПолучитьОбъект();
Если НомерГТДОбъект.РНПТ Тогда
НомерГТДОбъект.РегистрационныйНомер = НомерГТДОбъект.Код;
Иначе
// Используем типовой метод справочника для разбора номера
Реквизиты = Справочники.НомераГТД.РегистрационныйНомерИСтранаВвоза(НомерГТДОбъект.Код);
Заполнитель = "РегистрационныйНомер,СтранаВвозаНеРФ,ПорядковыйНомерТовара";
ЗаполнитьЗначенияСвойств(НомерГТДОбъект, Реквизиты, Заполнитель);
КонецЕсли;
Попытка
НомерГТДОбъект.Записать();
ОбработаноЭлементов = ОбработаноЭлементов + 1;
Исключение
Сообщить("Ошибка записи ГТД: " + Выборка.Ссылка);
КонецПопытки;
КонецЦикла;
Сообщить("Обработка завершена. Обновлено элементов: " + ОбработаноЭлементов);
КонецПроцедуры
Если исправление справочника не помогло, проанализируем ситуацию глубже. Книга покупок в 1С:КА 2.4 строится на основании данных регистра накопления НДС Покупки. В этот регистр данные попадают в момент проведения документов приобретения.
Рассмотрим важный нюанс: информация о ГТД в системе КА/ERP хранится в табличной части Виды запасов. Если на момент проведения документа Приобретение товаров и услуг система не смогла корректно определить вид запасов (например, из-за отключенного учета по ГТД в настройках номенклатуры), то в регистры НДС номер ГТД не попадет.
Проверим следующие настройки:
Учет по номерам ГТД.Открыть виды запасов. Убедитесь, что колонка с номером ГТД заполнена именно в этой технической таблице. Если она пуста, потребуется перепроведение документа после исправления карточки номенклатуры или настроек политики учета.Таким образом, в большинстве случаев проблема решается обновлением скрытого реквизита Регистрационный номер в справочнике ГТД, но в сложных случаях может потребоваться перепроведение документов для актуализации регистров накопления.