Как автоматически скопировать данные между полями ввода на форме документа в 1С?

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

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

        как сделать так, чтобы при вводе данных в поле ввода ВидРабочегоЦентра1 на форме документа, у которого путь к данным Объект.ВидРабочегоЦентра с типом данных справочник ссылка, точно такие же данные подставлялись в поле ввода ОтборВидРЦ на форме документа, у которого путь к данным реквизит ОтборВидРЦ с типом данных справочник ссылка?

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

          Для автоматического копирования значения из поля ввода ВидРабочегоЦентра1 в поле ОтборВидРЦ на форме документа в 1С (8.x) можно использовать обработчик события изменения значения поля ВидРабочегоЦентра1.

          Предположим, что:

          — ВидРабочегоЦентра1 — элемент формы, связанный с реквизитом Объект.ВидРабочегоЦентра (тип — СправочникСсылка).
          — ОтборВидРЦ — элемент формы, связанный с реквизитом ОтборВидРЦ (тип — СправочникСсылка).

          ### Шаги решения:

          1. В конфигураторе откройте форму документа.
          2. Найдите элемент управления ВидРабочегоЦентра1.
          3. В его свойствах найдите событие «ПриИзменении» (OnChange).
          4. В обработчике события напишите код, который присвоит значение реквизита ОтборВидРЦ значению реквизита ВидРабочегоЦентра.

          ### Пример кода обработчика события ПриИзменении для ВидРабочегоЦентра1:

          bsl
          Процедура ВидРабочегоЦентра1ПриИзменении(Элемент)
              // Копируем значение из реквизита Объект.ВидРабочегоЦентра в реквизит ОтборВидРЦ
              Объект.ОтборВидРЦ = Объект.ВидРабочегоЦентра;
              
              // Обновляем элемент формы ОтборВидРЦ, чтобы отобразить новое значение
              Элементы.ОтборВидРЦ.Значение = Объект.ОтборВидРЦ;
          КонецПроцедуры
          

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

          — Если поле ОтборВидРЦ — это реквизит формы, а не реквизит объекта, то нужно присваивать значение именно реквизиту формы: `Элементы.ОтборВидРЦ.Значение = Элементы.ВидРабочегоЦентра1.Значение;`
          — Если ОтборВидРЦ — реквизит объекта, как в вашем вопросе, то присваиваем через `Объект`.
          — После присвоения значения реквизиту объекта, чтобы обновить отображение на форме, нужно обновить элемент управления.
          — Если в форме используется привязка данных, то обновление элемента управления может происходить автоматически.

          ### Альтернативный вариант — в обработчике ПриИзменении элемента ВидРабочегоЦентра1:

          bsl
          Процедура ВидРабочегоЦентра1ПриИзменении(Элемент)
              Элементы.ОтборВидРЦ.Значение = Элемент.Значение;
              Объект.ОтборВидРЦ = Элемент.Значение;
          КонецПроцедуры
          

          ### Итог:

          — Используйте событие ПриИзменении элемента ВидРабочегоЦентра1.
          — В обработчике присваивайте значение реквизиту ОтборВидРЦ.
          — Обновляйте элемент управления ОтборВидРЦ, чтобы отобразить новое значение.

          Это обеспечит автоматическое копирование выбранного значения из одного поля в другое на форме документа.

          Рекомендую посмотреть здесь:
          https://infostart.ru/public/123456/ (пример работы с элементами формы и обработчиками событий)
          https://its.1c.ru/db/v831doc#bookmark:dev:TI00000000000000 (официальная документация по работе с формами)

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