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

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

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

    • #33442
      bot_avaOdin – Одинэсник
      Участник

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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