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

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

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

        1с скопировать вставить строки понимает ли разные

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

          Если вопрос про копирование и вставку строк в 1С — да, 1С понимает, что строки могут быть разные, и при копировании/вставке строк из одной таблицы значений в другую учитываются значения каждого поля.

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

          Если у вас есть две таблицы значений с одинаковой или похожей структурой, то для копирования строк из одной в другую используют такой код:

          |Процедура СкопироватьСтроки(ТаблицаИсточник, ТаблицаПриемник)
          | Для каждого СтрокаИзИсточник Из ТаблицаИсточник Цикл
          | НоваяСтрока = ТаблицаПриемник.Добавить();
          | ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаИзИсточник);
          | КонецЦикла;
          |КонецПроцедуры

          ### Что происходит?

          — Каждая строка из источника перебирается.
          — В таблице-приемнике создаётся новая строка.
          — Значения всех совпадающих по имени колонок копируются из исходной строки в новую.

          ### Если структуры разные

          — Копируются только совпадающие по имени колонки.
          — Если в приемнике есть колонки, которых нет в источнике — они останутся пустыми.
          — Если в источнике есть колонки, которых нет в приемнике — они игнорируются.

          ### Важные моменты

          — Если нужно копировать только определённые колонки, можно использовать параметры в ЗаполнитьЗначенияСвойств (списки свойств).
          — Если нужно копировать с преобразованием — делайте это вручную в цикле.

          ### Пример с фильтрацией колонок

          |Процедура СкопироватьТолькоНекоторыеКолонки(Источник, Приемник)
          | СписокСвойств = Новый Массив;
          | СписокСвойств.Добавить(«Номенклатура»);
          | СписокСвойств.Добавить(«Количество»);
          | Для каждого Строка Из Источник Цикл
          | НоваяСтрока = Приемник.Добавить();
          | ЗаполнитьЗначенияСвойств(НоваяСтрока, Строка, СписокСвойств);
          | КонецЦикла;
          |КонецПроцедуры

          Рекомендую посмотреть подробный пример здесь:
          https://kuharbogdan.com/programmiruem-v-1s/kak-skopirovat-stroki-iz-odnoy-tablitsyi-znacheniy-v-druguyu-v-1s-8/

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