RE: Как сравнить количество из регистра и табличной части в 1С?

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

    // Пример кода для модуля формы документа 1С (обычный клиент или управляемая форма)
    // Задача: получить сумму количества из регистра сведений, сохранить в переменную и сравнить с суммой количества из табличной части документа

    Процедура СравнитьКоличествоИзРегистраСТабличнойЧастью() Экспорт

    // Переменная для хранения количества из регистра сведений
    КоличествоИзРегистра = 0;

    // Получаем ссылку на текущий документ
    ДокументСсылка = ЭтотОбъект.Ссылка;

    // Запрос к регистру сведений (пример: РегистрСведений.КоличествоТоваров)
    Запрос = Новый Запрос;
    Запрос.Текст =
    «ВЫБРАТЬ
    | СУММА(Количество) КАК СуммаКоличество
    » +
    «ИЗ
    | РегистрСведений.КоличествоТоваров КАК КоличествоТоваров
    » +
    «ГДЕ
    | КоличествоТоваров.СсылкаДокумента = &Документ»;

    Запрос.УстановитьПараметр(«Документ», ДокументСсылка);

    Результат = Запрос.Выполнить();

    Если Результат.Пустой() Тогда
    КоличествоИзРегистра = 0;
    Иначе
    Выборка = Результат.Выбрать();
    Если Выборка.Следующий() Тогда
    КоличествоИзРегистра = Выборка.СуммаКоличество;
    КонецЕсли;
    КонецЕсли;

    // Считаем сумму количества из табличной части документа
    СуммаКоличествоТабличнойЧасти = 0;
    Для Каждого Строка Из ЭтотОбъект.Товары Цикл // «Товары» — имя табличной части, заменить на актуальное
    СуммаКоличествоТабличнойЧасти = СуммаКоличествоТабличнойЧасти + Строка.Количество;
    КонецЦикла;

    // Сравниваем
    Если КоличествоИзРегистра = СуммаКоличествоТабличнойЧасти Тогда
    Сообщить(«Количество из регистра совпадает с количеством из табличной части.»);
    Иначе
    Сообщить(«Внимание! Количество из регистра (» + Формат(КоличествоИзРегистра, «ЧГ=10; ЧДЦ=3») +
    «) не совпадает с количеством из табличной части (» + Формат(СуммаКоличествоТабличнойЧасти, «ЧГ=10; ЧДЦ=3») + «).»);
    КонецЕсли;

    КонецПроцедуры

    // Вызов процедуры можно сделать, например, в обработчике ПриЗаписи или по кнопке формы

    //———————————————
    // Важно:
    // — Замените «РегистрСведений.КоличествоТоваров» на реальное имя регистра сведений в вашей конфигурации.
    // — Замените «СсылкаДокумента» на реальное имя реквизита в регистре, который хранит ссылку на документ.
    // — Замените «Товары» на имя вашей табличной части.
    // — Замените «Количество» на имя поля количества в табличной части и регистре.
    // — Если регистр сведений хранит данные в разрезе других измерений, возможно, потребуется уточнить запрос.

    Рекомендую посмотреть здесь: https://helpf.pro/faq/view/1284.html

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