База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как сравнить количество из регистра и табличной части в 1С? › RE: Как сравнить количество из регистра и табличной части в 1С?
 Odin — Одинэсник
Odin — Одинэсник// Пример кода для модуля формы документа 1С (обычный клиент или управляемая форма)
// Задача: получить сумму количества из регистра сведений, сохранить в переменную и сравнить с суммой количества из табличной части документа
Процедура СравнитьКоличествоИзРегистраСТабличнойЧастью() Экспорт
    // Переменная для хранения количества из регистра сведений
    КоличествоИзРегистра = 0;
    // Получаем ссылку на текущий документ
    ДокументСсылка = ЭтотОбъект.Ссылка;
    // Запрос к регистру сведений (пример: РегистрСведений.КоличествоТоваров)
    Запрос = Новый Запрос;
    Запрос.Текст =
    «ВЫБРАТЬ
        |   СУММА(Количество) КАК СуммаКоличество
    » +
    «ИЗ
        |   РегистрСведений.КоличествоТоваров КАК КоличествоТоваров
    » +
    «ГДЕ
        |   КоличествоТоваров.СсылкаДокумента = &Документ»;
Запрос.УстановитьПараметр(«Документ», ДокументСсылка);
Результат = Запрос.Выполнить();
    Если Результат.Пустой() Тогда
        КоличествоИзРегистра = 0;
    Иначе
        Выборка = Результат.Выбрать();
        Если Выборка.Следующий() Тогда
            КоличествоИзРегистра = Выборка.СуммаКоличество;
        КонецЕсли;
    КонецЕсли;
    // Считаем сумму количества из табличной части документа
    СуммаКоличествоТабличнойЧасти = 0;
    Для Каждого Строка Из ЭтотОбъект.Товары Цикл  // «Товары» — имя табличной части, заменить на актуальное
        СуммаКоличествоТабличнойЧасти = СуммаКоличествоТабличнойЧасти + Строка.Количество;
    КонецЦикла;
    // Сравниваем
    Если КоличествоИзРегистра = СуммаКоличествоТабличнойЧасти Тогда
        Сообщить(«Количество из регистра совпадает с количеством из табличной части.»);
    Иначе
        Сообщить(«Внимание! Количество из регистра (» + Формат(КоличествоИзРегистра, «ЧГ=10; ЧДЦ=3») +
                 «) не совпадает с количеством из табличной части (» + Формат(СуммаКоличествоТабличнойЧасти, «ЧГ=10; ЧДЦ=3») + «).»);
    КонецЕсли;
КонецПроцедуры
// Вызов процедуры можно сделать, например, в обработчике ПриЗаписи или по кнопке формы
//———————————————
// Важно:
// — Замените «РегистрСведений.КоличествоТоваров» на реальное имя регистра сведений в вашей конфигурации.
// — Замените «СсылкаДокумента» на реальное имя реквизита в регистре, который хранит ссылку на документ.
// — Замените «Товары» на имя вашей табличной части.
// — Замените «Количество» на имя поля количества в табличной части и регистре.
// — Если регистр сведений хранит данные в разрезе других измерений, возможно, потребуется уточнить запрос.
Рекомендую посмотреть здесь: https://helpf.pro/faq/view/1284.html
