При разработке внешних отчетов в 1С:Управление торговлей 11.4 часто возникает задача вывести информацию о скидках, примененных к конкретной номенклатуре в документе. Пользователи сталкиваются с трудностями при попытке связать данные табличной части Товары с таблицей скидок, получая дублирование записей или неверные суммы. Рассмотрим, как правильно решить эту задачу.
Прежде чем приступать к написанию запроса, важно понять архитектуру хранения данных в 1С. В типовых конфигурациях на базе БСП (Библиотека стандартных подсистем), таких как Управление торговлей 11, скидки не всегда являются частью основного объекта документа. Они часто выносятся в отдельные табличные части или дополнительные структуры данных, чтобы обеспечить гибкость механизма автоматических скидок.
Основная причина проблем при запросе заключается в том, что скидка может применяться как к отдельной строке товара, так и ко всему документу целиком. Если вы просто пытаетесь соединить таблицу Товары и таблицу скидок по ссылке на документ, система создает декартово произведение, из-за чего количество строк в выборке возрастает многократно.
Для корректной идентификации того, какая скидка относится к какому товару, используйте КлючСтроки. Это технический идентификатор, который присутствует как в табличной части Товары, так и в табличных частях, хранящих информацию о скидках.
Рассмотрим структуру запроса для связи. При обновлении программы и переходе с редакции 10.3 на современную платформу пригодится перенос данных УТ 10.3 — УТ 11:
ВЫБРАТЬ
Товары.Номенклатура,
Товары.Цена,
Товары.Сумма,
Скидки.СкидкаНаценка КАК ВидСкидки,
Скидки.СуммаСкидкиНаценки
ИЗ
Документ.РеализацияТоваровУслуг.Товары КАК Товары
ЛЕВОЕ СОЕДИНЕНИЕ
Документ.РеализацияТоваровУслуг.СкидкиНаценки КАК Скидки
ПО
Товары.Ссылка = Скидки.Ссылка
И Товары.КлючСтроки = Скидки.КлючСтроки
Использование связки Товары.Ссылка = Скидки.Ссылка И Товары.КлючСтроки = Скидки.КлючСтроки позволяет однозначно сопоставить строку товара и примененную к ней скидку, исключая дублирование.
В таблице скидок документа 1С может хранить историю применения скидок, включая те, что были отменены или не прошли условия автоматической проверки. При выводе данных вы можете увидеть «перечеркнутые» скидки или записи с нулевыми суммами.
Чтобы отчет был корректным, необходимо добавить условия фильтрации. Если отладка и тестирование запросов проводятся на копии базы, может потребоваться выборочное удаление организаций для очистки лишних данных. Рассмотрим, как это сделать:
Исключена или признака, указывающего на отмену скидки.ГДЕ вашего запроса, чтобы исключить отмененные записи.СуммаСкидкиНаценки не равна нулю, если вас интересуют только реально примененные скидки, повлиявшие на цену.Если ваша задача — получить отчет по продажам за большой период, обращение к табличным частям документов может быть непроизводительным. В таком случае рассмотрите регистр накопления ВыручкаИСебестоимостьПродаж.
Однако помните о важном нюансе: в регистрах данные о скидках часто хранятся в свернутом виде — сумма скидки уже вычтена из итоговой суммы продажи. Если вам необходимо вывести именно наименование скидки (например, «Сезонная скидка 10%»), обращение к табличным частям документа остается единственно верным и надежным способом, так как аналитика видов скидок в регистрах накопления по умолчанию не хранится.
Для успешной реализации отчета следуйте этим рекомендациям:
Консоли запросов. Это позволит увидеть все поля табличных частей и убедиться, что КлючСтроки заполнен корректно во всех записях.КлючуСтроки со значением 0 или ПустаяСсылка (это обычно означает скидку на весь документ, которая распределяется по товарам).Реализация товаров и услуг всегда есть кнопка «Примененные скидки». В конфигураторе посмотрите, как реализовано заполнение этой формы — это лучший способ понять логику системы из первых рук.Соблюдая эти шаги, вы сможете создать надежный и быстрый отчет, который будет корректно отображать все скидки, предоставленные покупателю в процессе реализации. Чтобы в систему автоматически попадали сведения о продажах и скидках с внешних площадок, можно использовать интеграцию 1С:УТ 11 с маркетплейсами.