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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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