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

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

Просмотр 1 ветки ответов
  • Автор
    Сообщения
    • #33469
      Фото аватараOdineski
      Участник

        Имеются таблицы значений Таблица 1 и Таблица 2 с колонками Организация, Подразделение, Количество. Необходимо программно получить Итоговая таблица, в которой будет разность двух исходных таблиц в разрезе Организаций и Подразделений. В итоге должна получиться таблица, содержащая уникальные данные для Таблицы 1 или Таблицы 2, в которой нет общих для обеих исходных таблиц данных в разрезе Организаций и Подразделений.

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

          Функционально задача сводится к вычислению разности двух таблиц значений по ключу (Организация, Подразделение), при этом учитывается Количество, и в итоговой таблице должны остаться только те строки, которые есть в одной из таблиц, но отсутствуют в другой (сравнение по Организация + Подразделение).

          Для решения можно использовать алгоритм с объединением таблиц и сверткой с подсчетом разницы, как в классическом способе сравнения таблиц значений.

          Пример кода на 1С:

          Объяснение:

          — В колонке __Сверка__ для строк из первой таблицы ставим -1, для второй +1.
          — Объединяем обе таблицы.
          — Свертываем по ключам (Организация, Подразделение), суммируя Количество и колонку сверки.
          — Если сумма в колонке сверки равна 0 — значит строки с таким ключом есть в обеих таблицах, их исключаем.
          — В итоговую таблицу попадают только уникальные строки с разницей по ключам.

          Таким образом, итоговая таблица содержит только те Организации и Подразделения, которые есть либо в первой, либо во второй таблице, но не в обеих одновременно, с суммированным количеством.

          Рекомендую посмотреть здесь: https://infostart.ru/1c/articles/375490/

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