Как в 1С: УТ 10.3 найти контрагентов с движениями за определенный период?

Программист 1С v8.3 (Обычные формы) 1С:Управление торговлей Управленческий учет Торговля и дистрибуция
← На главную

Часто перед бизнесом встает задача проанализировать активность клиентской базы: выяснить, кто из покупателей или поставщиков совершал операции за последнее время, а с кем работа давно не велась. В этой статье мы подробно разберем, как в конфигурации «1С: Управление торговлей 10.3» найти всех контрагентов, по которым были продажи или закупки за последние три года, а также как отфильтровать этот список по конкретным папкам справочника.

Рассмотрим два основных подхода к решению этой задачи: простой, с использованием стандартных отчетов, который подойдет любому пользователю, и более гибкий, с помощью запросов к данным, предназначенный для продвинутых пользователей и разработчиков.

Способ 1: Использование стандартных отчетов

Этот метод является самым быстрым и не требует навыков программирования. Он идеально подходит для получения быстрой выборки данных напрямую из интерфейса программы.

  1. Анализ продаж (Покупатели)

    Для поиска покупателей, с которыми были сделки, воспользуемся отчетом "Продажи". Перейдите в меню: Отчеты -> Продажи -> Продажи.

    В настройках отчета выполните следующие действия:

    • Установите необходимый период (например, за последние 3 года).
    • Нажмите кнопку "Настройка..." и перейдите на вкладку "Отбор".
    • Добавьте новый элемент отбора. В поле "Поле" выберите Контрагент.
    • В поле "Вид сравнения" установите значение В группе.
    • В поле "Значение" укажите нужную вам папку, например, "Покупатели".

    После формирования отчета вы получите список всех контрагентов из папки "Покупатели", по которым были зафиксированы продажи за указанный период. Контрагенты, по которым движений не было, в отчет не попадут.

  2. Анализ закупок (Поставщики)

    Аналогичным образом можно получить список активных поставщиков. Для этого используйте отчет "Закупки" (Отчеты -> Закупки -> Закупки).

    Настройки идентичны: установите период и настройте отбор по полю Контрагент с видом сравнения В группе, указав папку "Поставщики".

  3. Комплексный анализ через "Ведомость по взаиморасчетам"

    Если вам нужен более полный анализ, включающий не только продажи и закупки, но и оплаты, возвраты и другие операции, лучше всего подойдет отчет "Ведомость по взаиморасчетам с контрагентами". Он покажет всех контрагентов, по которым было любое движение за период.

Важный момент: при строгом отборе по папкам вы можете упустить нестандартные ситуации. Например, если контрагенту из группы "Поставщики" по какой-то причине была оформлена продажа, в отчете "Продажи" с отбором по группе "Покупатели" вы его не увидите. Если ваша задача — проанализировать активность контрагентов, находящихся именно в этих папках, то данный метод подходит идеально. Если же нужно найти все продажи, независимо от того, в какой папке находится контрагент, отбор по группе лучше не использовать.

Способ 2: Формирование запроса к регистрам накопления

Этот метод предназначен для разработчиков и тех, кто знаком с языком запросов 1С. Он предоставляет максимальную гибкость и позволяет получить данные в любом удобном виде, минуя стандартные отчеты.

Основным источником данных о движениях по контрагентам в УТ 10.3 является регистр накопления ВзаиморасчетыСКонтрагентами. Мы можем обратиться к его виртуальной таблице оборотов, чтобы получить список контрагентов, у которых были движения за период.

Ключевая задача — отобрать контрагентов, находящихся в нужных нам папках ("Покупатели" и "Поставщики"). Для этого в языке запросов 1С существует специальная конструкция В ИЕРАРХИИ.

Рассмотрим пример запроса, который решает нашу задачу:


ВЫБРАТЬ РАЗЛИЧНЫЕ
    ВзаиморасчетыСКонтрагентамиОбороты.Контрагент
ИЗ
    РегистрНакопления.ВзаиморасчетыСКонтрагентами.Обороты(&НачалоПериода, &КонецПериода, , ) КАК ВзаиморасчетыСКонтрагентамиОбороты
ГДЕ
    (ВзаиморасчетыСКонтрагентамиОбороты.Контрагент В ИЕРАРХИИ(&ПапкаПокупатели)
        ИЛИ ВзаиморасчетыСКонтрагентамиОбороты.Контрагент В ИЕРАРХИИ(&ПапкаПоставщики))

Разберем этот запрос по шагам:

  1. ВЫБРАТЬ РАЗЛИЧНЫЕ ... Контрагент — мы выбираем уникальные ссылки на контрагентов.
  2. ИЗ РегистрНакопления.ВзаиморасчетыСКонтрагентами.Обороты(&НачалоПериода, &КонецПериода, , ) — мы обращаемся к виртуальной таблице оборотов регистра за указанный период. Она содержит итоговые данные и работает быстрее, чем обращение к основной таблице движений.
  3. ГДЕ ( ... ) — это условие отбора, самая важная часть.
  4. Контрагент В ИЕРАРХИИ(&ПапкаПокупатели) — это условие проверяет, находится ли контрагент из записи регистра внутри папки, переданной в параметре &ПапкаПокупатели, или в любой из ее дочерних папок.
  5. ИЛИ Контрагент В ИЕРАРХИИ(&ПапкаПоставщики) — аналогично проверяется принадлежность к папке поставщиков.

Таким образом, в результат запроса попадут только те контрагенты, которые находятся в указанных иерархических группах и по которым были обороты (т.е. движения) в заданном периоде.

Альтернативный вариант запроса с использованием временных таблиц:

Иногда, для улучшения читаемости или оптимизации сложных запросов, удобнее сначала выбрать нужных контрагентов во временную таблицу, а затем уже соединять ее с регистром.


ВЫБРАТЬ
    Контрагенты.Ссылка
ПОМЕСТИТЬ ВТ_НужныеКонтрагенты
ИЗ
    Справочник.Контрагенты КАК Контрагенты
ГДЕ
    (Контрагенты.Ссылка В ИЕРАРХИИ(&ПапкаПокупатели)
        ИЛИ Контрагенты.Ссылка В ИЕРАРХИИ(&ПапкаПоставщики));

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
    Взаиморасчеты.Контрагент
ИЗ
    РегистрНакопления.ВзаиморасчетыСКонтрагентами.Обороты(&НачалоПериода, &КонецПериода, , 
        Контрагент В (ВЫБРАТЬ Ссылка ИЗ ВТ_НужныеКонтрагенты)) КАК Взаиморасчеты

В этом варианте мы сначала помещаем всех контрагентов из нужных папок во временную таблицу ВТ_НужныеКонтрагенты, а затем, при обращении к регистру оборотов, используем эту таблицу в качестве условия отбора. Результат будет идентичным первому запросу.

Вместо регистра ВзаиморасчетыСКонтрагентами можно использовать регистры Продажи и Закупки, если вам нужен анализ именно факта отгрузки или поступления товаров, а не всех финансовых операций.

В итоге, выбор способа зависит от ваших навыков и конкретной задачи. Для большинства пользователей будет достаточно возможностей стандартных отчетов, а для более глубокого анализа и интеграции данных в другие системы незаменимым инструментом станет прямой запрос к регистрам.

← На главную