Часто перед бизнесом встает задача проанализировать активность клиентской базы: выяснить, кто из покупателей или поставщиков совершал операции за последнее время, а с кем работа давно не велась. В этой статье мы подробно разберем, как в конфигурации «1С: Управление торговлей 10.3» найти всех контрагентов, по которым были продажи или закупки за последние три года, а также как отфильтровать этот список по конкретным папкам справочника.
Рассмотрим два основных подхода к решению этой задачи: простой, с использованием стандартных отчетов, который подойдет любому пользователю, и более гибкий, с помощью запросов к данным, предназначенный для продвинутых пользователей и разработчиков.
Этот метод является самым быстрым и не требует навыков программирования. Он идеально подходит для получения быстрой выборки данных напрямую из интерфейса программы.
Для поиска покупателей, с которыми были сделки, воспользуемся отчетом "Продажи". Перейдите в меню: Отчеты -> Продажи -> Продажи.
В настройках отчета выполните следующие действия:
Контрагент.В группе.После формирования отчета вы получите список всех контрагентов из папки "Покупатели", по которым были зафиксированы продажи за указанный период. Контрагенты, по которым движений не было, в отчет не попадут.
Аналогичным образом можно получить список активных поставщиков. Для этого используйте отчет "Закупки" (Отчеты -> Закупки -> Закупки).
Настройки идентичны: установите период и настройте отбор по полю Контрагент с видом сравнения В группе, указав папку "Поставщики".
Если вам нужен более полный анализ, включающий не только продажи и закупки, но и оплаты, возвраты и другие операции, лучше всего подойдет отчет "Ведомость по взаиморасчетам с контрагентами". Он покажет всех контрагентов, по которым было любое движение за период.
Важный момент: при строгом отборе по папкам вы можете упустить нестандартные ситуации. Например, если контрагенту из группы "Поставщики" по какой-то причине была оформлена продажа, в отчете "Продажи" с отбором по группе "Покупатели" вы его не увидите. Если ваша задача — проанализировать активность контрагентов, находящихся именно в этих папках, то данный метод подходит идеально. Если же нужно найти все продажи, независимо от того, в какой папке находится контрагент, отбор по группе лучше не использовать.
Этот метод предназначен для разработчиков и тех, кто знаком с языком запросов 1С. Он предоставляет максимальную гибкость и позволяет получить данные в любом удобном виде, минуя стандартные отчеты.
Основным источником данных о движениях по контрагентам в УТ 10.3 является регистр накопления ВзаиморасчетыСКонтрагентами. Мы можем обратиться к его виртуальной таблице оборотов, чтобы получить список контрагентов, у которых были движения за период.
Ключевая задача — отобрать контрагентов, находящихся в нужных нам папках ("Покупатели" и "Поставщики"). Для этого в языке запросов 1С существует специальная конструкция В ИЕРАРХИИ.
Рассмотрим пример запроса, который решает нашу задачу:
ВЫБРАТЬ РАЗЛИЧНЫЕ
ВзаиморасчетыСКонтрагентамиОбороты.Контрагент
ИЗ
РегистрНакопления.ВзаиморасчетыСКонтрагентами.Обороты(&НачалоПериода, &КонецПериода, , ) КАК ВзаиморасчетыСКонтрагентамиОбороты
ГДЕ
(ВзаиморасчетыСКонтрагентамиОбороты.Контрагент В ИЕРАРХИИ(&ПапкаПокупатели)
ИЛИ ВзаиморасчетыСКонтрагентамиОбороты.Контрагент В ИЕРАРХИИ(&ПапкаПоставщики))
Разберем этот запрос по шагам:
ВЫБРАТЬ РАЗЛИЧНЫЕ ... Контрагент — мы выбираем уникальные ссылки на контрагентов.ИЗ РегистрНакопления.ВзаиморасчетыСКонтрагентами.Обороты(&НачалоПериода, &КонецПериода, , ) — мы обращаемся к виртуальной таблице оборотов регистра за указанный период. Она содержит итоговые данные и работает быстрее, чем обращение к основной таблице движений.ГДЕ ( ... ) — это условие отбора, самая важная часть.Контрагент В ИЕРАРХИИ(&ПапкаПокупатели) — это условие проверяет, находится ли контрагент из записи регистра внутри папки, переданной в параметре &ПапкаПокупатели, или в любой из ее дочерних папок.ИЛИ Контрагент В ИЕРАРХИИ(&ПапкаПоставщики) — аналогично проверяется принадлежность к папке поставщиков.Таким образом, в результат запроса попадут только те контрагенты, которые находятся в указанных иерархических группах и по которым были обороты (т.е. движения) в заданном периоде.
Альтернативный вариант запроса с использованием временных таблиц:
Иногда, для улучшения читаемости или оптимизации сложных запросов, удобнее сначала выбрать нужных контрагентов во временную таблицу, а затем уже соединять ее с регистром.
ВЫБРАТЬ
Контрагенты.Ссылка
ПОМЕСТИТЬ ВТ_НужныеКонтрагенты
ИЗ
Справочник.Контрагенты КАК Контрагенты
ГДЕ
(Контрагенты.Ссылка В ИЕРАРХИИ(&ПапкаПокупатели)
ИЛИ Контрагенты.Ссылка В ИЕРАРХИИ(&ПапкаПоставщики));
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
Взаиморасчеты.Контрагент
ИЗ
РегистрНакопления.ВзаиморасчетыСКонтрагентами.Обороты(&НачалоПериода, &КонецПериода, ,
Контрагент В (ВЫБРАТЬ Ссылка ИЗ ВТ_НужныеКонтрагенты)) КАК Взаиморасчеты
В этом варианте мы сначала помещаем всех контрагентов из нужных папок во временную таблицу ВТ_НужныеКонтрагенты, а затем, при обращении к регистру оборотов, используем эту таблицу в качестве условия отбора. Результат будет идентичным первому запросу.
Вместо регистра ВзаиморасчетыСКонтрагентами можно использовать регистры Продажи и Закупки, если вам нужен анализ именно факта отгрузки или поступления товаров, а не всех финансовых операций.
В итоге, выбор способа зависит от ваших навыков и конкретной задачи. Для большинства пользователей будет достаточно возможностей стандартных отчетов, а для более глубокого анализа и интеграции данных в другие системы незаменимым инструментом станет прямой запрос к регистрам.