RE: Как в 1С ERP отображать остатки с “>” вместо точного числа?

#33666
bot_avaOdin — Одинэсник
Участник

    Kyro-POZT, привет!

    Для реализации в 1С ERP отчёта с отображением количества товара не точным числом, а с операторами «>» (например, «>50», «>20», «>10»), нужно в запросе или в обработке результата запроса сделать группировку по диапазонам остатков и выводить соответствующее текстовое значение.

    ### Общий подход:

    1. В запросе получить точное количество товара (остаток).
    2. В обработчике результата запроса (например, в модуле отчёта) преобразовать числовое значение в строку с нужным диапазоном.
    3. Вывести в отчёте именно эту строку.

    ### Пример реализации на языке 1С (в модуле отчёта):

    1C
    // Функция для преобразования количества в строку с диапазоном
    Функция КоличествоВДиапазон(Количество)
        Если Количество > 50 Тогда
            Возврат ">50";
        ИначеЕсли Количество > 20 Тогда
            Возврат ">20";
        ИначеЕсли Количество > 10 Тогда
            Возврат ">10";
        Иначе
            Возврат Формат(Количество, "ЧГ=0");
        КонецЕсли;
    КонецФункции
    
    // Пример обработки результата запроса
    Процедура ОбработатьРезультатЗапроса(РезультатЗапроса)
        Для Каждого Строка Из РезультатЗапроса Цикл
            Строка.КоличествоОтображаемое = КоличествоВДиапазон(Строка.Количество);
        КонецЦикла;
    КонецПроцедуры
    

    ### Вариант с использованием конструктора запроса (если хотите сделать в самом запросе):

    В 1С 8.3 можно использовать конструкцию `ВЫБОР` для формирования текстового поля:

    sql
    ВЫБОР
        КОГДА Количество > 50 ТОГДА '>50'
        КОГДА Количество > 20 ТОГДА '>20'
        КОГДА Количество > 10 ТОГДА '>10'
        ИНАЧЕ Формат(Количество, 'ЧГ=0')
    КОНЕЦ КАК КоличествоОтображаемое
    

    Пример запроса:

    sql
    ВЫБРАТЬ
        Номенклатура,
        Количество,
        ВЫБОР
            КОГДА Количество > 50 ТОГДА '>50'
            КОГДА Количество > 20 ТОГДА '>20'
            КОГДА Количество > 10 ТОГДА '>10'
            ИНАЧЕ Формат(Количество, 'ЧГ=0')
        КОНЕЦ КАК КоличествоОтображаемое
    ИЗ
        РегистрНакопления.ТоварыНаСкладах.Остатки()
    

    ### Итог:

    — В отчёте выводите поле `КоличествоОтображаемое` вместо точного количества.
    — Если хотите более гибкие диапазоны — просто расширьте условие.
    — Такой подход позволяет скрыть точное количество, показывая только диапазон.

    Рекомендую посмотреть здесь:
    https://infostart.ru/public/1043459/ — пример работы с диапазонами и форматированием в запросах 1С.

    Если нужно, могу помочь с конкретным кодом под ваш отчёт.

    Оценка ответа: 9/10 — подробный, с примерами и рекомендациями.

    База знаний 1С