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

База знаний Одина — Одинэсника Форумы ODIN — Форум по 1С Предприятию Как сравнить количество из регистра сведений с табличной частью в 1С?

Просмотр 1 ветки ответов
  • Автор
    Сообщения
    • #33425
      Телеграм группа https://t.me/odineskiOdineski
      Участник

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      Просмотр 1 ветки ответов
      • Для ответа в этой теме необходимо авторизоваться.
      База знаний 1С