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