Довольно часто при оптовых продажах покупатели запрашивают в прайс-листах информацию о номере грузовой таможенной декларации (ГТД) и стране происхождения товара. Возникает закономерный вопрос: как правильно реализовать вывод актуального номера ГТД, который с наибольшей вероятностью попадет в итоговые документы (например, в УПД)? Разберем по шагам, какие архитектурные нюансы современных конфигураций 1С (таких как 1С:УТ 11, 1С:КА 2 или 1С:ERP) необходимо учесть для решения этой задачи.
Проанализируем ситуацию. Обращение напрямую к справочнику НомераГТД не даст нужного результата, так как в нем хранятся абсолютно все декларации: и новые, и те, по которым товары уже давно распроданы. Нам нужны только актуальные остатки.
Для корректного получения данных мы рассмотрим использование следующих регистров накопления:
В современных конфигурациях 1С данные о ГТД часто не хранятся напрямую в регистрах остатков. Система использует механизм ключей аналитики для оптимизации базы данных. Чтобы получить номер декларации, нам необходимо соединить регистр с остатками и регистр сведений АналитикаУчетаНоменклатуры.
Посмотрим на пример запроса, который позволяет вытащить нужные данные:
ВЫБРАТЬ
ОстаткиТоваров.Номенклатура КАК Номенклатура,
Аналитика.НомерГТД КАК НомерГТД,
ОстаткиТоваров.КоличествоОстаток КАК Количество
ИЗ
РегистрНакопления.ТоварыОрганизаций.Остатки(&Период, ) КАК ОстаткиТоваров
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АналитикаУчетаНоменклатуры КАК Аналитика
ПО ОстаткиТоваров.КлючАналитики = Аналитика.КлючАналитики
ГДЕ
ОстаткиТоваров.КоличествоОстаток > 0
И Аналитика.НомерГТД <> ЗНАЧЕНИЕ(Справочник.НомераГТД.ПустаяСсылка)
Важно понимать: в 1С номера ГТД списываются по методу FIFO (First In, First Out). Для максимально точного отображения в прайс-листе «того самого» номера, который программа подставит в УПД, недостаточно просто взять любые остатки.
Рассмотрим подробнее этот нюанс. Нужно строить запрос так, чтобы он выбирал остатки в разрезе ГТД и сортировал их по дате поступления партии. В прайс-лист следует выводить номер из самой «старой» активной партии. Именно этот номер будет предложен программой при автоматическом заполнении видов запасов в документе реализации.
Выясним причину частых ошибок при доработке прайсов. Если на одну позицию товара на складе числится 5–10 разных номеров ГТД (разные поставки), вывод их всех в одну ячейку прайс-листа может сломать верстку отчета. На практике применяют два подхода:
СоединитьСтроки в языке запросов Системы компоновки данных (СКД). Этот вариант более информативен для покупателя, но значительно замедляет формирование прайс-листа при больших объемах номенклатуры.Прайс-лист в 1С строится на базе СКД. Чтобы добавить ГТД, оптимально использовать механизм расширений конфигурации. Вы можете добавить в схему компоновки прайс-листа дополнительный набор данных (связав его с основным набором по номенклатуре). Это позволит избежать проблем при будущих обновлениях базы и даст возможность пользователю самостоятельно включать или отключать колонку с ГТД через пользовательские настройки отчета.
Перед началом разработки проанализируем настройки самой базы. Убедитесь, что в системе включены функциональные опции:
Если эти флаги не установлены, поля ГТД в регистрах и аналитиках могут оставаться пустыми или не контролироваться системой. Также обратите внимание на настройку «Раздельный учет по ГТД» в учетной политике вашей организации.
Иногда разработка усложненного прайс-листа экономически нецелесообразна, особенно если остатки меняются ежеминутно. В качестве альтернативы предложите пользователям использовать уже готовые типовые отчеты системы:
Если клиент берет много и хочет видеть актуальные данные, можно настроить автоматическую рассылку этих отчетов вместе с классическим прайс-листом.
Для крупных оптовых компаний формирование прайс-листа с динамическим расчетом ГТД по FIFO в реальном времени может вызывать зависания. В качестве архитектурного решения часто внедряют регламентное задание. Такое задание (например, раз в час) собирает данные об актуальных ГТД в отдельный вспомогательный непериодический регистр сведений. А сам прайс-лист при формировании просто делает элементарное левое соединение с этим регистром, получая данные мгновенно без сложных вычислений.